Internet-Draft | DTN NMP | February 2021 |
Sipos | Expires 11 August 2021 | [Page] |
This Internet-Draft is submitted in full conformance with the 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 and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 11 August 2021.¶
Copyright (c) 2021 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.¶
This document describes the Neighbor Messaging Protocol (NMP) for Delay-Tolerant Networking. Delay-Tolerant Networking is an end-to-end architecture providing communications in and/or through highly stressed environments, including those with intermittent connectivity, long and/or variable delays, and high bit error rates. More detailed descriptions of the rationale and capabilities of these networks can be found in "Delay-Tolerant Network Architecture" [RFC4838].¶
The locations of Neighbor Messaging Protocol and the BP in the Internet model protocol stack (described in [RFC1122]) are shown in Figure 1. Of note is that all NMP activities occur above the BP layer, which means that unlike earlier proposals [I-D.irtf-dtnrg-ipnd] this NMP can be transported over any CL available to a BP agent. This protocol is not tied to any specific CL, though it does rely on characteristics of CLs for certain functions (i.e., multicast capability).¶
This document describes the format of the protocol data units passed between BP agents for next-hop neighbor messaging. This document does not address:¶
Any UDPCL implementation requires a BP agent to perform those above listed functions in order to perform end-to-end bundle delivery.¶
This document defines CBOR structure using the Concise Data Definition Language (CDDL) of [RFC8610]. The entire CDDL structure can be extracted from the XML version of this document using the XPath expression:¶
'//sourcecode[@type="cddl"]'¶
The following initial fragment defines the top-level symbols of this document's CDDL, including the ASB data structure with its parameter/result sockets.¶
nmp-start = nmp-msg¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
This section contains definitions specific to the DTN Neighbor Messaging Protocol.¶
Many of the structural, behavioral, and especially timing definitions in this specification follow the model of MANET messaging [RFC5444] and MANET NHDP [RFC6130] in both terminology and semantics. This is intentional to allow an implementer to understand DTN discovery with very similar logic to MANET discovery. Where the NHDP is concerned with IP routers discovering reachable IP routes, the NMP is concerned with DTN nodes discovering reachable bundle routes.¶
This specification updates the "dtn" URI scheme defined in [I-D.ietf-dtn-bpbis] to expand the set of well-known endpoint names from the single "none" value to an IANA-controlled table of names Section 6.1.¶
An additional well-known endpoint "dtn:~neighbor" is defined to be used for multicast transfers to next-hop nodes. This endpoint scheme-specific part has a shortened integer encoding as defined in Table 1. For the remainder of this document a bundle with this endpoint as a destination will be referred to as a Neighbor Bundle.¶
A Neighbor Bundle is intended to exist for only a single transfer hop. That doesn't prohibit a single outgoing message from being conveyed over multiple CLs (which is distinct from a single CL with multicast behavior). A Neighbor Bundle SHALL NOT be forwarded by any node. The source of a Neighbor Bundle is always the sender of the bundle, it SHALL NOT contain a Previous Node block. A Neighbor Bundle SHALL NOT contain a Hop Count block, as the implicit Hop Limit is 1 and Hop Count is 0. A Neighbor Bundle SHALL be delivered to the administrative element of the receiving node. The primary block of a Neighbor Bundle SHALL NOT be marked with the administrative flag, as the destination is not a Node ID.¶
The payload data of a Neighbor Bundle SHALL contain the encoded Neighbor Message as defined in Section 4.¶
All Neighbor Bundles SHALL contain a BPSec BIB targeting the payload block. If the BIB targeting the payload block does not include the primary block as additional authenticated data (AAD) then the BIB SHALL also target the primary block. The BIB MAY target any other blocks in the Neighbor Bundle.¶
This section applies to BIB security contexts which use any public key infrastructure (PKI), including PKIX and bare public keys.¶
When a sequence of Neighbor Bundles is all signed by the same key material with an end-entity PKIX certificate bearing the public key, the source node MAY include the certificate chain only in specific bundles of the sequence. Receivers of Neighbor Bundles SHALL retain certificate chains associated with a Source Node ID for a period of time. The maximum time duration between bundles including the certificate chain is referred to here as the PUBLIC_KEY_INTERVAL. The PUBLIC_KEY_INTERVAL value SHOULD be some multiple of the messaging interval greater than or equal to 1.¶
BIB-signed Neighbor Bundles MAY also contain any certificate chains related to bundle confidentiality when the source node is to be used as a BCB security target.¶
A Neighbor Message SHALL consist of a CBOR map containing at least one pair. All keys in the Neighbor Message map SHALL be CBOR int (unsigned or negative) items. That minimum Neighbor Message pair SHALL be the Message Type identifier. The remaining pairs SHALL be interpreted according to the Message Type.¶
This specification follows the pattern of [RFC8152] to use positive-valued map keys to indicate common parameters and negative-valued map keys to indicate type-specific parameters. This convention also applies to subordinate maps within NMP messages.¶
Where the NHDP is concerned with interfaces supporting IP addresses, with relatively few parameterizations, the NMP must convey CL information needed to send bundles to the node-being-discovered. Because different CLs are likely to have varying parameter sets, each CL is encoded as a CBOR map following the conventions of Section 4.1. There are several common CL parameters related to network- and transport-layer: a DNS name or IPv4/IPv6 address used to communicate with the node, and information about transport security policy.¶
It is also an important distinction that the CL parameterization is about the capability of delivering bundles to the discovered node. It is not about ability of the node to transmit bundles, which may in fact be more broad than its ability to receive. For example, in the situation where a node has an ephemeral IP address and no DNS name that node may not listen with any CL yet, because some CLs are bidirectional, it may have symmetric (BP layer) connectivity to some set of peer nodes. Even in that case there is still value in discovering the presence of the non-listening node because there is the potential for a contact (coming from that node) to allow bundle routes to other nodes "behind" that non-listening node.¶
The common CL parameters are listed below and correspond with the CDDL of Figure 5.¶
This CL Type specifically refers to the TCPCL of [I-D.ietf-dtn-tcpclv4]. One of the DNS Name or IP Address parameters SHALL be present for this CL. If both DNS Name and IP Address are present it is an implementation matter to choose which one to attempt first, and whether multiple attempts are made. The Transport Security Required parameter SHALL indicate both the Contact Header USE_TLS flag and the post-negotiation policy enforcement (i.e., when the session will be disallowed). More TBD.¶
$cl-listen /= { cl-key-type<1>, ? cl-dns-name-list, ? cl-net-addr-list, ? cl-transport-port, ? cl-transport-sec-require, }¶
This CL Type specifically refers to the UDPCL of TBD. One of the DNS Name or IP Address parameters SHALL be present for this CL. If both DNS Name and IP Address are present it is an implementation matter to choose which one to attempt first, and whether multiple attempts are made. The Transport Security Required parameter SHALL indicate the need for DTLS security when receiving CL messages. More TBD.¶
$cl-listen /= { cl-key-type<2>, ? cl-dns-name-list, ? cl-net-addr-list, ? cl-transport-port, ? cl-transport-sec-require, }¶
The HELLO message is variable sized and indicates the CLs supported by the transmitting node and of all the neighbors known to the transmitting node.¶
; HELLO message content $nmp-msg /= hello-msg hello-msg = { msg-key-type<1>, hello-validity-time, ? hello-interval-time, hello-clset, ? hello-nodeset, ? hello-peerset, } ; Message-type-specific parameters hello-validity-time = ( -1: time-duration, ) hello-interval-time = ( -2: time-duration, ) ; Duration in DTN units of milliseconds time-duration = uint hello-clset = ( -5: [1*cl-listen], ) hello-nodeset = ( -3: [1*hello-node], ) hello-node = [ nodeid: eid, clset: [1*cl-listen] ] hello-peerset = ( -6: [*hello-peer], ) hello-peer = [ nodeid: eid, status: hello-link-status, ] hello-link-status = &( HEARD: 1, SYMMETRIC: 2, LOST: 3, )¶
This section separates security considerations into threat categories based on guidance of BCP 72 [RFC3552].¶
In environments where PKI is not available, the NMP¶
Registration procedures referred to in this section are defined in [RFC8126].¶
EDITOR NOTE: sub-registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry [IANA-BUNDLE], a sub-registry titled "Well-Known DTN Endpoints" and initialize it with the contents of Table 1. The registration procedure is Expert Review. Because any service name can be encoded as a text string, there is no provision for private or experimental registrations.¶
Specifications of new well-known DTN endpoints need to define the encoded (uint) value as well as the meaning of the service. Specifications need to define how it should be used by BP agents and if there are any special restrictions on how bundles are to be treated (either routing or delivery) when this endpoint is used as a bundle destination.¶
Expert(s) are encouraged to be biased towards approving registrations unless they are abusive, frivolous, or actively harmful (not merely aesthetically displeasing, or architecturally dubious).¶
Code | Text Value | Reference |
---|---|---|
0 | none | [I-D.ietf-dtn-bpbis] |
TBD | ~neighbor | This specification |
others | unassigned |
EDITOR NOTE: sub-registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry [IANA-BUNDLE], a sub-registry titled "NMP Message Type" and initialize it with the contents of Table 2. For positive code points the registration procedure is Specification Required. Negative code points are reserved for use on private networks for functions not published to the IANA.¶
Specifications of new message types need to define the Message Type value (an int), as well as the other message parameters required and allowed. Specifications need to define how those CBOR parameters are used by a BP agent to relate the encoded message to the agent's information bases.¶
Expert(s) are encouraged to be biased towards approving registrations unless they are abusive, frivolous, or actively harmful (not merely aesthetically displeasing, or architecturally dubious).¶
Code | Name | Reference |
---|---|---|
negative | Private/Experimental Use | This specification. |
0 | reserved | This specification. |
1 | HELLO | This specification. |
others | unassigned |
EDITOR NOTE: sub-registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry [IANA-BUNDLE], a sub-registry titled "NMP Convergence Layer Type" and initialize it with the contents of Table 3. For positive code points the registration procedure is Specification Required. Negative code points are reserved for use on private networks for functions not published to the IANA.¶
Specifications of new CL types need to define the CL Type value (an int), as well as the other CL parameters required and allowed. Specifications need to define how those CBOR parameters are used by a BP agent to transfer bundles to the referred-to CL.¶
Expert(s) are encouraged to be biased towards approving registrations unless they are abusive, frivolous, or actively harmful (not merely aesthetically displeasing, or architecturally dubious).¶
Code | Name | Reference |
---|---|---|
negative | Private/Experimental Use | This specification. |
0 | reserved | This specification. |
1 | TCPCLv4 | Section 4.2.1 of this specification. |
2 | UDPCL | Section 4.2.2 of this specification. |
others | unassigned |
TBD¶