| < draft-ietf-anima-grasp-06.txt | draft-ietf-anima-grasp-07B.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: December 29, 2016 Univ. of Auckland | Expires: March 3, 2017 Univ. of Auckland | |||
| B. Liu, Ed. | B. Liu, Ed. | |||
| Huawei Technologies Co., Ltd | Huawei Technologies Co., Ltd | |||
| June 27, 2016 | August 30, 2016 | |||
| A Generic Autonomic Signaling Protocol (GRASP) | A Generic Autonomic Signaling Protocol (GRASP) | |||
| draft-ietf-anima-grasp-06 | draft-ietf-anima-grasp-07 | |||
| 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 December 29, 2016. | This Internet-Draft will expire on March 3, 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 25 | skipping to change at page 2, line 25 | |||
| 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 Design Choices . . . . . . . . . . . . . . . . 11 | |||
| 3.3. GRASP Protocol Basic Properties and Mechanisms . . . . . 15 | 3.3. GRASP Protocol Basic Properties and Mechanisms . . . . . 15 | |||
| 3.3.1. Required External Security Mechanism . . . . . . . . 15 | 3.3.1. Required External Security Mechanism . . . . . . . . 15 | |||
| 3.3.2. Transport Layer Usage . . . . . . . . . . . . . . . . 16 | 3.3.2. Limited Security Instances . . . . . . . . . . . . . 15 | |||
| 3.3.3. Discovery Mechanism and Procedures . . . . . . . . . 16 | 3.3.3. Transport Layer Usage . . . . . . . . . . . . . . . . 17 | |||
| 3.3.4. Negotiation Procedures . . . . . . . . . . . . . . . 20 | 3.3.4. Discovery Mechanism and Procedures . . . . . . . . . 18 | |||
| 3.3.5. Synchronization and Flooding Procedure . . . . . . . 21 | 3.3.5. Negotiation Procedures . . . . . . . . . . . . . . . 21 | |||
| 3.4. High Level Deployment Model . . . . . . . . . . . . . . . 23 | 3.3.6. Synchronization and Flooding Procedure . . . . . . . 22 | |||
| 3.5. GRASP Constants . . . . . . . . . . . . . . . . . . . . . 24 | 3.4. High Level Deployment Model . . . . . . . . . . . . . . . 24 | |||
| 3.6. Session Identifier (Session ID) . . . . . . . . . . . . . 24 | 3.5. GRASP Constants . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 3.7. GRASP Messages . . . . . . . . . . . . . . . . . . . . . 25 | 3.6. Session Identifier (Session ID) . . . . . . . . . . . . . 26 | |||
| 3.7.1. Message Overview . . . . . . . . . . . . . . . . . . 25 | 3.7. GRASP Messages . . . . . . . . . . . . . . . . . . . . . 26 | |||
| 3.7.2. GRASP Message Format . . . . . . . . . . . . . . . . 25 | 3.7.1. Message Overview . . . . . . . . . . . . . . . . . . 26 | |||
| 3.7.3. Discovery Message . . . . . . . . . . . . . . . . . . 26 | 3.7.2. GRASP Message Format . . . . . . . . . . . . . . . . 27 | |||
| 3.7.4. Discovery Response Message . . . . . . . . . . . . . 27 | 3.7.3. Discovery Message . . . . . . . . . . . . . . . . . . 27 | |||
| 3.7.5. Request Messages . . . . . . . . . . . . . . . . . . 27 | 3.7.4. Discovery Response Message . . . . . . . . . . . . . 28 | |||
| 3.7.6. Negotiation Message . . . . . . . . . . . . . . . . . 28 | 3.7.5. Request Messages . . . . . . . . . . . . . . . . . . 29 | |||
| 3.7.7. Negotiation End Message . . . . . . . . . . . . . . . 28 | 3.7.6. Negotiation Message . . . . . . . . . . . . . . . . . 30 | |||
| 3.7.8. Confirm Waiting Message . . . . . . . . . . . . . 29 | 3.7.7. Negotiation End Message . . . . . . . . . . . . . . . 30 | |||
| 3.7.9. Synchronization Message . . . . . . . . . . . . . . . 29 | 3.7.8. Confirm Waiting Message . . . . . . . . . . . . . 31 | |||
| 3.7.10. Flood Synchronization Message . . . . . . . . . . . . 29 | 3.7.9. Synchronization Message . . . . . . . . . . . . . . . 31 | |||
| 3.7.11. No Operation Message . . . . . . . . . . . . . . . . 30 | 3.7.10. Flood Synchronization Message . . . . . . . . . . . . 31 | |||
| 3.8. GRASP Options . . . . . . . . . . . . . . . . . . . . . . 30 | 3.7.11. No Operation Message . . . . . . . . . . . . . . . . 32 | |||
| 3.8.1. Format of GRASP Options . . . . . . . . . . . . . . . 30 | 3.8. GRASP Options . . . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.8.2. Divert Option . . . . . . . . . . . . . . . . . . . . 30 | 3.8.1. Format of GRASP Options . . . . . . . . . . . . . . . 33 | |||
| 3.8.3. Accept Option . . . . . . . . . . . . . . . . . . . . 31 | 3.8.2. Divert Option . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.8.4. Decline Option . . . . . . . . . . . . . . . . . . . 31 | 3.8.3. Accept Option . . . . . . . . . . . . . . . . . . . . 33 | |||
| 3.8.5. Locator Options . . . . . . . . . . . . . . . . . . . 31 | 3.8.4. Decline Option . . . . . . . . . . . . . . . . . . . 34 | |||
| 3.9. Objective Options . . . . . . . . . . . . . . . . . . . . 33 | 3.8.5. Locator Options . . . . . . . . . . . . . . . . . . . 34 | |||
| 3.9.1. Format of Objective Options . . . . . . . . . . . . . 33 | 3.9. Objective Options . . . . . . . . . . . . . . . . . . . . 36 | |||
| 3.9.2. Objective flags . . . . . . . . . . . . . . . . . . . 34 | 3.9.1. Format of Objective Options . . . . . . . . . . . . . 36 | |||
| 3.9.3. General Considerations for Objective Options . . . . 35 | 3.9.2. Objective flags . . . . . . . . . . . . . . . . . . . 37 | |||
| 3.9.4. Organizing of Objective Options . . . . . . . . . . . 35 | 3.9.3. General Considerations for Objective Options . . . . 37 | |||
| 3.9.5. Experimental and Example Objective Options . . . . . 37 | 3.9.4. Organizing of Objective Options . . . . . . . . . . . 38 | |||
| 4. Implementation Status [RFC Editor: please remove] . . . . . . 37 | 3.9.5. Experimental and Example Objective Options . . . . . 39 | |||
| 4.1. BUPT C++ Implementation . . . . . . . . . . . . . . . . . 37 | 4. Implementation Status [RFC Editor: please remove] . . . . . . 40 | |||
| 4.2. Python Implementation . . . . . . . . . . . . . . . . . . 38 | 4.1. BUPT C++ Implementation . . . . . . . . . . . . . . . . . 40 | |||
| 5. Security Considerations . . . . . . . . . . . . . . . . . . . 38 | 4.2. Python Implementation . . . . . . . . . . . . . . . . . . 40 | |||
| 6. CDDL Specification of GRASP . . . . . . . . . . . . . . . . . 40 | 5. Security Considerations . . . . . . . . . . . . . . . . . . . 41 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 | 6. CDDL Specification of GRASP . . . . . . . . . . . . . . . . . 43 | |||
| 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 | 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 44 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 45 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 47 | |||
| Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 48 | 9.2. Informative References . . . . . . . . . . . . . . . . . 48 | |||
| Appendix B. Closed Issues [RFC Editor: Please remove] . . . . . 49 | Appendix A. Open Issues . . . . . . . . . . . . . . . . . . . . 51 | |||
| Appendix C. Change log [RFC Editor: Please remove] . . . . . . . 55 | Appendix B. Closed Issues [RFC Editor: Please remove] . . . . . 52 | |||
| Appendix D. Capability Analysis of Current Protocols . . . . . . 59 | Appendix C. Change log [RFC Editor: Please remove] . . . . . . . 59 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 | Appendix D. Capability Analysis of Current Protocols . . . . . . 63 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 66 | ||||
| 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 12, line 17 | skipping to change at page 12, line 17 | |||
| 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 | |||
| 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 instance of GRASP will exist | o It is normally expected that a single main instance of GRASP will | |||
| in an autonomic node, and that the protocol engine and each ASA | exist in an autonomic node, and that the protocol engine and each | |||
| will run as independent asynchronous processes. | ASA will run as independent asynchronous processes. However, | |||
| separate GRASP instances may exist for security reasons | ||||
| (Section 3.3.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 45 | skipping to change at page 12, line 47 | |||
| 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.3. For some objectives, especially those concerned | Section 3.3.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. | |||
| skipping to change at page 15, line 28 | skipping to change at page 15, line 32 | |||
| 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 | |||
| Key Infrastructure (PKI) [RFC5280] managed within the autonomic | Key Infrastructure (PKI) [RFC5280] managed within the autonomic | |||
| network itself. The details of such a PKI and how its boundary is | network itself. The details of such a PKI and how its boundary is | |||
| established are out of scope for this document. DTLS [RFC6347] MAY | established are out of scope for this document. DTLS [RFC6347] MAY | |||
| be used but since GRASP operations usually involve several messages | be used but since GRASP operations usually involve several messages | |||
| this is not expected to be advantageous. | this is not expected to be advantageous. | |||
| 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 any GRASP functions except discovery if there is | refuse to execute GRASP synchronization and negotiation functions if | |||
| neither an operational ACP nor an operational TLS environment. | there is neither an operational ACP nor an operational TLS or DTLS | |||
| environment. | ||||
| As mentioned in Section 3.2, limited GRASP operations might be | Link-local multicast is used for discovery messages. Responses to | |||
| discovery messages MUST be secured, with one exception mentioned in | ||||
| the next section. | ||||
| 3.3.2. Limited Security Instances | ||||
| This section describes three cases where additional instances of | ||||
| GRASP are appropriate. | ||||
| 1) As mentioned in Section 3.2, 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 authenticated and SHOULD be | agreement. Such operations MUST be confined to a separate instance | |||
| encrypted. TLS is RECOMMENDED for this purpose. | of GRASP with its own copy of all GRASP data structures. Messages | |||
| MUST be authenticated and SHOULD be encrypted. TLS is RECOMMENDED | ||||
| for this purpose. | ||||
| Link-local multicast is used for discovery messages. Responses to | 2) During initialisation, before a node has joined the applicable | |||
| discovery messages MUST be secured, with one exception. | trust infrastructure, [I-D.ietf-anima-bootstrapping-keyinfra], it is | |||
| impossible to secure messages. Thus, the security bootstrap process | ||||
| needs to use insecure GRASP discovery, response and flood messages. | ||||
| Such usage MUST be limited to link-local operations and MUST be | ||||
| confined to a separate insecure instance of GRASP with its own copy | ||||
| of all GRASP data structures. This instance is nicknamed DULL - | ||||
| Discovery Unsolicited Link Local. | ||||
| The exception is that during initialisation, before a node has joined | The detailed rules for the DULL instance of GRASP are as follows: | |||
| the applicable trust infrastructure, e.g., | ||||
| [I-D.ietf-anima-bootstrapping-keyinfra], or before the ACP is fully | ||||
| established, it might be impossible to secure messages. Indeed, both | ||||
| the security bootstrap process and the ACP creation process might use | ||||
| insecure GRASP discovery and response messages. Such usage MUST be | ||||
| limited to the strictly necessary minimum. A full analysis of the | ||||
| initialisation process is out of scope for the present document. | ||||
| 3.3.2. Transport Layer Usage | o An initiator MUST only send Discovery or Flood Synchronization | |||
| link-local multicast messages with a loop count of 1. A responder | ||||
| MAY send a Discovery Response message. Other GRASP message types | ||||
| MUST NOT be sent. | ||||
| o A responder MUST silently discard any message whose loop count is | ||||
| not 1. | ||||
| o A responder MUST silently discard any message referring to a GRASP | ||||
| Objective that is not directly part of the bootstrap creation | ||||
| process. | ||||
| o A responder MUST NOT relay any multicast messages. | ||||
| o A Discovery Response MUST indicate a link-local address. | ||||
| o A Discovery Response MUST NOT include a Divert option. | ||||
| o A node MUST silently discard any message whose source address is | ||||
| not link-local. | ||||
| 3) During ACP formation [I-D.ietf-anima-autonomic-control-plane], a | ||||
| separate instance of GRASP is used, with unicast messages secured by | ||||
| TLS, and with its own copy of all GRASP data structures. This | ||||
| instance is nicknamed SONN - Secure Only Neighbor Negotiation. | ||||
| The detailed rules for the SONN instance of GRASP are as follows: | ||||
| o Any type of GRASP message MAY be sent. | ||||
| o An initiator MUST send any Discovery or Flood Synchronization | ||||
| link-local multicast messages with a loop count of 1. | ||||
| o A responder MUST silently discard any Discovery or Flood | ||||
| Synchronization message whose loop count is not 1. | ||||
| o A responder MUST silently discard any message referring to a GRASP | ||||
| Objective that is not directly part of the ACP creation process. | ||||
| o A responder MUST NOT relay any multicast messages. | ||||
| o A Discovery Response MUST indicate a link-local address. | ||||
| o A Discovery Response MUST NOT include a Divert option. | ||||
| o A node MUST silently discard any message whose source address is | ||||
| not link-local. | ||||
| 3.3.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 | |||
| itself does not provide for error detection or retransmission. Use | itself does not provide for error detection or retransmission. Use | |||
| of an unreliable transport protocol is therefore NOT RECOMMENDED. | of an unreliable transport protocol is therefore NOT RECOMMENDED. | |||
| When running within a secure ACP on reliable infrastructure, UDP MAY | Nevertheless, when running within a secure ACP on reliable | |||
| be used for unicast messages not exceeding the minimum IPv6 path MTU; | infrastructure, UDP MAY be used for unicast messages not exceeding | |||
| however, TCP MUST be used for longer messages. In other words, IPv6 | the minimum IPv6 path MTU; however, TCP MUST be used for longer | |||
| fragmentation is avoided. If a node receives a UDP message but the | messages. In other words, IPv6 fragmentation is avoided. If a node | |||
| reply is too long, it MUST open a TCP connection to the peer for the | receives a UDP message but the reply is too long, it MUST open a TCP | |||
| reply. Note that when the network is under heavy load or in a fault | connection to the peer for the reply. Note that when the network is | |||
| condition, UDP might become unreliable. Since this is when autonomic | under heavy load or in a fault condition, UDP might become | |||
| functions are most necessary, automatic fallback to TCP MUST be | unreliable. Since this is when autonomic functions are most | |||
| implemented. The simplest implementation is therefore to use only | necessary, automatic fallback to TCP MUST be implemented. The | |||
| TCP. | simplest implementation is therefore to use only TCP. In particular, | |||
| to guarantee interoperability during bootstrap and startup, using TCP | ||||
| for discovery responses is strongly advised. | ||||
| When running without an ACP, TLS MUST be supported and used by | When running without an ACP, TLS MUST be supported and used by | |||
| default, except for link-local multicast messages. DTLS MAY be | default, except for link-local multicast messages. DTLS MAY be | |||
| supported as an alternative but the details are out of scope for this | supported as an alternative but the details are out of scope for this | |||
| document. | document. Transport protocols other than TCP and UDP are also out of | |||
| scope for this document. | ||||
| For link-local multicast, the GRASP protocol listens to the GRASP | For link-local multicast, the GRASP protocol listens to the well- | |||
| Listen Port (Section 3.5). This port is also used to listen for | known GRASP Listen Port (Section 3.5). For unicast transport | |||
| unicast discovery responses. For unicast transport sessions used for | sessions used for discovery responses, synchronization and | |||
| synchronization and negotiation, the ASA concerned listens on its own | negotiation, the ASA concerned normally listens on its own | |||
| dynamically assigned port, which is communicated to its peers during | dynamically assigned ports, which are communicated to its peers | |||
| discovery. | during discovery. However, a minimal implementation MAY use the | |||
| GRASP Listen Port for this purpose. | ||||
| 3.3.3. Discovery Mechanism and Procedures | 3.3.4. Discovery Mechanism and Procedures | |||
| o Separated discovery and negotiation mechanisms | o Separated discovery and negotiation mechanisms | |||
| Although discovery and negotiation or synchronization are | Although discovery and negotiation or synchronization are | |||
| defined together in the GRASP, they are separated mechanisms. | defined together in the GRASP, they are separated mechanisms. | |||
| The discovery process could run independently from the | The discovery process could run independently from the | |||
| negotiation or synchronization process. Upon receiving a | negotiation or synchronization process. Upon receiving a | |||
| Discovery (Section 3.7.3) message, the recipient node should | Discovery (Section 3.7.3) message, the recipient node should | |||
| return a response message in which it either indicates itself | return a response message in which it either indicates itself | |||
| as a discovery responder or diverts the initiator towards | as a discovery responder or diverts the initiator towards | |||
| skipping to change at page 18, line 25 | skipping to change at page 19, line 38 | |||
| After a GRASP device successfully discovers a locator for a | After a GRASP device successfully discovers a locator for a | |||
| Discovery Responder supporting a specific objective, it MUST | Discovery Responder supporting a specific objective, it MUST | |||
| cache this information, including the interface identifier via | cache this information, including the interface identifier via | |||
| which it was discovered. This cache record MAY be used for | which it was discovered. This cache record MAY be used for | |||
| future negotiation or synchronization, and the locator SHOULD | future negotiation or synchronization, and the locator SHOULD | |||
| be passed on when appropriate as a Divert option to another | be passed on when appropriate as a Divert option to another | |||
| Discovery Initiator. | Discovery Initiator. | |||
| The cache mechanism MUST include a lifetime for each entry. | The cache mechanism MUST include a lifetime for each entry. | |||
| The lifetime is an implementation choice that MAY be modified | The lifetime is derived from a time-to-live (ttl) parameter in | |||
| by network Intent. In some environments, unplanned address | each Discovery Response message. Cached entries MUST be | |||
| renumbering might occur. In such cases, the cache lifetime | ignored or deleted after their lifetime expires. In some | |||
| SHOULD be short compared to the typical address lifetime and a | environments, unplanned address renumbering might occur. In | |||
| mechanism to flush the discovery cache SHOULD be implemented. | such cases, the lifetime SHOULD be short compared to the | |||
| The discovery mechanism needs to track the node's current | typical address lifetime and a mechanism to flush the discovery | |||
| address to ensure that Discovery Responses always indicate the | cache SHOULD be implemented. The discovery mechanism needs to | |||
| correct address. | 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 | If multiple Discovery Responders are found for the same | |||
| objective, they SHOULD all be cached, unless this creates a | objective, they SHOULD all be cached, unless this creates a | |||
| resource shortage. The method of choosing between multiple | resource shortage. The method of choosing between multiple | |||
| responders is an implementation choice. This choice MUST be | responders is an implementation choice. This choice MUST be | |||
| available to each ASA but the GRASP implementation SHOULD | available to each ASA but the GRASP implementation SHOULD | |||
| provide a default choice. | provide a default choice. | |||
| Because Discovery Responders will be cached in a finite cache, | Because Discovery Responders will be cached in a finite cache, | |||
| they might be deleted at any time. In this case, discovery | they might be deleted at any time. In this case, discovery | |||
| skipping to change at page 19, line 49 | skipping to change at page 21, line 16 | |||
| receiving the relayed discovery supports the discovery objective, | receiving the relayed discovery supports the discovery objective, | |||
| it will respond to the relayed discovery. If it has a cached | it will respond to the relayed discovery. If it has a cached | |||
| response, it will respond with that. If not, it will repeat the | response, it will respond with that. If not, it will repeat the | |||
| discovery process, which thereby becomes recursive. The loop | discovery process, which thereby becomes recursive. The loop | |||
| count and timeout will ensure that the process ends. | count and timeout will ensure that the process ends. | |||
| o Rapid Mode (Discovery/Negotiation binding) | o Rapid Mode (Discovery/Negotiation binding) | |||
| A Discovery message MAY include a Negotiation Objective option. | A Discovery message MAY include a Negotiation Objective option. | |||
| This allows a rapid mode of negotiation described in | This allows a rapid mode of negotiation described in | |||
| Section 3.3.4. A similar mechanism is defined for | Section 3.3.5. A similar mechanism is defined for | |||
| synchronization in Section 3.3.5. | synchronization in Section 3.3.6. | |||
| 3.3.4. Negotiation Procedures | 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.3.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 21, line 5 | skipping to change at page 22, 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.4.1. Rapid Mode (Discovery/Negotiation Linkage) | 3.3.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 | ||||
| that does not support rapid mode, before such a Negotiation 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 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.5. Synchronization and Flooding Procedure | 3.3.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.5.1. Flooding | 3.3.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 22, line 31 | skipping to change at page 24, line 5 | |||
| the result is zero. Also, it MUST limit the total rate at which it | the result is zero. Also, it MUST limit the total rate at which it | |||
| relays Flood Synchronization messages to a reasonable value, in order | relays Flood Synchronization messages to a reasonable value, in order | |||
| to mitigate possible denial of service attacks. It MUST cache the | to mitigate possible denial of service attacks. It MUST cache the | |||
| Session ID value and initiator address of each relayed Flood | Session ID value and initiator address of each relayed Flood | |||
| Synchronization message for a finite time not less than twice | Synchronization message for a finite time not less than twice | |||
| GRASP_DEF_TIMEOUT milliseconds. To prevent loops, it MUST NOT relay | GRASP_DEF_TIMEOUT milliseconds. To prevent loops, it MUST NOT relay | |||
| a Flood Synchronization message which carries a given cached Session | a Flood Synchronization message which carries a given cached Session | |||
| ID and initiator address more than once. These precautions avoid | ID and initiator address more than once. These precautions avoid | |||
| synchronization loops and mitigate potential overload. | synchronization loops and mitigate potential overload. | |||
| Note that this mechanism is unreliable in the case of sleeping nodes. | Note that this mechanism is unreliable in the case of sleeping nodes, | |||
| Sleeping nodes that require an objective subject to flooding SHOULD | or new nodes that join the network, or nodes that rejoin the network | |||
| periodically request unicast synchronization for that objective. | after a fault. An ASA that initiates a flood SHOULD repeat the flood | |||
| at a suitable frequency and SHOULD also act as a synchronization | ||||
| responder for the objective(s) concerned. Thus nodes that require an | ||||
| objective subject to flooding can either wait for the next flood or | ||||
| 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.3.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.5.2. Rapid Mode (Discovery/Synchronization Linkage) | 3.3.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. | |||
| It is possible that a Discovery Response will arrive from a responder | ||||
| that does not support rapid mode, before such a Synchronization | ||||
| 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 | 3.4. High Level Deployment Model | |||
| It is expected that a GRASP implementation will reside in an | It is expected that a GRASP implementation will reside in an | |||
| skipping to change at page 24, line 20 | skipping to change at page 25, line 49 | |||
| 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 UDP and TCP port that every GRASP-enabled network device always | A well-known UDP user port that every GRASP-enabled network device | |||
| listens to. | MUST always listen to for link-local multicasts. Additionally, | |||
| this user port MAY be used to listen for TCP or UDP unicast | ||||
| messages in a simple implementation of GRASP (Section 3.3.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 27, line 18 | skipping to change at page 29, line 5 | |||
| a Synchronization message for rapid processing, if it could act as | a Synchronization message for rapid processing, if it could act as | |||
| the corresponding synchronization counterpart. Its loop count | the corresponding synchronization counterpart. Its loop count | |||
| MUST be set to a suitable value to prevent discovery loops | MUST be set to a suitable value to prevent discovery loops | |||
| (default value is GRASP_DEF_LOOPCT). | (default value is GRASP_DEF_LOOPCT). | |||
| 3.7.4. Discovery Response Message | 3.7.4. Discovery Response Message | |||
| In fragmentary CDDL, a Discovery Response message follows the | In fragmentary CDDL, a Discovery Response message follows the | |||
| pattern: | pattern: | |||
| response-message = [M_RESPONSE, session-id, initiator, | response-message = [M_RESPONSE, session-id, initiator, ttl, | |||
| (+locator-option // divert-option), ?objective)] | (+locator-option // divert-option), ?objective)] | |||
| ttl = 0..4294967295 ; in milliseconds | ||||
| A node which receives a Discovery message SHOULD send a Discovery | A node which receives a Discovery message SHOULD send a Discovery | |||
| Response message if and only if it can respond to the discovery. It | Response message if and only if it can respond to the discovery. | |||
| MUST contain the same Session ID and initiator as the Discovery | ||||
| message. It MAY include a copy of the discovery objective from the | It MUST contain the same Session ID and initiator as the Discovery | |||
| Discovery message. It is sent to the sender of the Discovery message | message. | |||
| via TCP at the port GRASP_LISTEN_PORT. | ||||
| It MUST contain a time-to-live (ttl) for the validity of the | ||||
| response, given as a positive integer value in milliseconds. Zero | ||||
| is treated as the default value GRASP_DEF_TIMEOUT (Section 3.5). | ||||
| It MAY include a copy of the discovery objective from the | ||||
| Discovery message. | ||||
| It is sent to the sender of the Discovery message via TCP at the port | ||||
| used to send the Discovery message. | ||||
| 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 | ||||
| Section 3.3.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 | |||
| skipping to change at page 29, line 47 | skipping to change at page 31, line 47 | |||
| message in Rapid Mode, sends back a unicast Synchronization message | message in Rapid Mode, sends back a unicast Synchronization message | |||
| with the synchronization data, in the form of a GRASP Option for the | with the synchronization data, in the form of a GRASP Option for the | |||
| specific synchronization objective present in the Request | specific synchronization objective present in the Request | |||
| Synchronization. | Synchronization. | |||
| 3.7.10. Flood Synchronization Message | 3.7.10. Flood Synchronization Message | |||
| In fragmentary CDDL, a Flood Synchronization message follows the | In fragmentary CDDL, a Flood Synchronization message follows the | |||
| pattern: | pattern: | |||
| flood-message = [M_FLOOD, session-id, initiator, +objective] | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
| (locator-option / []), +objective] | ||||
| 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.5. The initiator address is provided | with the rules in Section 3.3.6. | |||
| as described for Discovery messages. The synchronization data will | ||||
| be in the form of GRASP Option(s) for specific synchronization | ||||
| objective(s). The loop count(s) MUST be set to a suitable value to | ||||
| prevent flood loops (default value is GRASP_DEF_LOOPCT). | ||||
| A node that receives a Flood Synchronization message SHOULD cache the | The initiator address is provided as described for Discovery | |||
| received objectives for use by local ASAs. | messages. | |||
| The message MUST contain a time-to-live (ttl) for the validity of | ||||
| the response, given as a positive integer value in milliseconds. | ||||
| There is no default; zero indicates an indefinite lifetime. | ||||
| The message MAY contain a locator option indicating the ASA that | ||||
| initiated the flooded data. In its absence, an empty option MUST | ||||
| be included. | ||||
| The synchronization data are in the form of GRASP Option(s) for | ||||
| specific synchronization objective(s). The loop count(s) MUST be | ||||
| set to a suitable value to prevent flood loops (default value is | ||||
| GRASP_DEF_LOOPCT). | ||||
| A node that receives a Flood Synchronization message MUST cache the | ||||
| received objectives for use by local ASAs. Each cached objective | ||||
| MUST be tagged with the locator option sent with it, or with a null | ||||
| tag if an empty locator option was sent. If a subsequent Flood | ||||
| Synchronization message carrying the same objective arrives with the | ||||
| same tag, the corresponding cached copy of the objective MUST be | ||||
| overwritten. If a subsequent Flood Synchronization message carrying | ||||
| the same objective arrives with a different tag, a new cached entry | ||||
| MUST be created. | ||||
| Note: the purpose of this mechanism is to allow the recipient of | ||||
| flooded values to distinguish between different senders of the same | ||||
| objective, and if necessary communicate with them using the locator, | ||||
| protocol and port included in the locator option. Many objectives | ||||
| will not need this mechanism, so they will be flooded with a null | ||||
| locator. | ||||
| Cached entries MUST be ignored or deleted after their lifetime | ||||
| expires. | ||||
| 3.7.11. No Operation Message | 3.7.11. No Operation Message | |||
| In fragmentary CDDL, a No Operation message follows the pattern: | In fragmentary CDDL, a No Operation message follows the pattern: | |||
| noop-message = [M_NOOP] | noop-message = [M_NOOP] | |||
| This message MAY be sent by an implementation that for practical | This message MAY be sent by an implementation that for practical | |||
| reasons needs to activate a socket. It MUST be silently ignored by a | reasons needs to activate a socket. It MUST be silently ignored by a | |||
| recipient. | recipient. | |||
| skipping to change at page 34, line 35 | skipping to change at page 37, line 25 | |||
| 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.3, and for terminating flooding | discovery as described in Section 3.3.4, and for terminating flooding | |||
| as described in Section 3.3.5.1. | as described in Section 3.3.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 38, line 14 | skipping to change at page 41, line 5 | |||
| 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. | Debian. | |||
| o Coverage: Corresponds to draft-ietf-anima-grasp-05. 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 | |||
| * no code for rapid mode | * no code for rapid mode | |||
| * relay code is lazy (no rate control) | * relay code is lazy (no rate control) | |||
| * all unicast transactions use TCP (no unicast UDP) | * all unicast transactions use TCP (no unicast UDP). | |||
| Experimental code for unicast UDP proved to be complex and | ||||
| brittle. | ||||
| * optional Objective option in Response messages not implemented | * optional Objective option in Response messages not implemented | |||
| * workarounds for defects in Python socket module and Windows | * workarounds for defects in Python socket module and Windows | |||
| socket peculiarities | socket peculiarities | |||
| o Licensing: Simplified BSD | o Licensing: Simplified BSD | |||
| o Experience: https://www.cs.auckland.ac.nz/~brian/graspy/graspy.pdf | o Experience: https://www.cs.auckland.ac.nz/~brian/graspy/graspy.pdf | |||
| skipping to change at page 39, line 26 | skipping to change at page 42, line 21 | |||
| mechanism, for example during system bootstrap (Section 3.3.1), | mechanism, for example during system bootstrap (Section 3.3.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. It SHOULD apply obvious precautions such as allowing | support. An implementation might support precautions such as | |||
| only one ASA in a given node to modify a given objective, but | allowing only one ASA in a given node to modify a given objective, | |||
| otherwise authorization is out of scope. | but this may not be appropriate in all cases. For example, it | |||
| might be operationally useful to allow an old and a new version of | ||||
| the same ASA to run simultaneously during an overlap period. | ||||
| These questions are out of scope for the present specification. | ||||
| - 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 | |||
| skipping to change at page 40, line 7 | skipping to change at page 43, line 5 | |||
| 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.3.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.5.1. | messages are suggested in Section 3.3.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. Relevant mitigations are specified in | |||
| Section 3.3.3. Additionally, it is of great importance that | Section 3.3.4. Additionally, it is of great importance that | |||
| firewalls prevent any GRASP messages from entering the domain from | firewalls prevent any GRASP messages from entering the domain from | |||
| an untrusted source. | 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. | will be impossible until enrollment is complete. Further details | |||
| are given in Section 3.3.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.3.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 | |||
| skipping to change at page 41, line 4 | skipping to change at page 43, line 50 | |||
| message-structure = [MESSAGE_TYPE, session-id, ?initiator, | message-structure = [MESSAGE_TYPE, session-id, ?initiator, | |||
| *grasp-option] | *grasp-option] | |||
| MESSAGE_TYPE = 0..255 | MESSAGE_TYPE = 0..255 | |||
| session-id = 0..16777215 ;up to 24 bits | session-id = 0..16777215 ;up to 24 bits | |||
| grasp-option = any | grasp-option = any | |||
| message /= discovery-message | message /= discovery-message | |||
| discovery-message = [M_DISCOVERY, session-id, initiator, objective] | discovery-message = [M_DISCOVERY, session-id, initiator, objective] | |||
| message /= response-message ;response to Discovery | message /= response-message ;response to Discovery | |||
| response-message = [M_RESPONSE, session-id, initiator, | response-message = [M_RESPONSE, session-id, initiator, ttl, | |||
| (+locator-option // divert-option), ?objective] | (+locator-option // divert-option), ?objective] | |||
| message /= synch-message ;response to Synchronization request | message /= synch-message ;response to Synchronization request | |||
| synch-message = [M_SYNCH, session-id, objective] | synch-message = [M_SYNCH, session-id, objective] | |||
| message /= flood-message | message /= flood-message | |||
| flood-message = [M_FLOOD, session-id, initiator, +objective] | flood-message = [M_FLOOD, session-id, initiator, ttl, | |||
| (locator-option / []), +objective] | ||||
| message /= request-negotiation-message | message /= request-negotiation-message | |||
| request-negotiation-message = [M_REQ_NEG, session-id, objective] | request-negotiation-message = [M_REQ_NEG, session-id, objective] | |||
| message /= request-synchronization-message | message /= request-synchronization-message | |||
| request-synchronization-message = [M_REQ_SYN, session-id, objective] | request-synchronization-message = [M_REQ_SYN, session-id, objective] | |||
| message /= negotiation-message | message /= negotiation-message | |||
| negotiation-message = [M_NEGOTIATE, session-id, objective] | negotiation-message = [M_NEGOTIATE, session-id, objective] | |||
| skipping to change at page 41, line 39 | skipping to change at page 44, line 39 | |||
| noop-message = [M_NOOP] | noop-message = [M_NOOP] | |||
| divert-option = [O_DIVERT, +locator-option] | divert-option = [O_DIVERT, +locator-option] | |||
| accept-option = [O_ACCEPT] | accept-option = [O_ACCEPT] | |||
| decline-option = [O_DECLINE, ?reason] | decline-option = [O_DECLINE, ?reason] | |||
| reason = text ;optional error message | reason = text ;optional error message | |||
| waiting-time = 0..4294967295 ; in milliseconds | waiting-time = 0..4294967295 ; in milliseconds | |||
| ttl = 0..4294967295 ; in milliseconds | ||||
| locator-option /= [O_IPv4_LOCATOR, ipv4-address, | locator-option /= [O_IPv4_LOCATOR, ipv4-address, | |||
| transport-proto, port-number] | transport-proto, port-number] | |||
| ipv4-address = bytes .size 4 | ipv4-address = bytes .size 4 | |||
| locator-option /= [O_IPv6_LOCATOR, ipv6-address, | locator-option /= [O_IPv6_LOCATOR, ipv6-address, | |||
| transport-proto, port-number] | transport-proto, port-number] | |||
| ipv6-address = bytes .size 16 | ipv6-address = bytes .size 16 | |||
| locator-option /= [O_FQDN_LOCATOR, text, transport-proto, port-number] | locator-option /= [O_FQDN_LOCATOR, text, transport-proto, port-number] | |||
| skipping to change at page 42, line 48 | skipping to change at page 45, line 49 | |||
| O_ACCEPT = 101 | O_ACCEPT = 101 | |||
| O_DECLINE = 102 | O_DECLINE = 102 | |||
| O_IPv6_LOCATOR = 103 | O_IPv6_LOCATOR = 103 | |||
| O_IPv4_LOCATOR = 104 | O_IPv4_LOCATOR = 104 | |||
| O_FQDN_LOCATOR = 105 | O_FQDN_LOCATOR = 105 | |||
| O_URI_LOCATOR = 106 | O_URI_LOCATOR = 106 | |||
| <CODE ENDS> | <CODE ENDS> | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| This document defines the General Discovery and Negotiation Protocol | This document defines the Generic Autonomic Signaling Protocol | |||
| (GRASP). | (GRASP). | |||
| Section 3.5 explains the following link-local multicast addresses, | Section 3.5 explains the following link-local multicast addresses, | |||
| which IANA is requested to assign for use by GRASP: | which IANA is requested to assign for use by GRASP: | |||
| ALL_GRASP_NEIGHBOR multicast address (IPv6): (TBD1). Assigned in | ALL_GRASP_NEIGHBOR multicast address (IPv6): (TBD1). Assigned in | |||
| the IPv6 Link-Local Scope Multicast Addresses registry. | the IPv6 Link-Local Scope Multicast Addresses registry. | |||
| ALL_GRASP_NEIGHBOR multicast address (IPv4): (TBD2). Assigned in | ALL_GRASP_NEIGHBOR multicast address (IPv4): (TBD2). Assigned in | |||
| the IPv4 Multicast Local Network Control Block. | the IPv4 Multicast Local Network Control Block. | |||
| Section 3.5 explains the following UDP and TCP port, which IANA is | Section 3.5 explains the following User Port, which IANA is requested | |||
| requested to assign for use by GRASP: | to assign for use by GRASP for both UDP and TCP: | |||
| GRASP_LISTEN_PORT: (TBD3) | GRASP_LISTEN_PORT: (TBD3) | |||
| Service Name: Generic Autonomic Signaling Protocol (GRASP) | ||||
| Transport Protocols: UDP, TCP | ||||
| Assignee: iesg@ietf.org | ||||
| Contact: chair@ietf.org | ||||
| Description: See Section 3.5 | ||||
| Reference: RFC XXXX (this document) | ||||
| The IANA is requested to create a GRASP Parameter Registry including | The IANA is requested to create a GRASP Parameter Registry including | |||
| two registry tables. These are the GRASP Messages and Options | two registry tables. These are the GRASP Messages and Options | |||
| Table and the GRASP Objective Names Table. | Table and the GRASP Objective Names Table. | |||
| GRASP Messages and Options Table. The values in this table are names | GRASP Messages and Options Table. The values in this table are names | |||
| paired with decimal integers. Future values MUST be assigned using | paired with decimal integers. Future values MUST be assigned using | |||
| the Standards Action policy defined by [RFC5226]. The following | the Standards Action policy defined by [RFC5226]. The following | |||
| initial values are assigned by this document: | initial values are assigned by this document: | |||
| skipping to change at page 45, line 39 | skipping to change at page 48, line 44 | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [I-D.chaparadza-intarea-igcp] | [I-D.chaparadza-intarea-igcp] | |||
| Behringer, M., Chaparadza, R., Petre, R., Li, X., and H. | Behringer, M., Chaparadza, R., Petre, R., Li, X., and H. | |||
| Mahkonen, "IP based Generic Control Protocol (IGCP)", | Mahkonen, "IP based Generic Control Protocol (IGCP)", | |||
| draft-chaparadza-intarea-igcp-00 (work in progress), July | draft-chaparadza-intarea-igcp-00 (work in progress), July | |||
| 2011. | 2011. | |||
| [I-D.ietf-anima-autonomic-control-plane] | [I-D.ietf-anima-autonomic-control-plane] | |||
| Behringer, M., Bjarnason, S., BL, B., and T. Eckert, "An | Behringer, M., Eckert, T., and S. Bjarnason, "An Autonomic | |||
| Autonomic Control Plane", draft-ietf-anima-autonomic- | Control Plane", draft-ietf-anima-autonomic-control- | |||
| control-plane-02 (work in progress), March 2016. | plane-03 (work in progress), July 2016. | |||
| [I-D.ietf-anima-bootstrapping-keyinfra] | [I-D.ietf-anima-bootstrapping-keyinfra] | |||
| Pritikin, M., Richardson, M., Behringer, M., and S. | Pritikin, M., Richardson, M., Behringer, M., and S. | |||
| Bjarnason, "Bootstrapping Key Infrastructures", draft- | Bjarnason, "Bootstrapping Remote Secure Key | |||
| ietf-anima-bootstrapping-keyinfra-02 (work in progress), | Infrastructures (BRSKI)", draft-ietf-anima-bootstrapping- | |||
| March 2016. | keyinfra-03 (work in progress), June 2016. | |||
| [I-D.ietf-anima-reference-model] | [I-D.ietf-anima-reference-model] | |||
| Behringer, M., Carpenter, B., Eckert, T., Ciavaglia, L., | Behringer, M., Carpenter, B., Eckert, T., Ciavaglia, L., | |||
| Liu, B., Nobre, J., and J. Strassner, "A Reference Model | Pierre, P., Liu, B., Nobre, J., and J. Strassner, "A | |||
| for Autonomic Networking", draft-ietf-anima-reference- | Reference Model for Autonomic Networking", draft-ietf- | |||
| model-01 (work in progress), March 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-00 (work in progress), January | 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-13 (work in | Protocol", draft-ietf-netconf-restconf-16 (work in | |||
| progress), April 2016. | progress), August 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 48, line 49 | skipping to change at page 52, line 5 | |||
| [RFC7788] Stenberg, M., Barth, S., and P. Pfister, "Home Networking | [RFC7788] Stenberg, M., Barth, S., and P. Pfister, "Home Networking | |||
| Control Protocol", RFC 7788, DOI 10.17487/RFC7788, April | Control Protocol", RFC 7788, DOI 10.17487/RFC7788, April | |||
| 2016, <http://www.rfc-editor.org/info/rfc7788>. | 2016, <http://www.rfc-editor.org/info/rfc7788>. | |||
| Appendix A. Open Issues | Appendix A. Open Issues | |||
| o 7. Cross-check against other ANIMA WG documents for consistency | o 7. Cross-check against other ANIMA WG documents for consistency | |||
| and gaps. | and gaps. | |||
| o 43. Rapid mode synchronization and negotiation is currently | ||||
| limited to a single objective for simplicity of design and | ||||
| implementation. A future consideration is to allow multiple | ||||
| objectives in rapid mode for greater efficiency. | ||||
| o 48. Should the Appendix "Capability Analysis of Current | ||||
| Protocols" be deleted before RFC publication? | ||||
| o 49. Section 3.3.1 should say more about signaling between two | ||||
| autonomic networks/domains. | ||||
| o 50. Is Rapid mode limited to on-link only? What happens if first | ||||
| discovery responder does not support Rapid Mode? (Section 3.3.4, | ||||
| Section 3.3.5) | ||||
| Appendix B. Closed Issues [RFC Editor: Please remove] | Appendix B. Closed Issues [RFC Editor: Please remove] | |||
| o 1. UDP vs TCP: For now, this specification suggests UDP and TCP | o 1. UDP vs TCP: For now, this specification suggests UDP and TCP | |||
| as message transport mechanisms. This is not clarified yet. UDP | as message transport mechanisms. This is not clarified yet. UDP | |||
| is good for short conversations, is necessary for multicast | is good for short conversations, is necessary for multicast | |||
| discovery, and generally fits the discovery and divert scenarios | discovery, and generally fits the discovery and divert scenarios | |||
| well. However, it will cause problems with large messages. TCP | well. However, it will cause problems with large messages. TCP | |||
| is good for stable and long sessions, with a little bit of time | is good for stable and long sessions, with a little bit of time | |||
| consumption during the session establishment stage. If messages | consumption during the session establishment stage. If messages | |||
| exceed a reasonable MTU, a TCP mode will be required in any case. | exceed a reasonable MTU, a TCP mode will be required in any case. | |||
| skipping to change at page 53, line 15 | skipping to change at page 55, line 51 | |||
| 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.5.1). | o 27. Security of Flood multicasts (Section 3.3.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 55, line 5 | skipping to change at page 57, line 40 | |||
| RESOLVED: Both would be possible, but (b) is preferred. | RESOLVED: Both would be possible, but (b) is preferred. | |||
| o 42. Do we need a feature whereby an ASA can bypass the ACP and | o 42. Do we need a feature whereby an ASA can bypass the ACP and | |||
| use the data plane for efficiency/throughput? This would require | use the data plane for efficiency/throughput? This would require | |||
| discovery to return non-ACP addresses and would evade ACP | discovery to return non-ACP addresses and would evade ACP | |||
| security. | security. | |||
| RESOLVED: This is considered out of scope for GRASP, but a comment | RESOLVED: This is considered out of scope for GRASP, but a comment | |||
| has been added in security considerations. | has been added in security considerations. | |||
| o 43. Rapid mode synchronization and negotiation is currently | ||||
| limited to a single objective for simplicity of design and | ||||
| implementation. A future consideration is to allow multiple | ||||
| objectives in rapid mode for greater efficiency. | ||||
| RESOLVED: This is considered out of scope for this version. | ||||
| o 44. In requirement T9, the words that encryption "may not be | o 44. In requirement T9, the words that encryption "may not be | |||
| required in all deployments" were removed. Is that OK?. | required in all deployments" were removed. Is that OK?. | |||
| RESOLVED: No objections. | RESOLVED: No objections. | |||
| o 45. Device Identity Option is unused. Can we remove it | o 45. Device Identity Option is unused. Can we remove it | |||
| completely?. | completely?. | |||
| RESOLVED: No objections. Done. | RESOLVED: No objections. Done. | |||
| skipping to change at page 55, line 32 | skipping to change at page 58, line 27 | |||
| RESOLVED: Yes. Done. | RESOLVED: Yes. Done. | |||
| o 47. REQUEST is a dual purpose message (request negotiation or | o 47. REQUEST is a dual purpose message (request negotiation or | |||
| request synchronization). Would it be better to split this into | request synchronization). Would it be better to split this into | |||
| 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 | ||||
| Protocols" be deleted before RFC publication? | ||||
| RESOLVED: No (per WG meeting at IETF 96). | ||||
| o 49. Section 3.3.1 Should say more about signaling between two | ||||
| autonomic networks/domains. | ||||
| RESOLVED: Description of separate GRASP instance added. | ||||
| 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, | ||||
| Section 3.3.6) | ||||
| RESOLVED: Not limited to on-link. First responder wins. | ||||
| 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 | ||||
| cache with their source locator? | ||||
| RESOLVED: TTL added to Flood (and Discovery Response) messages. | ||||
| Cached flooded objectives must be tagged with their originating | ||||
| ASA locator, and multiple copies must be kept if necessary. | ||||
| o 52. Describe in detail what is allowed and disallowed in an | ||||
| insecure instance of GRASP. | ||||
| RESOLVED: Done. | ||||
| o 53. Tune IANA Considerations to support early assignment request. | ||||
| RESOLVED: Done. | ||||
| Appendix C. Change log [RFC Editor: Please remove] | Appendix C. Change log [RFC Editor: Please remove] | |||
| draft-ietf-anima-grasp-07, 2016-08-27: | ||||
| Protocol change: Added TTL field to Flood message (issue 51). | ||||
| Protocol change: Added Locator option to Flood message (issue 51). | ||||
| Protocol change: Added TTL field to Discovery Response message | ||||
| (corrollary to issue 51). | ||||
| Clarified details of rapid mode (issues 43 and 50). | ||||
| Description of inter-domain GRASP instance added (issue 49). | ||||
| Description of limited security GRASP instances added (issue 52). | ||||
| Strengthened advice to use TCP rather than UDP. | ||||
| Updated IANA considerations and text about well-known port usage | ||||
| (issue 53). | ||||
| Amended text about ASA authorization and roles to allow for | ||||
| overlapping ASAs. | ||||
| Added text recommending that Flood should be repeated periodically. | ||||
| Editorial fixes. | ||||
| draft-ietf-anima-grasp-06, 2016-06-27: | draft-ietf-anima-grasp-06, 2016-06-27: | |||
| Added text on discovery cache timeouts. | Added text on discovery cache timeouts. | |||
| Noted that ASAs that are only initiators do not need to respond to | Noted that ASAs that are only initiators do not need to respond to | |||
| discovery message. | discovery message. | |||
| Added text on unexpected address changes. | Added text on unexpected address changes. | |||
| Added text on robust implementation. | Added text on robust implementation. | |||
| skipping to change at page 59, line 36 | skipping to change at page 63, line 43 | |||
| 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. Capability Analysis of Current Protocols | |||
| This appendix discusses various existing protocols with properties | This appendix discusses various existing protocols with properties | |||
| related to the above negotiation and synchronisation requirements. | related to the requirements described in Section 2. The purpose is | |||
| The purpose is to evaluate whether any existing protocol, or a simple | to evaluate whether any existing protocol, or a simple combination of | |||
| 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 | |||
| [RFC6763] combined with mDNS [RFC6762] provides service discovery for | [RFC6763] combined with mDNS [RFC6762] provides service discovery for | |||
| small networks with a single link layer. [RFC7558] aims to extend | small networks with a single link layer. [RFC7558] aims to extend | |||
| this to larger autonomous networks but this is not yet standardized. | this to larger autonomous networks but this is not yet standardized. | |||
| However, both SLP and DNS-SD appear to target primarily application | However, both SLP and DNS-SD appear to target primarily application | |||
| layer services, not the layer 2 and 3 objectives relevant to basic | layer services, not the layer 2 and 3 objectives relevant to basic | |||
| skipping to change at page 60, line 48 | skipping to change at page 65, line 4 | |||
| GIST as a synchronization and negotiation protocol. They do not | GIST as a synchronization and negotiation protocol. They do not | |||
| appear to be directly useable for peer discovery. | appear to be directly useable for peer discovery. | |||
| We now consider two protocols that are works in progress at the time | We now consider two protocols that are works in progress at the time | |||
| of this writing. Firstly, RESTCONF [I-D.ietf-netconf-restconf] is a | of this writing. Firstly, RESTCONF [I-D.ietf-netconf-restconf] is a | |||
| protocol intended to convey NETCONF information expressed in the YANG | protocol intended to convey NETCONF information expressed in the YANG | |||
| language via HTTP, including the ability to transit HTML | language via HTTP, including the ability to transit HTML | |||
| intermediaries. While this is a powerful approach in the context of | intermediaries. While this is a powerful approach in the context of | |||
| centralised configuration of a complex network, it is not well | centralised configuration of a complex network, it is not well | |||
| adapted to efficient interactive negotiation between peer devices, | adapted to efficient interactive negotiation between peer devices, | |||
| especially simple ones that are unlikely to include YANG processing | especially simple ones that might not include YANG processing | |||
| already. | already. | |||
| Secondly, we consider Distributed Node Consensus Protocol (DNCP) | Secondly, we consider Distributed Node Consensus Protocol (DNCP) | |||
| [RFC7787]. This is defined as a generic form of state | [RFC7787]. This is defined as a generic form of state | |||
| synchronization protocol, with a proposed usage profile being the | synchronization protocol, with a proposed usage profile being the | |||
| Home Networking Control Protocol (HNCP) [RFC7788] for configuring | Home Networking Control Protocol (HNCP) [RFC7788] for configuring | |||
| Homenet routers. A specific application of DNCP for autonomic | Homenet routers. A specific application of DNCP for autonomic | |||
| networking was proposed in [I-D.stenberg-anima-adncp]. | networking was proposed in [I-D.stenberg-anima-adncp]. | |||
| DNCP "is designed to provide a way for each participating node to | DNCP "is designed to provide a way for each participating node to | |||
| End of changes. 60 change blocks. | ||||
| 171 lines changed or deleted | 370 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/ | ||||