| rfc9758.original | rfc9758.txt | |||
|---|---|---|---|---|
| Delay/Disruption Tolerant Networking R. Taylor | Internet Engineering Task Force (IETF) R. Taylor | |||
| Internet-Draft Aalyria Technologies | Request for Comments: 9758 Aalyria Technologies | |||
| Updates: [9171, 7116, 6260] (if approved) E. Birrane | Updates: 6260, 7116, 9171 E. Birrane, III | |||
| Intended status: Standards Track JHU/APL | Category: Standards Track JHU/APL | |||
| Expires: 31 March 2025 27 September 2024 | ISSN: 2070-1721 May 2025 | |||
| Update to the ipn URI scheme | Updates to the 'ipn' URI Scheme | |||
| draft-ietf-dtn-ipn-update-14 | ||||
| Abstract | Abstract | |||
| This document updates the specification of the ipn URI scheme | This document updates the specification of the 'ipn' URI scheme | |||
| previously defined in RFC 6260, the IANA registries established in | previously defined in RFC 6260 and the IANA registries established in | |||
| RFC 7116, and the rules for the encoding and decoding of these URIs | RFC 7116. It also updates the rules for the encoding and decoding of | |||
| when used as an Endpoint Identifier (EID) in Bundle Protocol Version | these URIs when used as an Endpoint Identifier (EID) in the Bundle | |||
| 7 (BPv7) as defined in RFC 9171. These updates clarify the structure | Protocol version 7 (BPv7) as defined in RFC 9171. These updates | |||
| and behavior of the ipn URI scheme, define new encodings of ipn | clarify the structure and behavior of the 'ipn' URI scheme, define | |||
| scheme URIs, and establish the registries necessary to manage this | new encodings of 'ipn' scheme URIs, and establish the registries | |||
| scheme. | necessary to manage this scheme. | |||
| About This Document | ||||
| This note is to be removed before publishing as an RFC. | ||||
| The latest revision of this draft can be found at | ||||
| https://ricktaylor.github.io/ipn2/draft-taylor-dtn-ipn-update.html. | ||||
| Status information for this document may be found at | ||||
| https://datatracker.ietf.org/doc/draft-ietf-dtn-ipn-update/. | ||||
| Discussion of this document takes place on the Delay/Disruption | ||||
| Tolerant Networking Working Group mailing list (mailto:dtn@ietf.org), | ||||
| which is archived at https://mailarchive.ietf.org/arch/browse/dtn/. | ||||
| Subscribe at https://www.ietf.org/mailman/listinfo/dtn/. | ||||
| Source for this draft and an issue tracker can be found at | ||||
| https://github.com/ricktaylor/ipn2. | ||||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
| provisions of BCP 78 and BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | ||||
| Task Force (IETF). Note that other groups may also distribute | ||||
| working documents as Internet-Drafts. The list of current Internet- | ||||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
| Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
| and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
| time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
| material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
| Internet Standards is available in Section 2 of RFC 7841. | ||||
| This Internet-Draft will expire on 31 March 2025. | Information about the current status of this document, any errata, | |||
| and how to provide feedback on it may be obtained at | ||||
| https://www.rfc-editor.org/info/rfc9758. | ||||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
| license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
| and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
| extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
| described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
| provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
| in the Revised BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 4 | 1. Introduction | |||
| 2. Conventions and Definitions . . . . . . . . . . . . . . . . . 5 | 2. Conventions and Definitions | |||
| 3. Core Concepts . . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Core Concepts | |||
| 3.1. The Null ipn URI . . . . . . . . . . . . . . . . . . . . 6 | 3.1. The Null ipn URI | |||
| 3.2. Allocator Identifiers . . . . . . . . . . . . . . . . . . 6 | 3.2. Allocator Identifiers | |||
| 3.2.1. Allocator Identifier Ranges . . . . . . . . . . . . . 7 | 3.2.1. Allocator Identifier Ranges | |||
| 3.2.2. The Default Allocator . . . . . . . . . . . . . . . . 8 | 3.2.2. The Default Allocator | |||
| 3.3. Node Numbers . . . . . . . . . . . . . . . . . . . . . . 9 | 3.3. Node Numbers | |||
| 3.3.1. Fully-qualified Node Numbers . . . . . . . . . . . . 9 | 3.3.1. Fully Qualified Node Numbers | |||
| 3.4. Special Node Numbers . . . . . . . . . . . . . . . . . . 9 | 3.4. Special Node Numbers | |||
| 3.4.1. The Zero Node Number . . . . . . . . . . . . . . . . 10 | 3.4.1. The Zero Node Number | |||
| 3.4.2. LocalNode ipn URIs . . . . . . . . . . . . . . . . . 10 | 3.4.2. LocalNode ipn URIs | |||
| 3.4.3. Private Use Node Numbers . . . . . . . . . . . . . . 10 | 3.4.3. Private Use Node Numbers | |||
| 3.5. Service Numbers . . . . . . . . . . . . . . . . . . . . . 10 | 3.5. Service Numbers | |||
| 4. Textual Representation of ipn URIs . . . . . . . . . . . . . 11 | 4. Textual Representation of ipn URIs | |||
| 4.1. ipn URI Scheme Text Syntax . . . . . . . . . . . . . . . 11 | 4.1. 'ipn' URI Scheme Text Syntax | |||
| 5. Usage of ipn URIs with BPv7 . . . . . . . . . . . . . . . . . 12 | 5. Usage of ipn URIs with BPv7 | |||
| 5.1. Uniqueness Constraints . . . . . . . . . . . . . . . . . 12 | 5.1. Uniqueness Constraints | |||
| 5.2. The Null Endpoint . . . . . . . . . . . . . . . . . . . . 13 | 5.2. The Null Endpoint | |||
| 5.3. BPv7 Node ID . . . . . . . . . . . . . . . . . . . . . . 13 | 5.3. BPv7 Node ID | |||
| 5.4. LocalNode ipn EIDs . . . . . . . . . . . . . . . . . . . 13 | 5.4. LocalNode ipn EIDs | |||
| 5.5. Private Use ipn EIDs . . . . . . . . . . . . . . . . . . 14 | 5.5. Private Use ipn EIDs | |||
| 5.6. Well-known Service Numbers . . . . . . . . . . . . . . . 14 | 5.6. Well-Known Service Numbers | |||
| 5.7. Administrative Endpoints . . . . . . . . . . . . . . . . 15 | 5.7. Administrative Endpoints | |||
| 6. CBOR representation of ipn URIs with BPv7 . . . . . . . . . . 15 | 6. CBOR Representation of ipn URIs with BPv7 | |||
| 6.1. ipn EID CBOR Encoding . . . . . . . . . . . . . . . . . . 15 | 6.1. ipn EID CBOR Encoding | |||
| 6.1.1. Two-Element Scheme-Specific Encoding . . . . . . . . 16 | 6.1.1. Two-Element Scheme-Specific Encoding | |||
| 6.1.2. Three-Element Scheme-Specific Encoding . . . . . . . 16 | 6.1.2. Three-Element Scheme-Specific Encoding | |||
| 6.2. ipn EID CBOR Decoding . . . . . . . . . . . . . . . . . . 17 | 6.2. ipn EID CBOR Decoding | |||
| 6.3. ipn URI Scheme CBOR syntax . . . . . . . . . . . . . . . 18 | 6.3. 'ipn' URI Scheme CBOR Syntax | |||
| 6.4. ipn EID Matching . . . . . . . . . . . . . . . . . . . . 18 | 6.4. ipn EID Matching | |||
| 7. Special Considerations . . . . . . . . . . . . . . . . . . . 19 | 7. Special Considerations | |||
| 7.1. Scheme Compatibility . . . . . . . . . . . . . . . . . . 19 | 7.1. Scheme Compatibility | |||
| 7.2. CBOR Representation Interoperability . . . . . . . . . . 19 | 7.2. CBOR Representation Interoperability | |||
| 7.3. Text Representation Compatibility . . . . . . . . . . . . 20 | 7.3. Text Representation Compatibility | |||
| 7.4. Bundle Protocol Version 6 Compatibility . . . . . . . . . 21 | 7.4. Bundle Protocol Version 6 Compatibility | |||
| 7.5. Late Binding . . . . . . . . . . . . . . . . . . . . . . 21 | 7.5. Late Binding | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 8. Security Considerations | |||
| 8.1. Reliability and consistency . . . . . . . . . . . . . . . 21 | 8.1. Reliability and Consistency | |||
| 8.2. Malicious construction . . . . . . . . . . . . . . . . . 22 | 8.2. Malicious Construction | |||
| 8.3. Back-end transcoding . . . . . . . . . . . . . . . . . . 22 | 8.3. Back-End Transcoding | |||
| 8.4. Local and Private Use ipn EIDs . . . . . . . . . . . . . 22 | 8.4. Local and Private Use ipn EIDs | |||
| 8.5. Sensitive information . . . . . . . . . . . . . . . . . . 22 | 8.5. Sensitive Information | |||
| 8.6. Semantic attacks . . . . . . . . . . . . . . . . . . . . 22 | 8.6. Semantic Attacks | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | 9. IANA Considerations | |||
| 9.1. 'ipn' Scheme URI Allocator Identifiers registry . . . . . 23 | 9.1. 'ipn' Scheme URI Allocator Identifiers Registry | |||
| 9.1.1. Guidance for Designated Experts . . . . . . . . . . . 24 | 9.1.1. Guidance for Designated Experts | |||
| 9.2. 'ipn' Scheme URI Default Allocator Node Numbers | 9.2. 'ipn' Scheme URI Default Allocator Node Numbers Registry | |||
| registry . . . . . . . . . . . . . . . . . . . . . . . . 24 | 9.3. 'ipn' Scheme URI Well-Known Service Numbers for BPv7 | |||
| 9.3. 'ipn' Scheme URI Well-known Service Numbers for BPv7 | Registry | |||
| registry . . . . . . . . . . . . . . . . . . . . . . . . 25 | 9.3.1. Guidance for Designated Experts | |||
| 9.3.1. Guidance for Designated Experts . . . . . . . . . . . 26 | 10. References | |||
| 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 10.1. Normative References | |||
| 10.1. Normative References . . . . . . . . . . . . . . . . . . 27 | 10.2. Informative References | |||
| 10.2. Informative References . . . . . . . . . . . . . . . . . 28 | Appendix A. 'ipn' URI Scheme Text Representation Examples | |||
| Appendix A. ipn URI Scheme Text Representation Examples . . . . 28 | A.1. Using the Default Allocator | |||
| A.1. Using the Default Allocator . . . . . . . . . . . . . . . 28 | A.2. Using a Non-Default Allocator | |||
| A.2. Using a non-default Allocator . . . . . . . . . . . . . . 29 | A.3. The Null ipn URI | |||
| A.3. The Null ipn URI . . . . . . . . . . . . . . . . . . . . 29 | A.4. The LocalNode ipn URI | |||
| A.4. A LocalNode ipn URI . . . . . . . . . . . . . . . . . . . 29 | Appendix B. 'ipn' URI Scheme CBOR Encoding Examples | |||
| Appendix B. ipn URI Scheme CBOR Encoding Examples . . . . . . . 29 | B.1. Using the Default Allocator | |||
| B.1. Using the Default Allocator . . . . . . . . . . . . . . . 29 | B.2. Using a Non-Default Allocator | |||
| B.2. Using a non-default Allocator . . . . . . . . . . . . . . 30 | B.3. The Null Endpoint | |||
| B.3. The 'null' Endpoint . . . . . . . . . . . . . . . . . . . 30 | Acknowledgments | |||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 31 | Authors' Addresses | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
| 1. Introduction | 1. Introduction | |||
| The ipn URI scheme was originally defined in [RFC6260] and [RFC7116] | The 'ipn' URI scheme was originally defined in [RFC6260] and | |||
| as a way to identify network nodes and node services using concisely- | [RFC7116] as a way to identify network nodes and node services using | |||
| encoded integers that can be processed faster and with fewer | concisely encoded integers that can be processed faster and with | |||
| resources than other verbose identifier schemes. The scheme was | fewer resources than other verbose identifier schemes. The scheme | |||
| designed for use with the experimental Bundle Protocol version 6 | was designed for use with the experimental Bundle Protocol version 6 | |||
| (BPv6, [RFC5050]) and IPN was defined as an acronym for the term | (BPv6) [RFC5050], and "IPN" was defined as an acronym for the term | |||
| "InterPlanetary Network" in reference to its intended use for deep- | "InterPlanetary Network" in reference to its intended use for deep- | |||
| space networking. Since then, the efficiency benefit of integer | space networking. Since then, the efficiency benefits of integer | |||
| identifiers makes ipn scheme URIs useful for any networks operating | identifiers make 'ipn' scheme URIs useful for any network operating | |||
| with limited power, bandwidth, and/or compute budget. Therefore, the | with limited power, bandwidth, and/or compute budget. Therefore, the | |||
| term IPN is now used as a non-acronymous name. | term "IPN" is now used as a non-acronymous name. | |||
| Similar to the experimental BPv6, the standardized Bundle Protocol | Similar to the experimental BPv6, the standardized Bundle Protocol | |||
| version 7 (BPv7, [RFC9171]) codifies support for the use of the ipn | version 7 (BPv7) [RFC9171] codifies support for the use of the 'ipn' | |||
| URI scheme for the specification of bundle Endpoint Identifiers | URI scheme for the specification of bundle Endpoint Identifiers | |||
| (EIDs). The publication of BPv7 has resulted in operational | (EIDs). The publication of BPv7 has resulted in operational | |||
| deployments of BPv7 nodes for both terrestrial and non-terrestrial | deployments of BPv7 nodes for both terrestrial and non-terrestrial | |||
| use cases. This includes BPv7 networks operating over the | use cases. This includes BPv7 networks operating over the | |||
| terrestrial Internet and BPv7 networks operating in self-contained | terrestrial Internet and BPv7 networks operating in self-contained | |||
| environments behind a shared administrative domain. The growth in | environments behind a shared administrative domain. The growth in | |||
| the number and scale of deployments of BPv7 has been accompanied by a | the number and scale of deployments of BPv7 has been accompanied by a | |||
| growth in the usage of the ipn URI scheme which has highlighted areas | growth in the usage of the 'ipn' URI scheme, which has highlighted | |||
| to improve the structure, moderation, and management of this scheme. | areas to improve the structure, moderation, and management of this | |||
| scheme. | ||||
| By updating [RFC7116] and [RFC9171], this document updates the | By updating [RFC7116] and [RFC9171], this document updates the | |||
| specification of the ipn URI scheme, in a backwards-compatible way, | specification of the 'ipn' URI scheme in a backwards-compatible way, | |||
| to provide needed improvements both in the scheme itself and its | in order to provide needed improvements both in the scheme itself and | |||
| usage to specify EIDs with BPv7. Specifically, this document | in its usage to specify EIDs with BPv7. Specifically, this document: | |||
| introduces a hierarchical structure for the assignment of ipn scheme | ||||
| URIs, clarifies the behavior and interpretation of ipn scheme URIs, | ||||
| defines efficient encodings of ipn scheme URIs, and updates/defines | ||||
| the registries associated for this scheme. | ||||
| Although originally developed by the deep space community for use | * introduces a hierarchical structure for the assignment of 'ipn' | |||
| with Bundle Protocol, the ipn URI scheme is sufficiently generic to | scheme URIs, | |||
| be used in other environments where a concise unique representation | ||||
| of a resource on a particular node is required. | * clarifies the behavior and interpretation of 'ipn' scheme URIs, | |||
| * defines efficient encodings of 'ipn' scheme URIs, and | ||||
| * updates/defines the registries associated with this scheme. | ||||
| Although originally developed by the deep-space community for use | ||||
| with the Bundle Protocol, the 'ipn' URI scheme is sufficiently | ||||
| generic to be used in other environments where a concise unique | ||||
| representation of a resource on a particular node is required. | ||||
| It is important to remember that, like most other URI schemes, the | It is important to remember that, like most other URI schemes, the | |||
| ipn URI scheme defines a unique identifier of a resource, and does | 'ipn' URI scheme defines a unique identifier of a resource, and it | |||
| not include any topological information describing how to route | does not include any topological information describing how to route | |||
| messages to that resource. | messages to that resource. | |||
| 2. Conventions and Definitions | 2. Conventions and Definitions | |||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
| "OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
| BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
| capitals, as shown here. | capitals, as shown here. | |||
| For the remainder of this document, the term "ipn URI" is used to | For the remainder of this document, the term "ipn URI" is used to | |||
| refer to a URI that uses the ipn scheme. | refer to a URI that uses the 'ipn' URI scheme. | |||
| 3. Core Concepts | 3. Core Concepts | |||
| Every ipn URI, no matter whether it is expressed with the textual | Every ipn URI, no matter whether it is expressed with a textual | |||
| representation or a binary encoding, MUST be considered as a tuple of | representation or a binary encoding, MUST be considered as a tuple of | |||
| the following three components: | the following three components: | |||
| * The Allocator Identifier | * The Allocator Identifier | |||
| * The Node Number | * The Node Number | |||
| * The Service Number | * The Service Number | |||
| The Allocator Identifier indicates the entity responsible for | The Allocator Identifier indicates the entity responsible for | |||
| assigning Node Numbers to individual resource nodes, maintaining | assigning Node Numbers to individual resource nodes, maintaining | |||
| uniqueness whilst avoiding the need for a single registry for all | uniqueness whilst avoiding the need for a single registry for all | |||
| assigned Node Numbers. See Allocator Identifiers (Section 3.2). | assigned Node Numbers. See Section 3.2. | |||
| The Node Number is a shared identifier assigned to all ipn URIs for | The Node Number is a shared identifier assigned to all ipn URIs for | |||
| resources co-located on a single node. See Node Numbers | resources co-located on a single node. See Section 3.3. | |||
| (Section 3.3). | ||||
| The Service Number is an identifier to distinguish between resources | The Service Number is an identifier to distinguish between resources | |||
| on a given node. See Service Numbers (Section 3.5). | on a given node. See Section 3.5. | |||
| The combination of these three components guarantees that every | The combination of these three components guarantees that every | |||
| correctly constructed ipn URI uniquely identifies a single resource. | correctly constructed ipn URI uniquely identifies a single resource. | |||
| Additionally, the combination of the Allocator Identifier and the | Additionally, the combination of the Allocator Identifier and the | |||
| Node Number provides a mechanism to uniquely identify the node on | Node Number provides a mechanism to uniquely identify the node on | |||
| which a particular resource is expected to exist. See | which a particular resource is expected to exist. See Section 3.3.1. | |||
| Fully-qualified Node Number (Section 3.3.1). | ||||
| 3.1. The Null ipn URI | 3.1. The Null ipn URI | |||
| It has been found that there is value in defining a unique 'null' ipn | It has been found that there is value in defining a unique Null ipn | |||
| URI to indicate "nowhere". This ipn URI is termed the "Null ipn | URI to indicate "nowhere". This ipn URI is termed the "Null ipn URI" | |||
| URI", and has all three components: Allocator Identifier, Node | and has all three components (the Allocator Identifier, Node Number, | |||
| Number, and Service Number, set to the value zero (0). No resource | and Service Number) set to the value zero (0). No resource | |||
| identified by Null ipn URI exists, and any destination identified by | identified by the Null ipn URI exists, and any destination identified | |||
| such a resource is therefore by definition unreachable. | by such a resource is therefore by definition unreachable. | |||
| 3.2. Allocator Identifiers | 3.2. Allocator Identifiers | |||
| An Allocator is any organization that wishes to assign Node Numbers | An Allocator is any organization that wishes to assign Node Numbers | |||
| for use with the ipn URI scheme, and has the facilities and | for use with the 'ipn' URI scheme and has the facilities and | |||
| governance to manage a public registry of assigned Node Numbers. The | governance to manage a public registry of assigned Node Numbers. The | |||
| authorization to assign these numbers is provided through the | authorization to assign these numbers is provided through the | |||
| assignment of an Allocator Identifier by IANA. Regardless of other | assignment of an Allocator Identifier by IANA. Regardless of other | |||
| attributes of an Allocator, such as a name, point of contact, or | attributes of an Allocator (such as a name, point of contact, or | |||
| other identifying information, Allocators are identified by Allocator | other identifying information), Allocators are identified by | |||
| Identifiers: a unique, unsigned integer, in the range 0 to 2^32-1. | Allocator Identifiers: unique, unsigned integers in the range 0 to | |||
| 2^(32-1). | ||||
| The Allocator Identifier MUST be the sole mechanism used to identify | The Allocator Identifier MUST be the sole mechanism used to identify | |||
| the Allocator that has assigned the Node Number in an ipn URI. An | the Allocator that has assigned the Node Number in an ipn URI. An | |||
| Allocator may have multiple assigned Allocator Identifiers, but a | Allocator may have multiple assigned Allocator Identifiers, but a | |||
| given Allocator Identifier MUST only be associated with a single | given Allocator Identifier MUST only be associated with a single | |||
| Allocator. | Allocator. | |||
| A new IANA "'ipn' Scheme URI Allocator Identifiers" registry is | A new IANA registry, "'ipn' Scheme URI Allocator Identifiers", is | |||
| defined for the registration of Allocator Identifiers, see 'ipn' | defined for the registration of Allocator Identifiers; see | |||
| Scheme URI Allocator Identifiers registry (Section 9.1). Although | Section 9.1. Although the uniqueness of Allocator Identifiers is | |||
| the uniqueness of Allocator Identifiers is required to enforce | required to enforce the uniqueness of ipn URIs, some identifiers are | |||
| uniqueness of ipn URIs, some identifiers are explicitly reserved for | explicitly reserved for experimentation or future use. | |||
| experimentation or future use. | ||||
| Each Allocator assigns Node Numbers according to its own policies, | Each Allocator assigns Node Numbers according to its own policies, | |||
| without risk of creating an identical ipn URI, as permitted by the | without risk of creating an identical ipn URI, as permitted by the | |||
| rules in the Node Numbers (Section 3.3) section of this document. | rules in Section 3.3. Other than ensuring that any Node Numbers it | |||
| Other than ensuring that any Node Numbers it allocates are unique | allocates are unique amongst all Node Numbers it assigns, an | |||
| amongst all Node Numbers it assigns, an Allocator does not need to | Allocator does not need to coordinate its allocations with other | |||
| coordinate its allocations with other Allocators. | Allocators. | |||
| If a system does not require interoperable deployment of ipn scheme | If a system does not require interoperable deployment of 'ipn' scheme | |||
| URIs, then the Private Use Node Numbers (Section 3.4.3) range, | URIs, then the Private Use Node Numbers range (Section 3.4.3), | |||
| reserved by the Default Allocator (Section 3.2.2) for this purpose, | reserved by the Default Allocator (Section 3.2.2) for this purpose, | |||
| are to be used. | is to be used. | |||
| 3.2.1. Allocator Identifier Ranges | 3.2.1. Allocator Identifier Ranges | |||
| Some organizations with internal hierarchies may wish to delegate the | Some organizations with internal hierarchies may wish to delegate the | |||
| allocation of Node Numbers to one or more of their sub-organizations. | allocation of Node Numbers to one or more of their sub-organizations. | |||
| Rather than assigning unique Allocator Identifiers to each sub- | Rather than assigning unique Allocator Identifiers to each sub- | |||
| organization on a first-come first-served basis, there are | organization on a first-come, first-served basis, there are | |||
| operational benefits in assigning Allocator Identifiers to such an | operational benefits in assigning Allocator Identifiers to such an | |||
| organization in a structured way so that an external observer can | organization in a structured way. This allows an external observer | |||
| detect that a group of Allocator Identifiers are organizationally | to detect that a group of Allocator Identifiers is organizationally | |||
| associated. | associated. | |||
| An Allocator Identifier range is a set of consecutive Allocator | An Allocator Identifier range is a set of consecutive Allocator | |||
| Identifiers associated with the same Allocator. Each individual | Identifiers associated with the same Allocator. Each individual | |||
| Allocator Identifier in a given range SHOULD be assigned to a | Allocator Identifier in a given range SHOULD be assigned to a | |||
| distinct sub-organization of the Allocator. Assigning identifiers in | distinct sub-organization of the Allocator. Assigning identifiers in | |||
| this way allows external observers both to associate individual | this way allows external observers to both associate individual | |||
| Allocator Identifiers with a single organization and to usefully | Allocator Identifiers with a single organization and usefully | |||
| differentiate amongst sub-organizations. | differentiate amongst sub-organizations. | |||
| The practice of associating a consecutive range of numbers with a | The practice of associating a consecutive range of numbers with a | |||
| single organization is inspired by the Classless Inter-domain Routing | single organization is inspired by the Classless Inter-Domain Routing | |||
| assignment of Internet Addresses described in [RFC4632]. In that | (CIDR) assignment of Internet addresses described in [RFC4632]. In | |||
| assignment scheme, an organization (such as an Internet Service | that assignment scheme, an organization (such as an Internet Service | |||
| Provider) is assigned a network prefix such that all addresses | Provider (ISP)) is assigned a network prefix such that all addresses | |||
| sharing that same prefix are considered to be associated with that | sharing that same prefix are considered to be associated with that | |||
| organization. | organization. | |||
| Each Allocator Identifier range is identified by the first Allocator | Each Allocator Identifier range is identified by the first Allocator | |||
| Identifier in the range and the number of consecutive identifiers in | Identifier in the range and the number of consecutive identifiers in | |||
| the range. | the range. | |||
| Allocator Identifier ranges differ from CIDR addresses in two | Allocator Identifier ranges differ from CIDR addresses in two | |||
| important ways. | important ways: | |||
| 1. Allocator Identifiers are used to identify organizations and are | 1. Allocator Identifiers are used to identify organizations and are | |||
| not, themselves, addresses. | not, themselves, addresses. | |||
| 2. Allocator Identifiers may be less than 32 bits in length. | 2. Allocator Identifiers may be less than 32 bits in length. | |||
| In order to differentiate between Allocator Identifier ranges using | In order to differentiate between Allocator Identifier ranges using | |||
| efficient bitwise operations, all ranges MUST be of a size S that is | efficient bitwise operations, all ranges MUST be of a size S that is | |||
| a power of 2, and for a given range of length N bits, with S = 2^N, | a power of 2, and for a given range of length N bits, with S = 2^N, | |||
| the least-significant N bits of the first Allocator Identifier MUST | the least-significant N bits of the first Allocator Identifier MUST | |||
| be all 0. | be all 0. | |||
| An example of the use of Allocator Identifier ranges for four | An example of the use of Allocator Identifier ranges for four | |||
| organizations (A, B, C, and D) is as follows: | organizations (A, B, C, and D) is as follows: | |||
| +==============+=============+=============+=====================+ | +==============+=============+=============+=====================+ | |||
| | Organization | Range (dec) | Range (hex) | Range Length (Bits) | | | Organization | Range (dec) | Range (hex) | Range Length (Bits) | | |||
| +==============+=============+=============+=====================+ | +==============+=============+=============+=====================+ | |||
| | Org A | 974848 .. | 0xEE000 .. | 7 bits | | | Org A | 974848 .. | 0xEE000 .. | 7 bits | | |||
| | | 974975 | 0xEE07F | | | | | 974975 | 0xEE07F | | | |||
| +--------------+-------------+-------------+---------------------+ | +--------------+-------------+-------------+---------------------+ | |||
| | Org B | 974976 .. | 0xEE080 .. | 4 bits | | | Org B | 974976 .. | 0xEE080 .. | 4 bits | | |||
| | | 974991 | 0xEE08F | | | | | 974991 | 0xEE08F | | | |||
| +--------------+-------------+-------------+---------------------+ | +--------------+-------------+-------------+---------------------+ | |||
| | Org C | 974992 .. | 0xEE090 .. | 1 bit | | | Org C | 974992 .. | 0xEE090 .. | 1 bit | | |||
| | | 974993 | 0xEE091 | | | | | 974993 | 0xEE091 | | | |||
| +--------------+-------------+-------------+---------------------+ | +--------------+-------------+-------------+---------------------+ | |||
| | Org D | 974994 | 0xEE092 | 0 bits | | | Org D | 974994 | 0xEE092 | 0 bits | | |||
| +--------------+-------------+-------------+---------------------+ | +--------------+-------------+-------------+---------------------+ | |||
| Table 1: Allocator Identifier Range Assignment Example | Table 1: Allocator Identifier Range Assignment Example | |||
| With these assignments, any Allocator Identifier whose most- | With these assignments, any Allocator Identifier whose most- | |||
| significant 25 bits match 0xEE000 belong to organization A. | significant 25 bits match 0xEE000 belong to organization A. | |||
| Similarly, any Allocator Identifier whose most-significant 28 bits | Similarly, any Allocator Identifier whose most-significant 28 bits | |||
| match 0xEE080 belong to organization B, and any Allocator Identifier | match 0xEE080 belong to organization B, and any Allocator Identifier | |||
| whose most-significant 31 bits are 0xEE090 belong to organization C. | whose most-significant 31 bits are 0xEE090 belong to organization C. | |||
| Organization D has a single Allocator Identifier, and hence a range | Organization D has a single Allocator Identifier, and hence a range | |||
| of bit-length 0. | of bit-length 0. | |||
| 3.2.2. The Default Allocator | 3.2.2. The Default Allocator | |||
| As of the publication of [RFC7116], the only organization permitted | As of the publication of [RFC7116], the only organization permitted | |||
| to assign Node Numbers was the Internet Assigned Numbers Authority | to assign Node Numbers was the Internet Assigned Numbers Authority | |||
| (IANA) which assigned Node Numbers via the IANA "CBHE Node Numbers" | (IANA), which assigned Node Numbers via the "CBHE Node Numbers" | |||
| registry. This means that all ipn URIs created prior to the addition | registry. This means that all ipn URIs created prior to the addition | |||
| of Allocator Identifiers are assumed to have Node Number allocations | of Allocator Identifiers are assumed to have Node Number allocations | |||
| that comply with the IANA "CBHE Node Numbers" registry. | that comply with the "CBHE Node Numbers" registry. | |||
| The presumption that, unless otherwise specified, Node Numbers are | The presumption that Node Numbers are allocated by IANA from a | |||
| allocated by IANA from a specific registry is formalized in this | specific registry, unless otherwise specified, is formalized in this | |||
| update to the ipn URI scheme by designating IANA as the Default | update to the 'ipn' URI scheme by designating IANA as the Default | |||
| Allocator, and by assigning the Allocator Identifier zero (0) in the | Allocator and by assigning the Allocator Identifier zero (0) in the | |||
| 'ipn' Scheme URI Allocator Identifiers registry (Section 9.1) to the | "'ipn' Scheme URI Allocator Identifiers" registry (Section 9.1) to | |||
| Default Allocator. In any case where an encoded ipn URI does not | the Default Allocator. In any case where an encoded ipn URI does not | |||
| explicitly include an Allocator Identifier, an implementation MUST | explicitly include an Allocator Identifier, an implementation MUST | |||
| assume that the Node Number has been allocated by the Default | assume that the Node Number has been allocated by the Default | |||
| Allocator. | Allocator. | |||
| A new IANA "'ipn' Scheme URI Default Allocator Node Numbers" registry | A new IANA registry, "'ipn' Scheme URI Default Allocator Node | |||
| is defined to control the allocation of Node Numbers values by the | Numbers", is defined to control the allocation of Node Number values | |||
| Default Allocator. This new registry inherits behaviors and existing | by the Default Allocator. This new registry inherits behaviors and | |||
| assignments from the IANA "CBHE Node Numbers" registry, and reserves | existing assignments from the "CBHE Node Numbers" registry, and it | |||
| some other values as defined in the Special Node Numbers | reserves some other values as defined in Section 3.4 below. | |||
| (Section 3.4) section below. | ||||
| 3.3. Node Numbers | 3.3. Node Numbers | |||
| A Node Number identifies a node that hosts a resource in the context | A Node Number identifies a node that hosts a resource in the context | |||
| of an Allocator. A Node Number is an unsigned integer. A single | of an Allocator. A Node Number is an unsigned integer. A single | |||
| Node Number assigned by a single Allocator MUST refer to a single | Node Number assigned by a single Allocator MUST refer to a single | |||
| node. | node. | |||
| All Node Number assignments, by all Allocators, MUST be in the range | All Node Number assignments, by all Allocators, MUST be in the range | |||
| 0 to 2^32-1. | 0 to 2^(32-1). | |||
| It is RECOMMENDED that Node Number zero (0) not be assigned by an | It is RECOMMENDED that Node Number zero (0) not be assigned by an | |||
| Allocator to avoid confusion with the Null ipn URI (Section 3.1). | Allocator to avoid confusion with the Null ipn URI (Section 3.1). | |||
| 3.3.1. Fully-qualified Node Numbers | 3.3.1. Fully Qualified Node Numbers | |||
| One of the advantages of ipn URIs is the ability to easily split the | One of the advantages of ipn URIs is the ability to easily split the | |||
| identity of a particular service from the node upon which the service | identity of a particular service from the node upon which the service | |||
| exists. For example a message received from one particular ipn URI | exists. For example, a message received from one particular ipn URI | |||
| may require a response to be sent to a different service on the same | may require a response to be sent to a different service on the same | |||
| node that sent the original message. Historically the identifier of | node that sent the original message. Historically, the identifier of | |||
| the sending node has been colloquially referred to as the "node | the sending node has been colloquially referred to as the "node | |||
| number" or "node identifier". | number" or "node identifier". | |||
| To avoid future confusion, when referring to the identifier of a | To avoid future confusion, when referring to the identifier of a | |||
| particular node the term "Fully-qualified Node Number" (FQNN) MUST be | particular node, the term "Fully Qualified Node Number" (FQNN) MUST | |||
| used to refer to the combination of the Node Number component and | be used to refer to the combination of the Node Number component and | |||
| Allocator Identifier component of an ipn URI that uniquely identifies | Allocator Identifier component of an ipn URI that uniquely identifies | |||
| a particular node. In other words, an FQNN is the unique identifier | a particular node. In other words, an FQNN is the unique identifier | |||
| of a particular node that supports services identified by ipn URIs. | of a particular node that supports services identified by ipn URIs. | |||
| In the examples in this document, FQNNs are written as (Allocator | In the examples in this document, FQNNs are written as (Allocator | |||
| Identifier, Node Number), e.g., (977000,100) is the FQNN for a node | Identifier, Node Number). For example, (977000,100) is the FQNN for | |||
| assigned Node Number 100 by an Allocator with Allocator Identifier | a node assigned Node Number 100 by an Allocator with Allocator | |||
| 977000. | Identifier 977000. | |||
| 3.4. Special Node Numbers | 3.4. Special Node Numbers | |||
| Some special-case Node Numbers are defined by the Default Allocator, | Some special-case Node Numbers are defined by the Default Allocator; | |||
| see 'ipn' Scheme URI Default Allocator Node Numbers registry | see Section 9.2. | |||
| (Section 9.2). | ||||
| 3.4.1. The Zero Node Number | 3.4.1. The Zero Node Number | |||
| The Default Allocator assigns the use of Node Number zero (0) solely | The Default Allocator assigns the use of Node Number zero (0) solely | |||
| for identifying the Null ipn URI (Section 3.1). | for identifying the Null ipn URI (Section 3.1). | |||
| This means that any ipn URI with a zero (0) Allocator Identifier and | This means that any ipn URI with a zero (0) Allocator Identifier and | |||
| a zero (0) Node Number, but a non-zero Service Number component is | a zero (0) Node Number, but a non-zero Service Number component, is | |||
| invalid. Such ipn URIs MUST NOT be composed, and processors of such | invalid. Such ipn URIs MUST NOT be composed, and processors of such | |||
| ipn URIs MUST consider them as the Null ipn URI. | ipn URIs MUST consider them as the Null ipn URI. | |||
| 3.4.2. LocalNode ipn URIs | 3.4.2. LocalNode ipn URIs | |||
| The Default Allocator reserves Node Number 2^32-1 (0xFFFFFFFFF) to | The Default Allocator reserves Node Number 2^(32-1) (0xFFFFFFFFF) to | |||
| specify resources on the local node, rather than on any specific | specify resources on the local node, rather than on any specific | |||
| individual node. | individual node. | |||
| This means that any ipn URI with a zero (0) Allocator Identifier and | This means that any ipn URI with a zero (0) Allocator Identifier and | |||
| a Node Number of 2^32-1 refers to a service on the local bundle node. | a Node Number of 2^(32-1) refers to a service on the local bundle | |||
| This form of ipn URI is termed a "LocalNode ipn URI". | node. This form of ipn URI is termed a "LocalNode ipn URI". | |||
| 3.4.3. Private Use Node Numbers | 3.4.3. Private Use Node Numbers | |||
| The Default Allocator provides a range of Node Numbers that are | The Default Allocator provides a range of Node Numbers that are | |||
| reserved for "Private Use", as defined in [RFC8126]. | reserved for Private Use, as defined in [RFC8126]. | |||
| Any ipn URI with a zero (0) Allocator Identifier and a Node Number | Any ipn URI with a zero (0) Allocator Identifier and a Node Number | |||
| reserved for "Private Use" is not guaranteed to be unique beyond a | reserved for Private Use is not guaranteed to be unique beyond a | |||
| single administrative domain. An administrative domain, as used | single administrative domain. An administrative domain, as used | |||
| here, is defined as the set of nodes that share a unique allocation | here, is defined as the set of nodes that share a unique allocation | |||
| of FQNNs from the "Private Use" range. These FQNNs can be considered | of FQNNs from the Private Use range. These FQNNs can be considered | |||
| to be functionally similar to "Private Address Space" IPv4 addresses, | to be functionally similar to private address space IPv4 addresses, | |||
| as defined in [RFC1918]. | as defined in [RFC1918]. | |||
| Because of this lack of uniqueness, any implementation of a protocol | Because of this lack of uniqueness, any implementation of a protocol | |||
| using ipn URIs that resides on the border between administrative | using ipn URIs that resides on the border between administrative | |||
| domains MUST have suitable mechanisms in place to prevent protocol | domains MUST have suitable mechanisms in place to prevent protocol | |||
| units using such "Private Use" Node Numbers to cross between | units using such Private Use Node Numbers to cross between different | |||
| different administrative domains. | administrative domains. | |||
| 3.5. Service Numbers | 3.5. Service Numbers | |||
| A Service Number is an unsigned integer that identifies a particular | A Service Number is an unsigned integer that identifies a particular | |||
| service operating on a node. A service in this case is some logical | service operating on a node. A service in this case is some logical | |||
| function that requires its own resource identifier to distinguish it | function that requires its own resource identifier to distinguish it | |||
| from other functions operating on the same node. | from other functions operating on the same node. | |||
| 4. Textual Representation of ipn URIs | 4. Textual Representation of ipn URIs | |||
| All ipn scheme URIs comply with [RFC3986], and are therefore | All 'ipn' scheme URIs comply with [RFC3986] and are therefore | |||
| represented by scheme identifier, and a scheme-specific part. The | represented by a scheme identifier and a scheme-specific part. The | |||
| scheme identifier is: ipn, and the scheme-specific parts are | scheme identifier is ipn, and the scheme-specific parts are | |||
| represented as a sequence of numeric components separated with the | represented as a sequence of numeric components separated with the | |||
| '.' character. A formal definition is provided below, see ipn URI | '.' character. A formal definition is provided below (see | |||
| Scheme Text Syntax (Section 4.1), and can be informally considered | Section 4.1) and can be informally considered as: | |||
| as: | ||||
| ipn:[<allocator-identifier>.]<node-number>.<service-number> | ipn:[<allocator-identifier>.]<node-number>.<service-number> | |||
| To keep the text representation concise, the following rules apply: | To keep the text representation concise, the following rules apply: | |||
| 1. All leading 0 characters MUST be omitted. A single '0' is valid. | 1. All leading '0' characters MUST be omitted. A single '0' is | |||
| valid. | ||||
| 2. If the Allocator Identifier is zero (0), then the <allocator- | 2. If the Allocator Identifier is zero (0), then the <allocator- | |||
| identifier> and '.' MAY be omitted. | identifier> and '.' MAY be omitted. | |||
| 3. If the Allocator Identifier is zero (0), and the Node Number is | 3. If the Allocator Identifier is zero (0), and the Node Number is | |||
| 2^32-1, i.e., the URI is a LocalNode ipn URI (Section 3.4.2), | 2^(32-1) (i.e., the URI is a LocalNode ipn URI (Section 3.4.2)), | |||
| then the character '!' SHOULD be used instead of the digits | then the character '!' SHOULD be used instead of the digits | |||
| 4294967295, although both forms are valid encodings. | 4294967295, although both forms are valid encodings. | |||
| Examples of the textual representation of ipn URIs can be found in | Examples of the textual representation of ipn URIs can be found in | |||
| Appendix A (Appendix A). | Appendix A. | |||
| 4.1. ipn URI Scheme Text Syntax | 4.1. 'ipn' URI Scheme Text Syntax | |||
| The text syntax of an ipn URI MUST comply with the following ABNF | The text syntax of an ipn URI MUST comply with the following ABNF | |||
| [RFC5234] syntax, and reiterates the core ABNF syntax rule for DIGIT | syntax from [RFC5234] and repeats the core ABNF syntax rule for DIGIT | |||
| defined by that specification: | defined by that specification: | |||
| ipn-uri = "ipn:" ipn-hier-part | ipn-uri = "ipn:" ipn-hier-part | |||
| ipn-hier-part = fqnn "." service-number | ipn-hier-part = fqnn "." service-number | |||
| fqnn = "!" / allocator-part | fqnn = "!" / allocator-part | |||
| allocator-part = [allocator-identifier "."] node-number | allocator-part = [allocator-identifier "."] node-number | |||
| skipping to change at page 12, line 27 ¶ | skipping to change at line 493 ¶ | |||
| service-number = number | service-number = number | |||
| number = "0" / non-zero-number | number = "0" / non-zero-number | |||
| non-zero-number = (%x31-39 *DIGIT) | non-zero-number = (%x31-39 *DIGIT) | |||
| DIGIT = %x30-39 | DIGIT = %x30-39 | |||
| 5. Usage of ipn URIs with BPv7 | 5. Usage of ipn URIs with BPv7 | |||
| From the earliest days of experimentation with the Bundle Protocol | From the earliest days of experimentation with the Bundle Protocol, | |||
| there has been a need to identify the source and destination of a | there has been a need to identify the source and destination of a | |||
| bundle. The IRTF BPv6 experimental specification termed the logical | bundle. The IRTF BPv6 experimental specification [RFC5050] termed | |||
| source or destination of a bundle as an "Endpoint" identified by an | the logical source or destination of a bundle as an "Endpoint" | |||
| "Endpoint Identifier" (EID). BPv6 EIDs are formatted as URIs. This | identified by an "Endpoint Identifier" (EID). BPv6 EIDs are | |||
| definition and representation of EIDs was carried forward from the | formatted as URIs. This definition and representation of EIDs was | |||
| IRTF BPv6 specification to the IETF BPv7 specification. BPv7 | carried forward from the IRTF BPv6 specification [RFC5050] to the | |||
| additionally defined an IANA registry called the "Bundle Protocol URI | IETF BPv7 specification [RFC9171]. [RFC9171] additionally defined an | |||
| Scheme Types" registry which identifies those URI schemes than might | IANA registry called the "Bundle Protocol URI Scheme Types" registry, | |||
| be used to represent EIDs. The ipn URI scheme is one such URI | which identifies those URI schemes that might be used to represent | |||
| scheme. | EIDs. The 'ipn' URI scheme is one such URI scheme. | |||
| This section identifies the behavior and interpretation of ipn scheme | This section identifies the behavior and interpretation of 'ipn' | |||
| URIs that MUST be followed when using this URI scheme to represent | scheme URIs that MUST be followed when using this URI scheme to | |||
| EIDs in BPv7. An ipn URI used as a BPv7 or BPv6 EID is termed an | represent EIDs in BPv7. An ipn URI used as a BPv7 or BPv6 EID is | |||
| "ipn EID". | termed an "ipn EID". | |||
| 5.1. Uniqueness Constraints | 5.1. Uniqueness Constraints | |||
| An ipn EID MUST identify a singleton endpoint. The bundle processing | An ipn EID MUST identify a singleton endpoint. The bundle processing | |||
| node that is the sole member of that endpoint MUST be the node | node that is the sole member of that endpoint MUST be the node | |||
| identified by the Fully-qualified Node Number (Section 3.3.1) of the | identified by the FQNN (Section 3.3.1) of the node. | |||
| node. | ||||
| A single bundle processing node MAY have multiple ipn EIDs associated | A single bundle processing node MAY have multiple ipn EIDs associated | |||
| with it. However, all ipn EIDs that share any single FQNN MUST refer | with it. However, all ipn EIDs that share any single FQNN MUST refer | |||
| to the same bundle processing node. | to the same bundle processing node. | |||
| For example, ipn:977000.100.1, ipn:977000.100.2, and ipn:977000.100.3 | For example, ipn:977000.100.1, ipn:977000.100.2, and ipn:977000.100.3 | |||
| MUST all refer to services registered on the bundle processing node | MUST all refer to services registered on the bundle processing node | |||
| identified with FQNN (977000,100). None of these EIDs could be | identified with FQNN (977000,100). None of these EIDs could be | |||
| registered on any other bundle processing node. | registered on any other bundle processing node. | |||
| 5.2. The Null Endpoint | 5.2. The Null Endpoint | |||
| Section 3.2 of [RFC9171] defines the concept of the 'null' endpoint, | Section 3.2 of [RFC9171] defines the concept of the Null endpoint, | |||
| which is an endpoint that has no members and which is identified by a | which is an endpoint that has no members and is identified by a | |||
| special 'null' EID. | special Null EID. | |||
| Within the ipn URI scheme, the 'null' EID is represented by the Null | Within the 'ipn' URI scheme, the Null EID is represented by the Null | |||
| ipn URI (Section 3.1). This means that the URIs dtn:none | ipn URI (Section 3.1). This means that the URIs dtn:none | |||
| (Section 4.2.5.1.1 of [RFC9171]), ipn:0.0, and ipn:0.0.0 all refer to | (Section 4.2.5.1.1 of [RFC9171]), ipn:0.0, and ipn:0.0.0 all refer to | |||
| the BPv7 'null' endpoint. | the BPv7 Null endpoint. | |||
| 5.3. BPv7 Node ID | 5.3. BPv7 Node ID | |||
| Section 4.2.5.2 of [RFC9171] introduces the concept of a "Node ID" | Section 4.2.5.2 of [RFC9171] introduces the concept of a "Node ID" | |||
| that has the same format as an EID and that uniquely identifies a | that has the same format as an EID and uniquely identifies a bundle | |||
| bundle processing node. | processing node. | |||
| Any ipn EID can serve as a "Node ID" for the bundle processing node | Any ipn EID can serve as a "Node ID" for the bundle processing node | |||
| identified by its Fully-qualified Node Number (Section 3.3.1). That | identified by its FQNN (Section 3.3.1). That is, any ipn EID of the | |||
| is, any ipn EID of the form ipn:A.B.C may be used as the Source Node | form ipn:A.B.C may be used as the Source Node ID of any bundle | |||
| ID of any bundle created by the bundle processing node identified by | created by the bundle processing node identified by the FQNN (A,B). | |||
| the FQNN (A,B). | ||||
| 5.4. LocalNode ipn EIDs | 5.4. LocalNode ipn EIDs | |||
| When a LocalNode ipn URI (Section 3.4.2) is used as a BPv7 or BPv6 | When a LocalNode ipn URI (Section 3.4.2) is used as a BPv6 or BPv7 | |||
| EID, it is termed a "LocalNode ipn EID". | EID, it is termed a "LocalNode ipn EID". | |||
| Because a LocalNode ipn EID only has meaning on the local bundle | Because a LocalNode ipn EID only has meaning on the local bundle | |||
| node, any such EID MUST be considered 'non-routable'. This means | node, any such EID MUST be considered non-routable. This means that | |||
| that any bundle using a LocalNode ipn EID as a bundle source or | any bundle using a LocalNode ipn EID as a bundle source or bundle | |||
| bundle destination MUST NOT be allowed to leave the local node. | destination MUST NOT be allowed to leave the local node. Equally, | |||
| Equally, all externally received bundles featuring LocalNode EIDs as | all externally received bundles featuring LocalNode EIDs as a bundle | |||
| a bundle source or bundle destination MUST be discarded as invalid. | source or bundle destination MUST be discarded as invalid. | |||
| LocalNode ipn EIDs MUST NOT be present in any other part of a bundle | LocalNode ipn EIDs MUST NOT be present in any other part of a bundle | |||
| that is transmitted off of the local node. For example, a LocalNode | that is transmitted off of the local node. For example, a LocalNode | |||
| ipn EID MUST NOT be used as a Bundle Protocol Security [RFC9172] | ipn EID MUST NOT be used as a Bundle Protocol Security (BPSec) | |||
| security source for a bundle transmitted from the local bundle node, | [RFC9172] security source for a bundle transmitted from the local | |||
| because such a source EID would have no meaning at a downstream | bundle node, because such a source EID would have no meaning at a | |||
| bundle node. | downstream bundle node. | |||
| LocalNode ipn EIDs MUST NOT be published in any node identification | LocalNode ipn EIDs MUST NOT be published in any node identification | |||
| directory, such as a DNS registration, or presented as part of | directory (such as a DNS registration) or presented as part of | |||
| dynamic peer discovery, as the EID has no valid meaning for other | dynamic peer discovery, as the EID has no valid meaning for other | |||
| nodes. For example, a LocalNode ipn EID MUST NOT be advertised as | nodes. For example, a LocalNode ipn EID MUST NOT be advertised as | |||
| the peer Node ID during session negotiation in [RFC9174]. | the peer Node ID during session negotiation in [RFC9174]. | |||
| 5.5. Private Use ipn EIDs | 5.5. Private Use ipn EIDs | |||
| Bundles destined for EIDs that use an ipn URI with a Fully-qualified | Bundles destined for EIDs that use an ipn URI with an FQNN | |||
| Node Number (Section 3.3.1) that is within the "Private Use" range of | (Section 3.3.1) that is within the Private Use range of the Default | |||
| the Default Allocator (Section 3.2.2) are not universally unique, and | Allocator (Section 3.2.2) are not universally unique; therefore, they | |||
| therefore are only valid within the scope of the current | are only valid within the scope of the current administrative domain. | |||
| administrative domain. This means that any bundle using a Private | This means that any bundle using a Private Use ipn EID as a bundle | |||
| Use ipn EID as a bundle source or bundle destination MUST NOT be | source or bundle destination MUST NOT be allowed to cross | |||
| allowed to cross administrative domains. All implementations that | administrative domains. All implementations that could be deployed | |||
| could be deployed as a gateway between administrative domains MUST be | as a gateway between administrative domains MUST be sufficiently | |||
| sufficiently configurable to ensure that this is enforced, and | configurable to ensure that this is enforced, and operators MUST | |||
| operators MUST ensure correct configuration. | ensure correct configuration. | |||
| Private Use ipn EIDs MUST NOT be present in any other part of a | Private Use ipn EIDs MUST NOT be present in any other part of a | |||
| bundle that is destined for another administrative domain when the | bundle that is destined for another administrative domain when the | |||
| lack of uniqueness prevents correct operation. For example, a | lack of uniqueness prevents correct operation. For example, a | |||
| Private Use ipn EID MUST NOT be used as a Bundle Protocol Security | Private Use ipn EID MUST NOT be used as a BPSec [RFC9172] security | |||
| [RFC9172] security source for a bundle, when the bundle is destined | source for a bundle when the bundle is destined for a different | |||
| for a different administrative domain. | administrative domain. | |||
| 5.6. Well-known Service Numbers | 5.6. Well-Known Service Numbers | |||
| It is convenient for BPv7 services that have a public specification | It is convenient for BPv7 services that have a public specification | |||
| and wide adoption to be identified by a pre-agreed default Service | and wide adoption to be identified by a pre-agreed default Service | |||
| Number, so that unless extra configuration is applied, such services | Number, so that unless overridden by explicit configuration, such | |||
| can be sensibly assumed to be operating on the well-known Service | services can be sensibly assumed to be operating on the well-known | |||
| Number on a particular node. | Service Number on a particular node. | |||
| If a different service uses the number, or the service uses a | If a different service uses the number, or the service uses a | |||
| different number, BPv7 will continue to operate, but some | different number, BPv7 will continue to operate, but some | |||
| configuration may be required to make the individual service | configuration may be required to make the individual service | |||
| operational. | operational. | |||
| A new IANA "'ipn' Scheme URI Well-known Service Numbers for BPv7" | A new IANA registry, "'ipn' Scheme URI Well-Known Service Numbers for | |||
| registry is defined for the registration of well-known BPv7 Service | BPv7", is defined for the registration of well-known BPv7 Service | |||
| Numbers, see 'ipn' Scheme URI Well-known Service Numbers for BPv7 | Numbers; see Section 9.3. This registry records the assignments of | |||
| registry (Section 9.3). This registry records the assignments of | Service Numbers for well-known services and also explicitly reserves | |||
| Service Numbers for well-known services, and also explicitly reserves | ranges for both experimentation and Private Use. | |||
| ranges for both experimentation and private use. | ||||
| 5.7. Administrative Endpoints | 5.7. Administrative Endpoints | |||
| The service identified by a Service Number of zero (0) MUST be | The service identified by a Service Number of zero (0) MUST be | |||
| interpreted as the Administrative Endpoint of the node, as defined in | interpreted as the Administrative Endpoint of the node, as defined in | |||
| Section 3.2 of [RFC9171]. | Section 3.2 of [RFC9171]. | |||
| Non-zero Service Numbers MUST NOT be used to identify the | Non-zero Service Numbers MUST NOT be used to identify the | |||
| Administrative Endpoint of a bundle node in an ipn EID. | Administrative Endpoint of a bundle node in an ipn EID. | |||
| 6. CBOR representation of ipn URIs with BPv7 | 6. CBOR Representation of ipn URIs with BPv7 | |||
| Section 4.2.5.1 of [RFC9171] requires that any URI scheme used to | Section 4.2.5.1 of [RFC9171] requires that any URI scheme used to | |||
| represent BPv7 EIDs MUST define how the scheme-specific part of the | represent BPv7 EIDs MUST define how the scheme-specific part of the | |||
| URI scheme is encoded with CBOR [RFC8949]. To meet this requirement, | URI scheme is encoded with Concise Binary Object Representation | |||
| this section describes the CBOR encoding and decoding approach for | (CBOR) [RFC8949]. To meet this requirement, this section describes | |||
| ipn EIDs. The formal definition of the CBOR representation is | the CBOR encoding and decoding approach for ipn EIDs. The formal | |||
| specified, see ipn URI Scheme CBOR syntax (Section 6.3). | definition of the CBOR representation is specified; see Section 6.3. | |||
| 6.1. ipn EID CBOR Encoding | 6.1. ipn EID CBOR Encoding | |||
| Generic URI approaches to encoding ipn EIDs are unlikely to be | Generic URI approaches to encoding ipn EIDs are unlikely to be | |||
| efficient because they do not consider the underlying structure of | efficient because they do not consider the underlying structure of | |||
| the ipn URI scheme. Since the creation of the ipn URI scheme was | the 'ipn' URI scheme. Since the creation of the 'ipn' URI scheme was | |||
| motivated by the need for concise identification and rapid | motivated by the need for concise identification and rapid | |||
| processing, the encoding of ipn EIDs maintains these properties. | processing, the encoding of ipn EIDs maintains these properties. | |||
| Fundamentally, [RFC9171] ipn EIDs are represented as a sequence of | Fundamentally, ipn EIDs from [RFC9171] are represented as a sequence | |||
| identifiers. In the text syntax, the numbers are separated with the | of identifiers. In the text syntax, the numbers are separated with | |||
| '.' delimiter; in CBOR, this ordered series of numbers can be | the '.' delimiter; in CBOR, this ordered series of numbers can be | |||
| represented by an array. Therefore, when encoding ipn EIDs for use | represented by an array. Therefore, when encoding ipn EIDs for use | |||
| with BPv7, the scheme-specific part of an ipn URI MUST be represented | with BPv7, the scheme-specific part of an ipn URI MUST be represented | |||
| as a CBOR array of either two (2) or three (3) elements. Each | as a CBOR array of either two (2) or three (3) elements. Each | |||
| element of the array MUST be encoded as a single CBOR unsigned | element of the array MUST be encoded as a single CBOR unsigned | |||
| integer. | integer. | |||
| The structure and mechanisms of the two-element and three-element | The structure and mechanisms of the two-element and three-element | |||
| encodings are described below, and examples of the different | encodings are described below, and examples of the different | |||
| encodings are provided in Appendix B (Appendix B). | encodings are provided in Appendix B. | |||
| 6.1.1. Two-Element Scheme-Specific Encoding | 6.1.1. Two-Element Scheme-Specific Encoding | |||
| In the two-element scheme-specific encoding of an ipn EID, the first | In the two-element scheme-specific encoding of an ipn EID, the first | |||
| element of the array is an encoding of the Fully-qualified Node | element of the array is an encoding of the FQNN (Section 3.3.1), and | |||
| Number (Section 3.3.1) and the second element of the array is the ipn | the second element of the array is the ipn EID Service Number. | |||
| EID Service Number. | ||||
| The FQNN encoding MUST be a 64-bit unsigned integer constructed in | The FQNN encoding MUST be a 64-bit unsigned integer constructed in | |||
| the following way: | the following way: | |||
| 1. The least significant 32 bits MUST represent the Node Number | 1. The least significant 32 bits MUST represent the Node Number | |||
| associated with the ipn EID. | associated with the ipn EID. | |||
| 2. The most significant 32 bits MUST represent the Allocator | 2. The most significant 32 bits MUST represent the Allocator | |||
| Identifier associated with the ipn EID. | Identifier associated with the ipn EID. | |||
| For example the ipn EID of ipn:977000.100.1 has an FQNN of | For example, the ipn EID of ipn:977000.100.1 has an FQNN of | |||
| (977000,100) which would be encoded as 0xEE868_00000064. The | (977000,100), which would be encoded as 0xEE868_00000064. The | |||
| resulting two-element array [0xEE868_00000064, 0x01] would be encoded | resulting two-element array [0xEE868_00000064, 0x01] would be encoded | |||
| in CBOR as the following 11 octet sequence: | in CBOR as the following 11-octet sequence: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 82 # 2 Element ipn EID scheme-specific encoding | 82 # 2-Element ipn EID encoding | |||
| 1B 000EE86800000064 # Fully-qualified Node Number | 1B 000EE86800000064 # Fully Qualified Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| The two-element scheme-specific encoding provides for backwards- | The two-element scheme-specific encoding provides backwards | |||
| compatibility with the encoding provided in Section 4.2.5.1.2 of | compatibility with the encoding provided in Section 4.2.5.1.2 of | |||
| [RFC9171]. When used in this way, the encoding of the FQNN replaces | [RFC9171]. When used in this way, the encoding of the FQNN replaces | |||
| the use of the "Node Number" that was specified in RFC9171. When the | the use of the Node Number that was specified in [RFC9171]. When the | |||
| Node Number is allocated by the Default Allocator (Section 3.2.2), | Node Number is allocated by the Default Allocator (Section 3.2.2), | |||
| the encoding of the FQNN and the RFC9171 encoding of the "Node | the encoding of the FQNN and the encoding of the Node Number from | |||
| Number" are identical. | [RFC9171] are identical. | |||
| 6.1.2. Three-Element Scheme-Specific Encoding | 6.1.2. Three-Element Scheme-Specific Encoding | |||
| In the three-element scheme-specific encoding of an ipn EID, the | In the three-element scheme-specific encoding of an ipn EID: | |||
| first element of the array is the Allocator Identifier, the second | ||||
| element of the array is the Node Number, and the third element of the | 1. the first element of the array is the Allocator Identifier, | |||
| array is the Service Number. | ||||
| 2. the second element of the array is the Node Number, and | ||||
| 3. the third element of the array is the Service Number. | ||||
| For example, the ipn EID of ipn:977000.100.1 would result in the | For example, the ipn EID of ipn:977000.100.1 would result in the | |||
| three-element array of [977000,100,1] which would be encoded in CBOR | three-element array of [977000,100,1], which would be encoded in CBOR | |||
| as the following 9 octet sequence: | as the following 9-octet sequence: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 83 # 3 Element ipn EID scheme-specific encoding | 83 # 3-Element ipn EID encoding | |||
| 1A 000EE868 # Allocator Identifier | 1A 000EE868 # Allocator Identifier | |||
| 64 # Node Number | 64 # Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| The three-element scheme-specific encoding allows for a more | The three-element scheme-specific encoding allows for a more | |||
| efficient representation of ipn EIDs using smaller Allocator | efficient representation of ipn EIDs using smaller Allocator | |||
| Identifiers, and implementations are RECOMMENDED to use this encoding | Identifiers, and implementations are RECOMMENDED to use this encoding | |||
| scheme, unless explicitly mitigating for interoperability issues, see | scheme unless explicitly mitigating for interoperability issues; see | |||
| Scheme Compatibility (Section 7.1). | Section 7.1. | |||
| When encoding an ipn EID using the Default Allocator (Section 3.2.2) | When encoding an ipn EID using the Default Allocator (Section 3.2.2) | |||
| with this encoding scheme, the first element of the array is the | with this encoding scheme, the first element of the array is the | |||
| value zero (0). In this case using the equivalent Two-Element | value zero (0). In this case, using the equivalent two-element | |||
| Scheme-Specific Encoding (Section 6.1.1) will result in a more | scheme-specific encoding (Section 6.1.1) will result in a more | |||
| concise CBOR representation, and therefore it is RECOMMENDED that | concise CBOR representation; therefore, it is RECOMMENDED that | |||
| implementations use that encoding instead. | implementations use that encoding instead. | |||
| 6.2. ipn EID CBOR Decoding | 6.2. ipn EID CBOR Decoding | |||
| The presence of different scheme-specific encodings does not | The presence of different scheme-specific encodings does not | |||
| introduce any decoding ambiguity. | introduce any decoding ambiguity. | |||
| An ipn EID CBOR decoder can reconstruct an ipn EID using the | An ipn EID CBOR decoder can reconstruct an ipn EID using the | |||
| following logic. In this description, the term enc_eid refers to the | following logic. In this description, the term enc_eid refers to the | |||
| CBOR encoded ipn EID, and the term ipn_eid refers to the decoded ipn | CBOR-encoded ipn EID, and the term ipn_eid refers to the decoded ipn | |||
| EID. | EID. | |||
| if enc_eid.len() == 3 | if enc_eid.len() == 3 | |||
| { | { | |||
| ipn_eid.allocator_identifier := enc_eid[0]; | ipn_eid.allocator_identifier := enc_eid[0]; | |||
| ipn_eid.node_number := enc_eid[1]; | ipn_eid.node_number := enc_eid[1]; | |||
| ipn_eid.service_number := enc_eid[2]; | ipn_eid.service_number := enc_eid[2]; | |||
| } | } | |||
| else if enc_eid.len() == 2 | else if enc_eid.len() == 2 | |||
| { | { | |||
| ipn_eid.allocator_identifier := enc_eid[0] >> 32; | ipn_eid.allocator_identifier := enc_eid[0] >> 32; | |||
| ipn_eid.node_number := enc_eid[0] & (2^32-1); | ipn_eid.node_number := enc_eid[0] & (2^(32-1)); | |||
| ipn_eid.service_number := enc_eid[1]; | ipn_eid.service_number := enc_eid[1]; | |||
| } | } | |||
| 6.3. ipn URI Scheme CBOR syntax | 6.3. 'ipn' URI Scheme CBOR Syntax | |||
| A BPv7 endpoint identified by an ipn URI, when encoded in Concise | When encoded in CBOR [RFC8949], a BPv7 endpoint identified by an ipn | |||
| Binary Object Representation (CBOR) [RFC8949], MUST comply with the | URI MUST comply with the following Concise Data Definition Language | |||
| following Concise Data Definition Language (CDDL) [RFC8610] | (CDDL) [RFC8610] specification: | |||
| specification: | ||||
| eid = $eid .within eid-structure | eid = $eid .within eid-structure | |||
| eid-structure = [ | eid-structure = [ | |||
| uri-code: uint, | uri-code: uint, | |||
| SSP: any | SSP: any | |||
| ] | ] | |||
| ; ... Syntax for other uri-code values defined in RFC9171 ... | ; ... Syntax for other uri-code values defined in RFC 9171 ... | |||
| $eid /= [ | $eid /= [ | |||
| uri-code: 2, | uri-code: 2, | |||
| SSP: ipn-ssp2 / ipn-ssp3 | SSP: ipn-ssp2 / ipn-ssp3 | |||
| ] | ] | |||
| ipn-ssp2 = [ | ipn-ssp2 = [ | |||
| fqnn: uint, ; packed value | fqnn: uint, ; packed value | |||
| service-number: uint | service-number: uint | |||
| ] | ] | |||
| ipn-ssp3 = [ | ipn-ssp3 = [ | |||
| allocator-identifier: uint .lt 4294967296, | allocator-identifier: uint .lt 4294967296, | |||
| node-number: uint .lt 4294967296, | node-number: uint .lt 4294967296, | |||
| service-number: uint | service-number: uint | |||
| ] | ] | |||
| Note: The node-number component will be the numeric representation of | Note: The node-number component will be the numeric representation of | |||
| the concatenation of the Allocator Identifier and Node Number when | the concatenation of the Allocator Identifier and Node Number when | |||
| the 2-element encoding scheme has been used. | the two-element encoding scheme has been used. | |||
| 6.4. ipn EID Matching | 6.4. ipn EID Matching | |||
| Regardless of whether the two-element or three-element scheme- | Regardless of whether the two-element or three-element scheme- | |||
| specific encoding is used, ipn EID matching MUST be performed on the | specific encoding is used, ipn EID matching MUST be performed on the | |||
| decoded EID information itself. Different encodings of the same ipn | decoded EID information itself. Different encodings of the same ipn | |||
| EID MUST be treated as equivalent when performing EID-specific | EID MUST be treated as equivalent when performing EID-specific | |||
| functions. | functions. | |||
| For example, the ipn EID of ipn:977000.100.1 can be represented as | For example, the ipn EID of ipn:977000.100.1 can be represented as | |||
| either the two-element encoding of 0x821B000EE8680000006401 or the | either the two-element encoding of 0x821B000EE8680000006401 or the | |||
| three-element encoding of 0x831A000EE868186401. While message | three-element encoding of 0x831A000EE868186401. While message | |||
| integrity and other syntax-based checks may treat these values | integrity and other syntax-based checks may treat these values | |||
| differently, any EID-based comparisons MUST treat these values the | differently, any EID-based comparisons MUST treat these values the | |||
| same - as representing the ipn EID ipn:977000.100.1. | same: as representing the ipn EID ipn:977000.100.1. | |||
| 7. Special Considerations | 7. Special Considerations | |||
| The ipn URI scheme provides a compact and hierarchical mechanism for | The 'ipn' URI scheme provides a compact and hierarchical mechanism | |||
| identifying services on network nodes. There is a significant amount | for identifying services on network nodes. There is a significant | |||
| of utility in the ipn URI scheme approach to identification. | amount of utility in the 'ipn' URI scheme approach to identification. | |||
| However, implementers should take into consideration the following | However, implementers should take into consideration the following | |||
| observations on the use of the ipn URI scheme, particularly in regard | observations on the use of the 'ipn' URI scheme, particularly in | |||
| to interoperability with implementations that pre-date this | regard to interoperability with implementations that pre-date this | |||
| specification. | specification. | |||
| 7.1. Scheme Compatibility | 7.1. Scheme Compatibility | |||
| The ipn scheme update that has been presented in this document | The 'ipn' URI scheme update that has been presented in this document | |||
| preserves backwards compatibility with any ipn URI scheme going back | preserves backwards compatibility with any 'ipn' URI scheme going | |||
| to the provisional definition of the ipn scheme in the experimental | back to the provisional definition of the 'ipn' scheme in the | |||
| Compressed Bundle Header Encoding [RFC6260] specification in 2011. | experimental specification "Compressed Bundle Header Encoding (CBHE)" | |||
| This means that any ipn URI that was valid prior to the publication | [RFC6260] in 2011. This means that any ipn URI that was valid prior | |||
| of this update remains a valid ipn URI. | to the publication of this update remains a valid ipn URI. | |||
| Similarly, the two-element scheme-specific encoding (Section 6.1.1) | Similarly, the two-element scheme-specific encoding (Section 6.1.1) | |||
| is also backwards-compatible with the encoding of ipn URIs provided | is also backwards compatible with the encoding of ipn URIs provided | |||
| in [RFC9171]. Any existing RFC9171-compliant implementation will | in [RFC9171]. Any existing implementation compliant with [RFC9171] | |||
| produce an ipn URI encoding in compliance with this specification. | will produce an ipn URI encoding in compliance with this | |||
| specification. | ||||
| The introduction of optional non-default Allocator Identifiers and a | The introduction of optional non-default Allocator Identifiers and a | |||
| three-element scheme-specific encoding does not make this ipn URI | three-element scheme-specific encoding does not make this ipn URI | |||
| scheme update forwards-compatible. Existing implementations for | scheme update forwards compatible. Existing implementations for | |||
| which support of this update is desired MUST be updated to be able to | which support of this update is desired MUST be updated to be able to | |||
| process non-default Allocator Identifiers and three-element scheme- | process non-default Allocator Identifiers and three-element scheme- | |||
| specific encodings. It is RECOMMENDED that BPv7 implementations | specific encodings. It is RECOMMENDED that BPv7 implementations | |||
| upgrade to process these new features to benefit from the scalability | upgrade to process these new features to benefit from the scalability | |||
| provided by Allocator Identifiers and the encoding efficiencies | provided by Allocator Identifiers and the encoding efficiencies | |||
| provided by the three-element encoding. | provided by the three-element encoding. | |||
| 7.2. CBOR Representation Interoperability | 7.2. CBOR Representation Interoperability | |||
| Care must be taken when deploying implementations that default to | Care must be taken when deploying implementations that default to | |||
| using the three-element encoding in networks that include | using the three-element encoding in networks that include | |||
| implementations that only support the two-element [RFC9171] encoding. | implementations that only support the two-element encoding [RFC9171]. | |||
| Because the existing implementations will reject bundles that use the | Because the existing implementations will reject bundles that use the | |||
| three-element encoding as malformed, correct forwarding of | three-element encoding as malformed, correct forwarding of | |||
| semantically valid bundles will fail. The used mitigation for this | semantically valid bundles will fail. The used mitigation for this | |||
| issue depends on the nature of the interoperability required by the | issue depends on the nature of the interoperability required by the | |||
| deployment. Techniques can include: | deployment. Techniques can include: | |||
| * A configuration option indicating when an implementation must use | * A configuration option indicating when an implementation must use | |||
| the two-element encoding for all ipn EIDs when processing bundles | the two-element encoding for all ipn EIDs when processing bundles | |||
| destined to a given endpoint: This would be suitable when adding a | destined to a given endpoint. This would be suitable when adding | |||
| newer implementation to a network of existing implementations. | a newer implementation to a network of existing implementations. | |||
| * Selective bundle encapsulation, whereby bundles that are known to | * Selective bundle encapsulation, whereby bundles that are known to | |||
| originate from implementations that do not support the three- | originate from implementations that do not support the three- | |||
| element encoding are tunnelled across regions of the network that | element encoding are tunneled across regions of the network that | |||
| require the three-element encoding: This would utilize specially | require the three-element encoding. This would utilize specially | |||
| configured 'gateway nodes' to perform the tunnel encapsulation and | configured "gateway nodes" to perform the tunnel encapsulation and | |||
| decapsulation, and would be suitable when joining an existing | decapsulation and would be suitable when joining an existing | |||
| network to a larger network. | network to a larger network. | |||
| Techniques that do not mitigate the problem include: | Techniques that do not mitigate the problem include: | |||
| * Heuristic determination of the correct encoding to use when | * Heuristic determination of the correct encoding to use when | |||
| responding to a bundle by examining the incoming bundle: It is not | responding to a bundle by examining the incoming bundle. It is | |||
| possible to determine whether the two-element encoding is required | not possible to determine whether the two-element encoding is | |||
| by the destination when composing a new bundle in response to the | required by the destination when composing a new bundle in | |||
| receipt of a bundle, such as a status report, because ipn EIDs | response to the receipt of a bundle, such as a status report, | |||
| assigned by the Default Allocator use the two-element encoding, | because ipn EIDs assigned by the Default Allocator use the two- | |||
| whether the implementation supports the three-element encoding or | element encoding, whether or not the implementation supports the | |||
| not. | three-element encoding. | |||
| * Transcoding bundles at intermediate nodes: [RFC9171] requires the | * Transcoding bundles at intermediate nodes. [RFC9171] requires the | |||
| bundle primary block be immutable, and even if ipn EIDs in the | bundle primary block to be immutable, and even if ipn EIDs in the | |||
| primary block do not require rewriting, other blocks including the | primary block do not require rewriting, other blocks including the | |||
| payload block may include ipn EIDs of which the transcoding node | payload block may include ipn EIDs of which the transcoding node | |||
| is unaware. Additionally, bundle blocks may be covered by | is unaware. Additionally, bundle blocks may be covered by bundle | |||
| [RFC9172] bundle security blocks or bundle integrity blocks, | security blocks or bundle integrity blocks [RFC9172], making them | |||
| making them immutable. | immutable. | |||
| 7.3. Text Representation Compatibility | 7.3. Text Representation Compatibility | |||
| The textual representation of ipn URIs is not forwards-compatible | The textual representation of ipn URIs is not forwards compatible | |||
| with [RFC9171], therefore care must be taken when deploying | with [RFC9171]. Therefore, care must be taken when deploying | |||
| implementations or tooling that use the textural representation of | implementations or tooling that use the textural representation of | |||
| ipn URIs and support for non-default Allocator Identifiers is | ipn URIs and support for non-default Allocator Identifiers is | |||
| required. For example Section 4.6 of [RFC9174] specifies that the | required. For example, Section 4.6 of [RFC9174] specifies that the | |||
| Session Initialization message "...SHALL contain the UTF-8 encoded | session initialization message "...SHALL contain the UTF-8 encoded | |||
| node ID of the entity that sent the SESS_INIT message." In such | node ID of the entity that sent the SESS_INIT message." In such | |||
| cases the considerations that apply to the use of the 3-element CBOR | cases, the considerations that apply to the use of the three-element | |||
| encoding also apply to the text representation when a non-default | CBOR encoding also apply to the text representation when a non- | |||
| Allocator Identifier is present. | default Allocator Identifier is present. | |||
| 7.4. Bundle Protocol Version 6 Compatibility | 7.4. Bundle Protocol Version 6 Compatibility | |||
| This document updates the use of ipn EIDs for BPv7, however the ipn | This document updates the use of ipn EIDs for BPv7; however, the | |||
| URI scheme was originally defined for use with version 6 of the | 'ipn' URI scheme was originally defined for use with BPv6. This | |||
| Bundle Protocol (BPv6). This document does not update any of the | document does not update any of the behaviors, wire-formats, or | |||
| behaviors, wire-formats or mechanisms of BPv6. Therefore, ipn EIDs | mechanisms of BPv6. Therefore, ipn EIDs with non-default Allocator | |||
| with non-default Allocator Identifiers MUST NOT be used with BPv6, | Identifiers MUST NOT be used with BPv6, and the Allocator Identifier | |||
| and the Allocator Identifier prefix MUST be omitted from any textural | prefix MUST be omitted from any textural representation. It should | |||
| representation. It should be noted that BPv6 has no concept of | be noted that BPv6 has no concept of LocalNode EIDs and will | |||
| LocalNode EIDs, and will therefore treat such EIDs as routable. | therefore treat such EIDs as routable. | |||
| 7.5. Late Binding | 7.5. Late Binding | |||
| [RFC9171] mandates the concept of "late binding" of an EID, whereby | [RFC9171] mandates the concept of the "late binding" of an EID, | |||
| the address of the destination of a bundle is resolved from its | whereby the address of the destination of a bundle is resolved from | |||
| identifier hop-by-hop as it transits a BPv7 network. This per-hop | its identifier hop-by-hop as it transits a BPv7 network. This per- | |||
| binding of identifiers to addresses underlines the fact that EIDs are | hop binding of identifiers to addresses underlines the fact that EIDs | |||
| purely names, and should not carry any implicit or explicit | are purely names and should not carry any implicit or explicit | |||
| information concerning the current location or reachability of an | information concerning the current location or reachability of an | |||
| identified node and service. This removes the need to rename a node | identified node and service. This removes the need to rename a node | |||
| as its location changes. | as its location changes. | |||
| The concept of "late binding" is preserved in this ipn URI scheme. | The concept of late binding is preserved in this 'ipn' URI scheme. | |||
| Elements of an ipn URI MUST NOT be regarded as carrying information | Elements of an ipn URI MUST NOT be regarded as carrying information | |||
| relating to location, reachability, or other addressing/routing | relating to location, reachability, or other addressing/routing | |||
| concern. | concerns. | |||
| An example of incorrect behavior would be to assume that a given | An example of incorrect behavior would be to assume that a given | |||
| Allocator assigns Node Numbers derived from link-layer addresses and | Allocator assigns Node Numbers derived from link-layer addresses and | |||
| to interpret the Node Number component of an ipn URI directly as a | to interpret the Node Number component of an ipn URI directly as a | |||
| link-layer address. No matter the mechanism an Allocator uses for | link-layer address. No matter the mechanism an Allocator uses for | |||
| the assignment of Node Numbers, they remain just numbers, without | the assignment of Node Numbers, they remain just numbers, without | |||
| additional meaning. | additional meaning. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| This section updates the security considerations from | This section updates the security considerations from | |||
| Section 4.2.5.1.2 of [RFC9171] to account for the inclusion of | Section 4.2.5.1.2 of [RFC9171] to account for the inclusion of | |||
| Allocator Identifiers in the ipn URI scheme when used with BPv7. | Allocator Identifiers in the 'ipn' URI scheme when used with BPv7. | |||
| 8.1. Reliability and consistency | 8.1. Reliability and Consistency | |||
| None of the BPv7 endpoints identified by ipn EIDs are guaranteed to | None of the BPv7 endpoints identified by ipn EIDs are guaranteed to | |||
| be reachable at any time, and the identity of the processing entities | be reachable at any time, and the identity of the processing entities | |||
| operating on those endpoints is never guaranteed by the Bundle | operating on those endpoints is never guaranteed by the Bundle | |||
| Protocol itself. Verification of the signature provided by the Block | Protocol itself. Verification of the signature provided by the Block | |||
| Integrity Block targeting the bundle's primary block, as defined by | Integrity Block (BIB) targeting the bundle's primary block, as | |||
| Bundle Protocol Security [RFC9172], is required for this purpose. | defined by "Bundle Protocol Security (BPSec)" [RFC9172], is required | |||
| for this purpose. | ||||
| 8.2. Malicious construction | 8.2. Malicious Construction | |||
| Malicious construction of a conformant ipn URI is limited to the | Malicious construction of a conformant ipn URI is limited to the | |||
| malicious selection of Allocator Identifiers, Node Numbers, and | malicious selection of Allocator Identifiers, Node Numbers, and | |||
| Service Numbers. That is, a maliciously constructed ipn EID could be | Service Numbers. That is, a maliciously constructed ipn EID could be | |||
| used to direct a bundle to an endpoint that might be damaged by the | used to direct a bundle to an endpoint that might be damaged by the | |||
| arrival of that bundle or, alternatively, to declare a false source | arrival of that bundle or, alternatively, to declare a false source | |||
| for a bundle and thereby cause incorrect processing at a node that | for a bundle and thereby cause incorrect processing at a node that | |||
| receives the bundle. In both cases (and indeed in all bundle | receives the bundle. In both cases (and indeed in all bundle | |||
| processing), the node that receives a bundle should verify its | processing), the node that receives a bundle should verify its | |||
| authenticity and validity before operating on it in any way, such as | authenticity and validity before operating on it in any way, such as | |||
| the use of BPSec [RFC9172], and TCPCLv4 with TLS [RFC9174]. | with the use of BPSec [RFC9172] and TCP Convergence Layer version 4 | |||
| (TCPCLv4) with TLS [RFC9174]. | ||||
| 8.3. Back-end transcoding | 8.3. Back-End Transcoding | |||
| The limited expressiveness of URIs of the ipn scheme effectively | The limited expressiveness of URIs of the 'ipn' scheme effectively | |||
| eliminates the possibility of threat due to errors in back-end | eliminates the possibility of threats due to errors in back-end | |||
| transcoding. | transcoding. | |||
| 8.4. Local and Private Use ipn EIDs | 8.4. Local and Private Use ipn EIDs | |||
| Both LocalNode (Section 3.4.2) and Private Use (Section 3.4.3) ipn | Both LocalNode (Section 3.4.2) and Private Use (Section 3.4.3) ipn | |||
| URIs present a risk to the stability of deployed BPv7 networks. If | URIs present a risk to the stability of deployed BPv7 networks. If | |||
| either type of ipn URI are allowed to propagate beyond the domain in | either type of ipn URI is allowed to propagate beyond the domain in | |||
| which they are valid, then the required uniqueness of ipn URIs no | which they are valid, then the required uniqueness of ipn URIs no | |||
| longer holds, and this fact can be abused by a malicious node to | longer holds, and this fact can be abused by a malicious node to | |||
| prevent the correct functioning of the network as a whole. | prevent the correct functioning of the network as a whole. | |||
| See LocalNode ipn EIDs (Section 5.4) and Private Use ipn EIDs | See Sections 5.4 and 5.5 for required behaviors to mitigate against | |||
| (Section 5.5) for required behaviors to mitigate against this form of | this form of abuse. | |||
| abuse. | ||||
| 8.5. Sensitive information | 8.5. Sensitive Information | |||
| Because ipn URIs are used only to represent the numeric identities of | Because ipn URIs are used only to represent the numeric identities of | |||
| resources, the risk of disclosure of sensitive information due to | resources, the risk of disclosure of sensitive information due to | |||
| interception of these URIs is minimal. Examination of ipn URIs could | interception of these URIs is minimal. Examination of ipn URIs could | |||
| be used to support traffic analysis; where traffic analysis is a | be used to support traffic analysis; where traffic analysis is a | |||
| plausible danger, bundles should be conveyed by secure convergence- | plausible danger, bundles should be conveyed by secure convergence- | |||
| layer protocols that do not expose endpoint IDs, such as TCPCLv4 | layer protocols that do not expose endpoint IDs, such as TCPCLv4 | |||
| [RFC9174]. | [RFC9174]. | |||
| 8.6. Semantic attacks | 8.6. Semantic Attacks | |||
| The simplicity of ipn URI scheme syntax minimizes the possibility of | The simplicity of the 'ipn' URI scheme syntax minimizes the | |||
| misinterpretation of a URI by a human user. | possibility of misinterpretation of a URI by a human user. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| The following sections detail requests to IANA for the creation of | The following sections detail the creation of two new IANA registries | |||
| two new registries, and the renaming of an existing registry. | and the renaming of an existing IANA registry under the "Uniform | |||
| Resource Identifier (URI) Schemes" registry group. | ||||
| IANA is requested to update the reference to the 'ipn' scheme in the | ||||
| "Uniform Resource Identifier (URI) Schemes" registry to this | ||||
| document. | ||||
| IANA is requested to add the new registries, and relocate the | IANA has also updated the reference for the 'ipn' scheme to this | |||
| existing registries under the "Uniform Resource Identifier (URI) | document in the "Uniform Resource Identifier (URI) Schemes" registry. | |||
| Schemes" protocol registry. | ||||
| 9.1. 'ipn' Scheme URI Allocator Identifiers registry | 9.1. 'ipn' Scheme URI Allocator Identifiers Registry | |||
| IANA is requested to create a new registry entitled "'ipn' Scheme URI | IANA has created a new registry titled "'ipn' Scheme URI Allocator | |||
| Allocator Identifiers". The registration policy for this registry, | Identifiers". Using terms defined in [RFC8126], the registration | |||
| using terms defined in [RFC8126], is: | procedures for this registry are: | |||
| +========================+============================+ | +========================+==============+==================+ | |||
| | Range | Registration Policy | | | Range | Registration | Note | | |||
| +========================+============================+ | | | Procedures | | | |||
| | 0..0xFFFF | Expert Review, Single | | +========================+==============+==================+ | |||
| | | Allocator Identifiers only | | | 0..0xFFFF | Expert | Single Allocator | | |||
| +------------------------+----------------------------+ | | | Review | Identifiers only | | |||
| | 0x10000..0x3FFFFFFF | Expert Review | | +------------------------+--------------+------------------+ | |||
| +------------------------+----------------------------+ | | 0x10000..0x3FFFFFFF | Expert | | | |||
| | 0x40000000..0x7FFFFFFF | Experimental Use | | | | Review | | | |||
| +------------------------+----------------------------+ | +------------------------+--------------+------------------+ | |||
| | 0x80000000..0xFFFFFFFF | Reserved, Future Expansion | | | 0x40000000..0x7FFFFFFF | Experimental | | | |||
| +------------------------+----------------------------+ | | | Use | | | |||
| | >= 2^32 | Reserved | | +------------------------+--------------+------------------+ | |||
| +------------------------+----------------------------+ | | 0x80000000..0xFFFFFFFF | Reserved | Future Expansion | | |||
| +------------------------+--------------+------------------+ | ||||
| | >=0x100000000 | Reserved | | | ||||
| +------------------------+--------------+------------------+ | ||||
| Table 2: 'ipn' Scheme URI Numbering Allocator | Table 2: Registration Procedures for the 'ipn' Scheme | |||
| Identifiers registration policies | URI Allocator Identifiers Registry | |||
| Each entry in this registry associates one or more Allocator | Each entry in this registry associates one or more Allocator | |||
| Identifiers with a single organization. Within the registry, the | Identifiers with a single organization. Within the registry, the | |||
| organization is identified using the "Name" and "Point of Contact" | organization is identified using the "Name" and "Change Controller" | |||
| fields. It is expected that each identified organization publishes | fields. It is expected that each identified organization will | |||
| some listing of allocated node numbers - the pointer to which is | publish some listing of allocated Node Numbers, the pointer to which | |||
| listed in the "Reference" field of the registry. | is listed in the "Reference" field of the registry. | |||
| Note that the “Single Allocator Identifiers only” language in | Note that the "Single Allocator Identifiers only" language in the | |||
| Registration Policy for this registry indicates that, within the | registration procedure for this registry indicates that, within the | |||
| indicated range, the allocation of a sequence of consecutive | indicated range, the allocation of a sequence of consecutive | |||
| Allocator identifiers to a single organization is prohibited. IANA | Allocator Identifiers to a single organization is prohibited. | |||
| is requested to note this in the registration policy for this | ||||
| registry. | ||||
| The initial values for the registry are: | The initial values in the registry are: | |||
| +=================+========+=========+========+===========+=========+ | +=========+=============+===============+======+=========+==========+ | |||
| | Name | Range | Range | Range | Reference | Point | | |Name |Range (dec) |Range (hex) |Range |Reference|Change | | |||
| | | (dec) | (hex) | Length | | of | | | | | |Length| |Controller| | |||
| | | | | (Bits) | | Contact | | | | | |(Bits)| | | | |||
| +=================+========+=========+========+===========+=========+ | +=========+=============+===============+======+=========+==========+ | |||
| | Default | 0 | 0x0 | 0 | This | IANA | | |Default |0 |0x0 |0 |RFC 9758,|IETF | | |||
| | Allocator | | | | document | | | |Allocator| | | |Section | | | |||
| | (Section | | | | | | | | | | | |3.2.2 | | | |||
| | 3.2.2) | | | | | | | +---------+-------------+---------------+------+---------+----------+ | |||
| +-----------------+--------+---------+--------+-----------+---------+ | |Example |974848-978943|0xEE000-0xEEFFF|12 |RFC 9758 |IETF | | |||
| | Example | 974848 | 0xEE000 | 12 | This | IANA | | |Range | | |bits | | | | |||
| | Range | .. | .. | bits | document | | | +---------+-------------+---------------+------+---------+----------+ | |||
| | | 978943 | 0xEEFFF | | | | | ||||
| +-----------------+--------+---------+--------+-----------+---------+ | ||||
| Table 3: 'ipn' Scheme URI Allocator Identifiers initial values | Table 3: Initial Values in the 'ipn' Scheme URI Allocator | |||
| Identifiers Registry | ||||
| The "Example Range" is assigned for use in examples in documentation | The "Example Range" is assigned for use in examples in documentation | |||
| and sample code. | and sample code. | |||
| 9.1.1. Guidance for Designated Experts | 9.1.1. Guidance for Designated Experts | |||
| Due to the nature of the CBOR encoding of unsigned integers used for | Due to the nature of the CBOR encoding of unsigned integers used for | |||
| Allocator Identifiers with BPv7, Allocator Identifiers with a low | Allocator Identifiers with BPv7, Allocator Identifiers with a low | |||
| value number are encoded more efficiently than larger numbers. This | value number are encoded more efficiently than larger numbers. This | |||
| makes low value Allocator Identifiers more desirable than larger | makes low value Allocator Identifiers more desirable than larger | |||
| Allocator Identifiers, and therefore care must be taken when | Allocator Identifiers; therefore, care must be taken when assigning | |||
| assigning Allocator Identifier ranges to ensure that a single | Allocator Identifier ranges to ensure that a single applicant is not | |||
| applicant is not granted a large swathe of highly desirable numbers | granted a large swathe of highly desirable numbers at the expense of | |||
| at the expense of other applicants. To this end, Designated Experts | other applicants. To this end, designated experts are strongly | |||
| are strongly recommended to familiarize themselves with the CBOR | recommended to familiarize themselves with the CBOR encoding of | |||
| encoding of unsigned integers in [RFC8949]. | unsigned integers in [RFC8949]. | |||
| 9.2. 'ipn' Scheme URI Default Allocator Node Numbers registry | 9.2. 'ipn' Scheme URI Default Allocator Node Numbers Registry | |||
| IANA is requested to rename the "CBHE Node Numbers" registry defined | IANA has renamed the "CBHE Node Numbers" registry (defined in | |||
| in Section 3.2.1 of [RFC7116] to the "'ipn' Scheme URI Default | Section 3.2.1 of [RFC7116]) to the "'ipn' Scheme URI Default | |||
| Allocator Node Numbers" registry. | Allocator Node Numbers" registry and moved it to the "Uniform | |||
| Resource Identifier (URI) Schemes" registry group. IANA has added | ||||
| the following note to the "CBHE Node Numbers" registry: | ||||
| The registration policy for this registry, using terms defined in | | Note: Renamed "CBHE Node Numbers" as "'ipn' Scheme URI Default | |||
| [RFC8126], is updated to be: | | Allocator Node Numbers" and moved it to | |||
| | <https://www.iana.org/assignments/uri-schemes> per RFC 9758. | ||||
| +====================+=============================================+ | Using terms defined in [RFC8126], the registration procedures for | |||
| | Range | Registration Policy | | this registry are: | |||
| +====================+=============================================+ | ||||
| | 0 | Reserved for the Null ipn URI (Section 3.1) | | ||||
| +--------------------+---------------------------------------------+ | ||||
| | 1..0x3FFF | Private Use | | ||||
| +--------------------+---------------------------------------------+ | ||||
| | 0x4000..0xFFFFFFFE | Expert Review | | ||||
| +--------------------+---------------------------------------------+ | ||||
| | 0xFFFFFFFF | Reserved for LocalNode ipn URIs | | ||||
| | | (Section 3.4.2) | | ||||
| +--------------------+---------------------------------------------+ | ||||
| | >= 2^32 | Invalid | | ||||
| +--------------------+---------------------------------------------+ | ||||
| Table 4: 'ipn' Scheme URI Default Allocator Node Numbers | +====================+=========================+ | |||
| registration policies | | Range | Registration Procedures | | |||
| +====================+=========================+ | ||||
| | 1..0x3FFF | Private Use | | ||||
| +--------------------+-------------------------+ | ||||
| | 0x4000..0xFFFFFFFE | Expert Review | | ||||
| +--------------------+-------------------------+ | ||||
| | >=0x100000000 | Invalid | | ||||
| +--------------------+-------------------------+ | ||||
| As IANA is requested to only rename the registry, all existing | Table 4: Registration Procedures for the | |||
| registrations will remain. | 'ipn' Scheme URI Default Allocator Node | |||
| Numbers Registry | ||||
| 9.3. 'ipn' Scheme URI Well-known Service Numbers for BPv7 registry | IANA has registered the following values in the "'ipn' Scheme URI | |||
| Default Allocator Node Numbers" registry: | ||||
| IANA is requested to create a new registry entitled "'ipn' Scheme URI | +============+===============================+===================+ | |||
| Well-known Service Numbers for BPv7" registry. The registration | | Value | Description | Reference | | |||
| policy for this registry, using terms defined in [RFC8126], is: | +============+===============================+===================+ | |||
| | 0 | Reserved for the Null ipn URI | [RFC7116] and RFC | | ||||
| | | | 9758, Section 3.1 | | ||||
| +------------+-------------------------------+-------------------+ | ||||
| | 4294967295 | Reserved for LocalNode ipn | RFC 9758, | | ||||
| | | URIs | Section 3.4.2 | | ||||
| +------------+-------------------------------+-------------------+ | ||||
| +=====================+=================================+ | Table 5: New Values in the 'ipn' Scheme URI Default Allocator | |||
| | Range | Registration Policy | | Node Numbers Registry | |||
| +=====================+=================================+ | ||||
| | 0 | Reserved for the Administrative | | ||||
| | | Endpoint (Section 5.7) | | ||||
| +---------------------+---------------------------------+ | ||||
| | 1..127 | Private Use | | ||||
| +---------------------+---------------------------------+ | ||||
| | 128..255 | Standards Action | | ||||
| +---------------------+---------------------------------+ | ||||
| | 0x0100..0x7FFF | Private Use | | ||||
| +---------------------+---------------------------------+ | ||||
| | 0x8000..0xFFFF | Specification Required | | ||||
| +---------------------+---------------------------------+ | ||||
| | 0x10000..0xFFFFFFFF | Private Use | | ||||
| +---------------------+---------------------------------+ | ||||
| | >= 2^32 | Reserved for future expansion | | ||||
| +---------------------+---------------------------------+ | ||||
| Table 5: 'ipn' Scheme URI Well-known Service Numbers | As IANA has only renamed the registry, all existing registrations | |||
| for BPv7 registration policies | will remain. | |||
| The initial values for the registry are: | 9.3. 'ipn' Scheme URI Well-Known Service Numbers for BPv7 Registry | |||
| +===========+========================+===============+ | IANA has created a new registry titled "'ipn' Scheme URI Well-Known | |||
| | Value | Description | Reference | | Service Numbers for BPv7". Using terms defined in [RFC8126], the | |||
| +===========+========================+===============+ | registration procedures for this registry are: | |||
| | 0 | The Administrative | [RFC9171], | | ||||
| | | Endpoint (Section 5.7) | This document | | ||||
| +-----------+------------------------+---------------+ | ||||
| | 0xEEE0 .. | Example Range | This document | | ||||
| | 0xEEEF | | | | ||||
| +-----------+------------------------+---------------+ | ||||
| Table 6: 'ipn' Scheme URI Well-known Service | +=====================+===============================+ | |||
| Numbers for BPv7 initial values | | Range | Registration Procedures | | |||
| +=====================+===============================+ | ||||
| | 1..127 | Private Use | | ||||
| +---------------------+-------------------------------+ | ||||
| | 128..255 | Standards Action | | ||||
| +---------------------+-------------------------------+ | ||||
| | 0x0100..0x7FFF | Private Use | | ||||
| +---------------------+-------------------------------+ | ||||
| | 0x8000..0xFFFF | Specification Required | | ||||
| +---------------------+-------------------------------+ | ||||
| | 0x10000..0xFFFFFFFF | Private Use | | ||||
| +---------------------+-------------------------------+ | ||||
| | >=0x100000000 | Reserved for future expansion | | ||||
| +---------------------+-------------------------------+ | ||||
| Table 6: Registration Procedures for the 'ipn' | ||||
| Scheme URI Well-Known Service Numbers for BPv7 | ||||
| Registry | ||||
| The initial values in the registry are: | ||||
| +================+=============================+===================+ | ||||
| | Value | Description | Reference | | ||||
| +================+=============================+===================+ | ||||
| | 0 | The Administrative Endpoint | [RFC9171] and RFC | | ||||
| | | | 9758, Section 5.7 | | ||||
| +----------------+-----------------------------+-------------------+ | ||||
| | 0xEEE0..0xEEEF | Example Range | RFC 9758 | | ||||
| +----------------+-----------------------------+-------------------+ | ||||
| Table 7: Initial Values in the 'ipn' Scheme URI Well-Known | ||||
| Service Numbers for BPv7 Registry | ||||
| The "Example Range" is assigned for use in examples in documentation | The "Example Range" is assigned for use in examples in documentation | |||
| and sample code. | and sample code. | |||
| 9.3.1. Guidance for Designated Experts | 9.3.1. Guidance for Designated Experts | |||
| This registry is intended to record the default Service Numbers for | This registry is intended to record the default Service Numbers for | |||
| well-known, interoperable services available and of use to the entire | well-known, interoperable services that are available and of use to | |||
| BPv7 community, hence all ranges not marked for Private Use MUST have | the entire BPv7 community; hence, all ranges not marked for Private | |||
| a corresponding publicly available specification describing how one | Use MUST have a corresponding publicly available specification | |||
| interfaces with the service. | describing how one interfaces with the service. | |||
| Services that are specific to a particular deployment or co-operation | Services that are specific to a particular deployment or co-operation | |||
| may require a registry to reduce administrative burden, but do not | may require a registry to reduce administrative burden, but do not | |||
| require an entry in this registry. | require an entry in this registry. | |||
| 10. References | 10. References | |||
| 10.1. Normative References | 10.1. Normative References | |||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
| <https://www.rfc-editor.org/rfc/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
| [RFC6260] Burleigh, S., "Compressed Bundle Header Encoding (CBHE)", | [RFC6260] Burleigh, S., "Compressed Bundle Header Encoding (CBHE)", | |||
| RFC 6260, DOI 10.17487/RFC6260, May 2011, | RFC 6260, DOI 10.17487/RFC6260, May 2011, | |||
| <https://www.rfc-editor.org/rfc/rfc6260>. | <https://www.rfc-editor.org/info/rfc6260>. | |||
| [RFC7116] Scott, K. and M. Blanchet, "Licklider Transmission | [RFC7116] Scott, K. and M. Blanchet, "Licklider Transmission | |||
| Protocol (LTP), Compressed Bundle Header Encoding (CBHE), | Protocol (LTP), Compressed Bundle Header Encoding (CBHE), | |||
| and Bundle Protocol IANA Registries", RFC 7116, | and Bundle Protocol IANA Registries", RFC 7116, | |||
| DOI 10.17487/RFC7116, February 2014, | DOI 10.17487/RFC7116, February 2014, | |||
| <https://www.rfc-editor.org/rfc/rfc7116>. | <https://www.rfc-editor.org/info/rfc7116>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
| Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
| <https://www.rfc-editor.org/rfc/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
| [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | [RFC8610] Birkholz, H., Vigano, C., and C. Bormann, "Concise Data | |||
| Definition Language (CDDL): A Notational Convention to | Definition Language (CDDL): A Notational Convention to | |||
| Express Concise Binary Object Representation (CBOR) and | Express Concise Binary Object Representation (CBOR) and | |||
| JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | JSON Data Structures", RFC 8610, DOI 10.17487/RFC8610, | |||
| June 2019, <https://www.rfc-editor.org/rfc/rfc8610>. | June 2019, <https://www.rfc-editor.org/info/rfc8610>. | |||
| [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | [RFC8949] Bormann, C. and P. Hoffman, "Concise Binary Object | |||
| Representation (CBOR)", STD 94, RFC 8949, | Representation (CBOR)", STD 94, RFC 8949, | |||
| DOI 10.17487/RFC8949, December 2020, | DOI 10.17487/RFC8949, December 2020, | |||
| <https://www.rfc-editor.org/rfc/rfc8949>. | <https://www.rfc-editor.org/info/rfc8949>. | |||
| [RFC9171] Burleigh, S., Fall, K., and E. Birrane, III, "Bundle | [RFC9171] Burleigh, S., Fall, K., and E. Birrane, III, "Bundle | |||
| Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, | Protocol Version 7", RFC 9171, DOI 10.17487/RFC9171, | |||
| January 2022, <https://www.rfc-editor.org/rfc/rfc9171>. | January 2022, <https://www.rfc-editor.org/info/rfc9171>. | |||
| 10.2. Informative References | 10.2. Informative References | |||
| [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. | [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G. | |||
| J., and E. Lear, "Address Allocation for Private | J., and E. Lear, "Address Allocation for Private | |||
| Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, | Internets", BCP 5, RFC 1918, DOI 10.17487/RFC1918, | |||
| February 1996, <https://www.rfc-editor.org/rfc/rfc1918>. | February 1996, <https://www.rfc-editor.org/info/rfc1918>. | |||
| [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, | |||
| <https://www.rfc-editor.org/rfc/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
| [RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing | [RFC4632] Fuller, V. and T. Li, "Classless Inter-domain Routing | |||
| (CIDR): The Internet Address Assignment and Aggregation | (CIDR): The Internet Address Assignment and Aggregation | |||
| Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August | Plan", BCP 122, RFC 4632, DOI 10.17487/RFC4632, August | |||
| 2006, <https://www.rfc-editor.org/rfc/rfc4632>. | 2006, <https://www.rfc-editor.org/info/rfc4632>. | |||
| [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol | [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol | |||
| Specification", RFC 5050, DOI 10.17487/RFC5050, November | Specification", RFC 5050, DOI 10.17487/RFC5050, November | |||
| 2007, <https://www.rfc-editor.org/rfc/rfc5050>. | 2007, <https://www.rfc-editor.org/info/rfc5050>. | |||
| [RFC9172] Birrane, III, E. and K. McKeever, "Bundle Protocol | [RFC9172] Birrane, III, E. and K. McKeever, "Bundle Protocol | |||
| Security (BPSec)", RFC 9172, DOI 10.17487/RFC9172, January | Security (BPSec)", RFC 9172, DOI 10.17487/RFC9172, January | |||
| 2022, <https://www.rfc-editor.org/rfc/rfc9172>. | 2022, <https://www.rfc-editor.org/info/rfc9172>. | |||
| [RFC9174] Sipos, B., Demmer, M., Ott, J., and S. Perreault, "Delay- | [RFC9174] Sipos, B., Demmer, M., Ott, J., and S. Perreault, "Delay- | |||
| Tolerant Networking TCP Convergence-Layer Protocol Version | Tolerant Networking TCP Convergence-Layer Protocol Version | |||
| 4", RFC 9174, DOI 10.17487/RFC9174, January 2022, | 4", RFC 9174, DOI 10.17487/RFC9174, January 2022, | |||
| <https://www.rfc-editor.org/rfc/rfc9174>. | <https://www.rfc-editor.org/info/rfc9174>. | |||
| Appendix A. ipn URI Scheme Text Representation Examples | Appendix A. 'ipn' URI Scheme Text Representation Examples | |||
| This section provides some example ipn URIs in their textual | This section provides some example ipn URIs in their textual | |||
| representation. | representation. | |||
| A.1. Using the Default Allocator | A.1. Using the Default Allocator | |||
| Consider the ipn URI identifying Service Number 2 on Node Number 1 | Consider the ipn URI identifying Service Number 2 on Node Number 1 | |||
| allocated by the Default Allocator (Section 3.2.2) (0). | allocated by the Default Allocator (0) (Section 3.2.2). | |||
| The recommended seven character representation of this URI would be | The recommended seven-character representation of this URI would be | |||
| as follows: | as follows: | |||
| ipn:1.2 | ipn:1.2 | |||
| The nine character representation of this URI, with explicit the | ||||
| The nine-character representation of this URI, with the explicit | ||||
| Allocator Identifier, would be as follows: | Allocator Identifier, would be as follows: | |||
| ipn:0.1.2 | ipn:0.1.2 | |||
| A.2. Using a non-default Allocator | A.2. Using a Non-Default Allocator | |||
| Consider the ipn URI identifying Service Number 3 on Node Number 1 | Consider the ipn URI identifying Service Number 3 on Node Number 1 | |||
| allocated by Allocator 977000. | allocated by Allocator 977000. | |||
| The 14 character representation of this URI would be as follows: | The 14-character representation of this URI would be as follows: | |||
| ipn:977000.1.3 | ipn:977000.1.3 | |||
| A.3. The Null ipn URI | A.3. The Null ipn URI | |||
| The Null ipn URI (Section 3.1) is represented as: | The Null ipn URI (Section 3.1) is represented as: | |||
| ipn:0.0 | ipn:0.0 | |||
| A.4. A LocalNode ipn URI | A.4. The LocalNode ipn URI | |||
| Consider the ipn URI identifying Service Number 7 on the local node. | Consider the ipn URI identifying Service Number 7 on the local node. | |||
| The recommended seven character representation of this URI would be | The recommended seven-character representation of this URI would be | |||
| as follows: | as follows: | |||
| ipn:!.7 | ipn:!.7 | |||
| The numeric 16 character representation of this URI would be as | The numeric 16-character representation of this URI would be as | |||
| follows: | follows: | |||
| ipn:4294967295.7 | ipn:4294967295.7 | |||
| Appendix B. ipn URI Scheme CBOR Encoding Examples | Appendix B. 'ipn' URI Scheme CBOR Encoding Examples | |||
| This section provides some example CBOR encodings of ipn EIDs. | This section provides some example CBOR encodings of ipn EIDs. | |||
| B.1. Using the Default Allocator | B.1. Using the Default Allocator | |||
| Consider the ipn EID ipn:1.1. This textual representation of an ipn | Consider the ipn EID ipn:1.1. This textual representation of an ipn | |||
| EID identifies Service Number 1 on Node Number 1 allocated by the | EID identifies Service Number 1 on Node Number 1 allocated by the | |||
| Default Allocator (Section 3.2.2) (0). | Default Allocator (0) (Section 3.2.2). | |||
| The recommended five octet encoding of this EID using the two-element | The recommended five-octet encoding of this EID using the two-element | |||
| scheme-specific encoding would be as follows: | scheme-specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 82 # 2 Element ipn EID scheme-specific encoding | 82 # 2-Element ipn EID encoding | |||
| 01 # Node Number | 01 # Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| The six octet encoding of this EID using the three-element scheme- | The six-octet encoding of this EID using the three-element scheme- | |||
| specific encoding would be as follows: | specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 83 # 3 Element ipn EID scheme-specific encoding | 83 # 3-Element ipn EID encoding | |||
| 00 # Default Allocator | 00 # Default Allocator | |||
| 01 # Node Number | 01 # Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| B.2. Using a non-default Allocator | B.2. Using a Non-Default Allocator | |||
| Consider the ipn EID ipn:977000.1.1. This textual representation of | Consider the ipn EID ipn:977000.1.1. This textual representation of | |||
| an ipn EID identifies Service Number 1 on Node Number 1 allocated by | an ipn EID identifies Service Number 1 on Node Number 1 allocated by | |||
| Allocator 977000. | Allocator 977000. | |||
| The recommended 10 octet encoding of this EID using the three-element | The recommended 10-octet encoding of this EID using the three-element | |||
| scheme-specific encoding would be as follows: | scheme-specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 83 # 3 Element ipn EID scheme-specific encoding | 83 # 3-Element ipn EID encoding | |||
| 1A 000EE868 # Allocator Identifier | 1A 000EE868 # Allocator Identifier | |||
| 01 # Node Number | 01 # Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| The 13 octet encoding of this EID using the two-element scheme- | The 13-octet encoding of this EID using the two-element scheme- | |||
| specific encoding would be as follows: | specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 82 # 2 Element ipn EID scheme-specific encoding | 82 # 2-Element ipn EID encoding | |||
| 1B 000EE86800000001 # Fully-qualified Node Number | 1B 000EE86800000001 # Fully Qualified Node Number | |||
| 01 # Service Number | 01 # Service Number | |||
| B.3. The 'null' Endpoint | B.3. The Null Endpoint | |||
| The 'null' EID of ipn:0.0 can be encoded in the following ways: | The Null EID of ipn:0.0 can be encoded in the following ways: | |||
| The recommended five octet encoding of the 'null' ipn EID using the | The recommended five-octet encoding of the Null ipn EID using the | |||
| two-element scheme-specific encoding would be as follows: | two-element scheme-specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 82 # 2 Element ipn EID scheme-specific encoding | 82 # 2-Element ipn EID encoding | |||
| 00 # Node Number | 00 # Node Number | |||
| 00 # Service Number | 00 # Service Number | |||
| The six octet encoding of the 'null' ipn EID using the three-element | The six-octet encoding of the Null ipn EID using the three-element | |||
| scheme-specific encoding would be as follows: | scheme-specific encoding would be as follows: | |||
| 82 # 2-Element Endpoint Encoding | 82 # 2-Element Endpoint Encoding | |||
| 02 # uri-code: 2 (IPN URI scheme) | 02 # uri-code: 2 ('ipn' URI scheme) | |||
| 83 # 3 Element ipn EID scheme-specific encoding | 83 # 3-Element ipn EID encoding | |||
| 00 # Default Allocator | 00 # Default Allocator | |||
| 00 # Node Number | 00 # Node Number | |||
| 00 # Service Number | 00 # Service Number | |||
| Acknowledgments | Acknowledgments | |||
| The following DTNWG participants contributed technical material, use | The following DTN Working Group participants contributed technical | |||
| cases, and critical technical review for this URI scheme update: | material, use cases, and critical technical reviews for this URI | |||
| Scott Burleigh of the IPNGROUP, Keith Scott, Brian Sipos of the Johns | scheme update: Scott Burleigh of the IPNGROUP, Keith Scott, Brian | |||
| Hopkins University Applied Physics Laboratory, Jorge Amodio of LJCV | Sipos of the Johns Hopkins University Applied Physics Laboratory, | |||
| Electronics, and Ran Atkinson. | Jorge Amodio of LJCV Electronics, and Ran Atkinson. | |||
| Additionally, the authors wish to thank members of the CCSDS SIS-DTN | Additionally, the authors wish to thank members of the CCSDS SIS-DTN | |||
| working group at large who provided useful review and commentary on | Working Group at large who provided useful reviews and commentary on | |||
| this document and its implications for the future of networked space | this document and its implications for the future of networked space | |||
| exploration. | exploration. | |||
| Authors' Addresses | Authors' Addresses | |||
| Rick Taylor | Rick Taylor | |||
| Aalyria Technologies | Aalyria Technologies | |||
| Email: rtaylor@aalyria.com | Email: rtaylor@aalyria.com | |||
| Ed Birrane | Edward J. Birrane, III | |||
| JHU/APL | The Johns Hopkins University Applied Physics Laboratory | |||
| Email: Edward.Birrane@jhuapl.edu | Email: Edward.Birrane@jhuapl.edu | |||
| End of changes. 205 change blocks. | ||||
| 610 lines changed or deleted | 603 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. | ||||