Internet-Draft | BPv7 SAND | August 2024 |
Sipos | Expires 16 February 2025 | [Page] |
This document defines the Secure Advertisement and Neighborhood Discovery (SAND) protocol for Bundle Protocol version 7 (BPv7) within a delay-tolerant network (DTN).¶
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 16 February 2025.¶
Copyright (c) 2024 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 Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Deployments of Bundle Protocol version 7 (BPv7) nodes have required a significant amount of configuration for both the node being enrolled in the BPv7 network as well as the pre-existing (one-hop neighbor) nodes expected to communicate with the new node. The configuration consists of both BP-layer parameters, such as identity and security capabilities, as well as underlying convergence layer (CL) and associated transport parameters.¶
When nodes are in the same administrative domain, these parameters might be easy to find and the burden is solely about configuring the nodes. But when nodes need to configure across administrative domains simply finding the parameters could be an operational challenge, and if the parameters change keeping them synchronized is yet more complexity. Administrative domains might be crossed at the boundary between organizations (e.g., when bridging two BP wide-area networks) but they can also be crossed within a single host or platform where there are nodes from different vendors present which need to interoperate.¶
Additional considerations for discovery within a BP network are related to the expectation of challenged nature of a delay-tolerant network (DTN) more generally. This means long one-way light-time (OWLT) delays between neighbors, expected time-varying discontinuities between neighbors, and a variety of CL transport types, each with associated parameters, capabilities, and limitations. More detailed descriptions of the challenges of DTNs can be found in "Delay-Tolerant Network Architecture" [RFC4838].¶
Earlier research into discovery within a BP network led to development of the draft experimental IP Neighbor Discovery (IPND) protocol of [I-D.irtf-dtnrg-ipnd], but that protocol is intimately tied to its use of UDP datagram "beacons" and necessary use of an IP underlay network. It also would require allocation of well-known UDP port number and IP multicast addresses or pre-configuration of those parameters across network nodes, but no such allocations were ever made.¶
To mitigate the need for manual parameter discovery and configuration, an online neighborhood discovery protocol can be used, and such a protocol is defined in this document. The Secure Advertisement and Neighborhood Discovery (SAND) protocol operates at and above the BP-layer, as shown in Figure 1, which insulates it from strict dependence on any specific CL for its message transport and allows the use of BPSec for message security. The full protocol stack of this document uses the UDPCL of [I-D.sipos-dtn-udpcl] as a zero-configuration default for its any-source multicast (ASM) capabilities but SAND could be, and is expected to be, used over other CLs to include unicast transports which might be informed by lower-layer discovery protocols (see Section 2.2).¶
This document describes the format of the protocol data units passed between BP nodes for neighborhood discovery and defines behavior at message source and destination nodes.¶
This document does not address:¶
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.¶
start = sand-adu-seq / sand-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.¶
Terminology used within the SAND protocol includes the following:¶
The service of this protocol is the discovery of secure identities and capabilities of peer nodes within a 2-hop neighborhood without needing any pre-configuration on the participating node or on other nodes in the network.¶
Each participating node uses per-interface and per-neighbor timers to determine when to solicit and when to advertise data. Some external events (e.g. network- or link-level discovery) can be used to reset timers so that discovery can be completed more quickly.¶
The types of data able to be advertised by a node are the following. Each type of data can be associated with a desired update time interval to ensure timely synchronization between peers.¶
Future specifications can use this same messaging and transport mechanism to define additional message types and modes, including types for private or experimental use (see Section 8.4). Future modes could involve multi-hop flooding of bundles to distribute data for link-state style routing algorithms.¶
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 BP discovery with very similar logic to MANET discovery. Where the NHDP is concerned with IP routers discovering reachable IP routes, the SAND is concerned with BP nodes discovering reachable bundle routes.¶
A node participating in the SAND protocol is expected to use lower-layer discovery mechanisms as necessary to enroll in a local network, obtain network-layer address(es) and parameters, and possibly discover network-layer neighbor nodes and routers. This might involve the use of IPv4 Internet Router Discovery Protocol (IRDP) [RFC1256] or IPv6 Secure Neighbor Discovery Protocol (SEND) [RFC3971] [RFC4861] to determine IP neighbors, the Dynamic Host Configuration Protocol (DHCP) [RFC2131] to assign addresses and network-level parameters, or the Dynamic Link Exchange Protocol (DLEP) [RFC8175] to discover connectivity and specific IP neighbor nodes.¶
The robust and delay-tolerant protocol in this document is also compatible with the DNS-Based Service Discovery (DNS-SD) of BP routers by edge nodes as defined in [I-D.sipos-dtn-edge-zeroconf]. The SAND can be used to enroll an edge router in a network and synchronize routing information across a variety of network and link types, while DNS-SD is used within IP stub underlay networks (or enclaves) at the edges of the BP network.¶
SAND operates by each participating node keeping a persistent store of its enrolled underlayer networks, 1-hop neighbors, symmetric 2-hop neighbors along with attributes for each type of entity. These are used as the basis for outgoing SAND message contents and are updated as part of message reception processing.¶
This category of information is based on a participating node's knowledge of its own underlayer network (ULN) and PKI configuration. It exists as input to SAND processing and messaging and is unaffected by the results of processing or reception of messages.¶
The resource information of Table 1 is used to populate Resource Advertisement messages. The information in this table are general to the node as a whole and not for any specific interface, network, or CL.¶
Name | Description |
---|---|
Validity Interval | This is the full time horizon for resource schedules in this information base. |
Power Schedule | This represents a time-varying power state of the local node (as either "on" or "off") within the validity interval. A power schedule which indicates "always on" is a valid default. |
The underlayer information described in Table 2 allows a participating node to define different profiles for different accessible networks (IP or otherwise). As defined in Section 6, when assembling and sending SAND messages much of the data can be filtered-down based on what is accessible via an interface (among other possible additional filtering, see Section 7.1).¶
Name | Description |
---|---|
Interface ID | This is the operating-system-specific unique identifier for a network interface. |
Accessible Network Set | This is the set of IP addresses assigned to and associated IP subnetworks accessible to this node via the interface. |
Link MTU | This is the configured or discovered maximum transmission unit (MTU) of the first-hop network link from the interface. Because this is a link MTU it excludes any network packet header overhead and is network-protocol-independent. This also represents a maximum outgoing size and not necessarily the maximum incoming size. This is not necessarily the same as a path MTU between any peers on this network, and a path MTU can be directional. |
SAND Timer Configuration | This is the set of timers needed to configure SAND activities, as defined in Table 3. |
The items in Table 3 represents the set of timer configuration needed to operate a participating node. As an information model, details such as specific units or encoding forms are left as an implementation matter. Because SAND uses the DTN time epoch and encoded form, SAND timer configuration SHOULD have a resolution down to at least one millisecond.¶
Name | Scope | Description |
---|---|---|
Minimum Time Interval | default and per-message-type | This represents the shortest time interval between sending messages of the same type on a particular interface or to a specific singleton destination. |
Maximum Time Interval | default and per-message-type | This represents the longest time interval between sending messages of the same type on a particular interface or to a specific singleton destination. This is used as a timeout for Periodic Update messaging. The Maximum Time Interval MUST be longer than the Minimum Time Interval by some factor. |
Validity Duration | default and per-message-type | This is embedded in messages optionally and used for SAND Bundle lifetimes. The Validity Duration MUST be longer than the Maximum Time Interval by some factor. |
The Identity information of Table 4 is a logical table used both as a source for sending Identity Advertisement messages as well as for deriving BPSec policy used to send signed payloads and/or receive encrypted payloads.¶
Name | Description |
---|---|
Thumbnail | This is the x5t or c5t thumbnail of the encoded certificate, used as a selector. |
Key Usage | This is the extracted Key Usage value, from Section 4.2.1.3 of [RFC5280], used as a selector. |
Validity Time Interval | This is the extracted Validity interval, from Section 4.1.2.5 of [RFC5280], used as a selector. |
Encoded Certificate | This is the DER-encoded X509 or encoded C509 certificate contents. |
The trust anchor information of Table 5 is a logical table used for validating received peer certificates and for deriving BPSec policy used to receive signed payloads.¶
Name | Description |
---|---|
Subject Key Identifier | This is the extracted Subject Key Identifier, from Section 4.2.1.2 of [RFC5280], used as a selector. |
Validity Time Interval | This is the extracted Validity interval, from Section 4.1.2.5 of [RFC5280], used as a selector. |
Encoded Certificate | This is the DER-encoded X509 or encoded C509 certificate contents. |
The convergence layer information of Table 6 is a logical table separated from the network information of Table 2 because many BP node deployments are expected to have CL instances that are bound to "any endpoint" addresses and can operate across multiple networks. Even in cases where a CL establishes persistent sessions which might be bound to a specific endpoint address or network, the CL instance as a whole can operate simultaneous sessions across many networks.¶
When used as a source for sending Convergence Layer Advertisement messages the advertised CL List is expected to be, but not required to be, filtered-down based on the interface/network on which the message will be sent. Besides being filtered-out for a specific network, a CL entry SHALL NOT be represented differently across different interfaces. TBD How to signal removal of a CL instance consistently across interfaces?¶
Name | Description |
---|---|
CL Type | This is the type of CL being represented, which need not be unique when there are multiple instances of a CL operating on a single node (with different parameters presumably). |
Bind IP Addresses | This is the set of IP addresses to which the CL instance is bound (for either listening/receiving or connecting/sending). This includes both IPv4 and IPv6 addresses, and can include the "any endpoint" IPv4 and IPv6 addresses (0.0.0.0 and :: respectively). |
Bind Port Number | This is the specific transport-layer port number to which the CL instance is bound. This includes the default port number for each CL type. |
Transport Security | This indicates whether transport security is required, prohibited, or neither (meaning it can be opportunistic or conditional) by the CL instance. |
Roles | This indicates the logical roles which this CL instance is able to perform among "active" or "passive" options. The definition of an active role is CL-specific, but is expected to involve initiating outgoing conversations/connections/sessions, while a passive role is expected to involve listening for incoming ones. A single CL instance can be capable of both roles. |
Type-Specific Parameters... | Each CL type (see Section 5.4) able to be represented by SAND can have a set of parameters specific to that type. |
An information base for 1-hop neighbor existence and intrinsic properties is managed separately from other information bases which represent relationships between nodes. Neighbor information can be received from any number of interfaces and is aggregated together into these information bases. In some cases the original received interface is kept and in others it is discarded in order to have a single record representing the neighbor node.¶
The neighbor node information of Table 7 is a logical table of immediate neighbors of this node. Multiple sources of information are aggregated together into this table.¶
Name | Description |
---|---|
Node ID | This is the SAND Singleton EID for the node. |
MPR Selection | TBD |
Power Schedule | This represents a time-varying power state of the node (as either "on" or "off") as reported in Resource Advertisement messages. |
An information base for 1-hop neighbor reachability in Table 8 is a logical table relating 1-hop neighbor nodes from Table 7 to specific local interfaces from Table 2 on which the node is reachable or on which messages have been received. Due to having multiple-network connectivity, it is possible to have multiple records identifying the same 1-hop Neighbor but each will have their own set of path metrics for a specific network.¶
Name | Description |
---|---|
Node ID | This is a cross-reference to the unique identifier from Table 7. |
Interface ID | This is a cross-reference to the unique identifier from Table 2, the local network interface which has seen messages from the node. |
Latest Timestamps | This is the latest bundle creation timestamp (Section 4.2.7 of [RFC9171]) for each SAND Message Type (Section 8.4) received from the neighbor on this interface, which is used to filter-out old, out-of-order messages in Section 4.5. |
DNS Name Set | This is the set of DNS Names assigned to the neighbor node and accessible on the associated network. |
IP Address Set | This is the set of IP addresses assigned to the neighbor node and accessible on the associated network. |
Link MTU | This is the configured or discovered MTU of the first-hop link for the neighbor on the associated network. Similar to the local interface Link MTU, the actual Path MTU to and from this peer might be reduced from any one-hop Link MTU and might be directional. |
Reachability | An indication of whether this neighbor has been only received from (HEARD), or if this node is present in that neighbor's own 1-hop peer list (SYMMETRIC), or if no messages have been received after some time (LOST). |
Path Metrics | This is the set of network-level metrics for expected path delay, maximum data rate, and bit error rate in each direction. |
Timeout | This is the absolute local-clock time when this record becomes invalid. |
Name | Description |
---|---|
Node ID | This is the SAND Singleton EID for the node. |
Interface ID | This is a cross-reference to the unique identifier from Table 2, the local network interface which has seen messages from the node. |
CL Type | This is the type of CL being represented, which need not be unique when there are multiple instances of a CL operating on a single node-and-interface. |
CL Parameters | These are the transport and network parameters (see Table 6), as reported in Convergence Layer Advertisement messages. |
This category of information is about an individual node, or pairs of nodes, independent of the location of the node in the network topology relative to this node.¶
An information base for 2-hop neighbors is limited to only those which have symmetric reachability between that node and one of the 1-hop neighbors from Table 7. This information includes simplified path metrics between the 1-hop and 2-hop neighbors. Due to having multiple-network connectivity, it is possible to have multiple records identifying the same 2-hop Neighbor but each will have their own set of path metrics for a specific network.¶
Name | Description |
---|---|
Node ID | This is the SAND Singleton EID for the node. |
Latest Timestamps | This is the latest bundle creation timestamp (Section 4.2.7 of [RFC9171]) for each SAND Message Type (Section 8.4) received from the node, which is used to filter-out old, out-of-order messages in Section 4.5. |
TBD¶
Name | Description |
---|---|
Left Node ID | This is a cross-reference to a unique identifier from Table 10. |
Right Node ID | This is a cross-reference to a unique identifier from Table 10. |
Path Metrics | This is the set of network-level path metrics between the left and right node. |
The Peer Certificate Information of Table 12 is used as way to store and cache certificates received via Identity Advertisement messages and validated in a time-independent way.¶
This means that certificates SHALL only be considered for caching by a node unless they have been part of a chain validated in accordance with the procedures of Section 6 of [RFC5280], up to a root CA from the Trust Anchor information of Table 5, while ignoring validity times. In addition to the base validation, all end-entity certificates SHALL only be considered for caching by a node if it conforms to the certificate profile of Section 4 of [I-D.ietf-dtn-bpsec-cose]. The Peer Certificate Information SHALL be de-duplicated from the Trust Anchor information of Table 5 by ignoring root CA certificates.¶
Name | Description |
---|---|
Node ID | This is the SAND Singleton EID for the node. |
Thumbnail | This is x5t or c5t thumbnail of the encoded certificate, used as a selector. |
Subject Key Identifier | This is the extracted Subject Key Identifier, from Section 4.2.1.2 of [RFC5280], used as a selector. |
Key Usage | This is the extracted Key Usage value, from Section 4.2.1.3 of [RFC5280], used as a selector. |
Validity Time Interval | This is the extracted Validity interval, from Section 4.1.2.5 of [RFC5280], used as a selector. |
Encoded Certificate | This is the DER-encoded X509 or encoded C509 certificate contents. |
The SAND relies on BPv7 for end-to-end transport, one or more CL for one-hop transport, and BPSec for message security (both end-to-end and one-hop).¶
Within BPv7, the SAND uses two types of well-known endpoint identifier (EID) used as source and/or destination for bundles transported between SAND participants.¶
Beyond its necessary use as a bundle EID, the SAND Singleton EID also serves as a unique identifier for the participating node and a unique and stable correlator for the SAND information bases (Section 3).¶
For the remainder of this document a bundle with a source matching the SAND Singleton EID will be referred to as a SAND Bundle. A SAND Bundle will have a destination of either the SAND Group EID or another SAND Singleton EID. This is illustrated by the following EID Pattern of [I-D.sipos-dtn-eid-pattern].¶
imc:TBA1.TBA2|ipn:*.*.TBA3|dtn://**/TBA4¶
A SAND Bundle has the following basic characteristics:¶
bstr
items, each containing an encoded SAND Message as defined in Section 5.¶
; The actual ADU is the sequence ~sand-adu-seq, not array enveloped sand-adu-seq = [ version: 1, 1* adu-item ] adu-item = bstr .cbor sand-msg¶
Each encoded SAND Message SHOULD use CBOR core deterministic encoding requirements from Section 4.2.1 of [RFC8949]. Even if not using deterministic encoding the first item of each SAND Message map SHALL have key zero (the Message Type item). This will cause the Message Type item to be the first one in the encoded message, which will allow a SAND processor to quickly determine if the specific message is of interest and skip over it if not.¶
Because multiple SAND Messages can be sent in a single bundle to which a Hop Limit applies, all messages in a single bundle need to have the same restriction (or non-restriction) of Hop Limit.¶
In order to properly handle an SAND Bundle, the previous-hop node needs to be positively identified. This occurs by using either an authenticated identity from the CL over which the bundle was received, if available, a Previous Node extension block Section 4.4.1 of [RFC9171], if present, or the Source Node ID from the Primary block Section 4.3.1 of [RFC9171].¶
A SAND Bundle which is forwarded over a CL which includes an authenticated identity SHOULD NOT contain a Previous Node extension block. Otherwise, a SAND Bundle which is forwarded but not sourced on a node SHALL contain a Previous Node extension block to indicate that the node sending it is not its source.¶
All SAND Bundles SHALL contain a Block Integrity Block (BIB) which targets the payload block. If that BIB 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 SAND Bundle.¶
The BIB targeting the payload block SHALL have a Security Source identifying the same node as the bundle Source EID.
Due to node and network security policy, the Security Source EID MAY be different than the bundle Source EID.
For example, a bundle source of ipn:974848.10.3
might have an associated Security Source of ipn:974848.10.0
but both identify the same IPN node.¶
Any SAND Bundles which contain a Previous Node block SHALL also contain a BIB which targets that Previous Node block. If that BIB 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 SAND Bundle. Similar to the payload, any BIB targeting the Previous Node block SHALL have a Security Source identifying the same node as the Previous Node block.¶
Any BIB used by SAND SHALL authenticate the bundle source EID and provide proof-of-possession (PoP) of the private key bound to the bundle source EID via PKIX certificate. This could be done using a cryptographic signature as available in the COSE Context of [I-D.ietf-dtn-bpsec-cose] because the primary block Creation Timestamp functions as a unique nonce for PoP.¶
A SAND Bundle MAY contain a Block Confidentiality Block (BCB) which targets the payload block when being transported over an insecure CL to a known set of recipients. If the BCB acceptors are not using group keys or known individual-recipient keys, the SAND Bundle SHOULD NOT be transported over a multicast CL.¶
When BPSec blocks can contain either certificate contents or thumbprints, the use of thumbprints is RECOMMENDED along with the use of Identity Advertisement messages to convey identity between nodes. To avoid the bootstrapping issue described in Section 7.3, the requirements of that section need to be met by a participating node.¶
Like MANET discovery and routing protocols, all of the message types defined in this document contain the full set of data of a particular type from a source node. The processing of any one message does not rely on incremental changes caused by the message or processing of any preceding-in-time messages of the same type. This also makes SAND Message processing idempotent and immune to duplicate reception, which is an expected property of BPv7 transport.¶
Because of this, the reception of a message sent earlier than the last-received message of the same type from the same source can be completely ignored. This logic applies per-message-type so a single SAND Bundle can contain some messages which are superseded along with others which are not. This comparison logic below along with the BPv7 requirement of timestamp uniqueness provide a strict ordering of all bundles from a source.¶
After receiving and processing each SAND Message, a node SHALL record the Creation Timestamp from the bundle along with the bundle source and message type. After receiving but before fully processing each SAND Message, a node SHALL look up the latest processed Creation Timestamp based on the bundle source and message type. If the received message is identical to or earlier than the latest processed timestamp it SHALL be ignored by the application. The timestamp comparison SHALL be based on ordering of the DTN Time followed by the Sequence Number. Ignoring a superseded message SHALL NOT be considered a failure of processing the message, its containing ADU, or its containing bundle.¶
Part of the ability of the SAND to be a discovery protocol is the need for initial authenticated messaging without any pre-configuration of any participating node. This is accomplished by using the UDPCL with an IP multicast destination, either IPv4 or IPv6 or both as needed on each interface.¶
All SAND-participating nodes SHALL listen for UDPCL packets on default port 4556, defined in Section 6.2 of [I-D.sipos-dtn-udpcl], and by joining IP multicast group(s) defined in Section 6.1 of [I-D.sipos-dtn-udpcl] on all interfaces over which the entity is participating in discovery. Nodes MAY listen for UDPCL packets destined for other (unicast) addresses and/or on other ports as needed.¶
When sending SAND Bundles, participating nodes SHALL use this default convergence layer in accordance with the modes defined in Section 6, one of which uses the above multicast configuration. Because an IP multicast destination is used, the source node will need to condition certain UDP and IP parameters based on a specific network interface to send from.¶
To send bundles using the UDPCL on a specific interface:¶
If a specific destination IP address is given that SHALL be used as its destination. Otherwise, use one or more of the following:¶
A SAND Message is the top-level encoded structure exchanged between nodes. Messages are encoded according to the following requirements and the CDDL in Figure 2.¶
A SAND Message SHALL consist of a CBOR map containing at least one pair.
All keys in the SAND Message map SHALL be CBOR int16
(unsigned or negative) items.
This specification follows the pattern of CBOR [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 SAND messages.¶
The message common parameters are listed below and correspond with the CDDL of Figure 3. These are also registered in the IANA registry defined in Section 8.3.¶
int16
identifying the type of message.
The registry of message types is IANA-managed and defined in Section 8.4.¶
This pair uses key 2 and value of dtn-time
indicating the absolute time of the start of validity of this message in the DTN time epoch (see Section 4.2.6 of [RFC9171]).
If no Reference Time is present, the message SHALL be treated as being valid from the containing bundle's Creation Timestamp.
The Reference Time is also used as the epoch for any schedule
structure in the same message, defined later in this section.¶
For nodes with low-fidelity timing needs or having a low-precision clock this value SHOULD be omitted. Otherwise, this value SHALL be present to avoid any difference between message creation time and the BPA-sourced Creation Timestamp.¶
This pair uses key 3 and value of time-duration
indicating the validity-time of the message contents in milliseconds.
If no Validity Duration is present, the message SHALL be treated as being valid through the containing bundle's Lifetime.
The Validity Duration SHALL be interpreted as starting at the Reference Time from the same message, if present, or the bundle's creation timestamp.¶
For nodes with low-fidelity timing needs this value SHOULD be omitted. Otherwise, this value SHALL be sourced from the Validity Duration of Table 3.¶
time-duration
indicating the periodic interval of the message type in milliseconds.
If no Repetition Interval is present, the message SHALL NOT be assumed to be sent at a fixed periodic interval.¶
Every SAND Message SHALL contain a Message Type pair. Every SAND Message MAY contain any combination of other pairs with positive keys. The remaining pairs with negative keys SHALL be interpreted according to the Message Type.¶
Some of the advertisements defined in this document associate an optional validity schedule with select data. Because the advertisements are expected to be sent by nodes periodically on the order of minutes, the form of this schedule is very simplified and focused only on a short-term time horizon using the Reference Time of the same message as its zero-offset epoch. When any schedule is present within a message the Schedule Reference Time item SHALL be present in the message and used as the schedule epoch time.¶
The schedule consists of pairs of duration values, with each pair representing an interval of time during which the schedule applies (and the gaps between intervals representing time during which the schedule does not apply).¶
The Data Solicitation message type informs recipients that the sender desires specific types of SAND data from its peers. A peer entering a network SHOULD send a Data Solicitation message after an implementation defined time delay.¶
The Data Solicitation message SHALL be identified by message type 1. The message parameters are listed below and correspond with the CDDL of Figure 5.¶
Each Data Solicitation message SHALL contain a Message Type List. The Data Solicitation message SHALL NOT be used to request a Data Solicitation type.¶
The Identity Advertisement message contains PKIX certificates identifying the source node with key material for different security purposes.¶
Certificates in this message are sourced from the Identity Information Base of Table 4. The certificates themselves contain validity time intervals which have no strict relationship to the validity time of the containing advertisement message or the lifetime of the containing bundle, and do not relate to any SAND-form of schedule. The creator of an Identity Advertisement message MAY filter-in or filter-out certificates based on their validity time.¶
Certificates valid at the time of creation SHOULD be present. Some certificates MAY have validity time in the distant past or future. Those non-present-time certificates could be needed to verify old signatures or to pre-load future rollover keys respectively.¶
The Identity Advertisement message SHALL be identified by message type 2. The message parameters are listed below and correspond with the CDDL of Figure 6.¶
COSE_X509
defined in [RFC9360].¶
COSE_C509
defined in [I-D.ietf-cose-cbor-encoded-cert].¶
Each Identity Advertisement SHALL contain an X509 Bag, a C509 Bag, or both.¶
The Identity Advertisement message is populated in-part using the data identified in Table 4, part of the Local Node Information Base described in Section 3.1.¶
The Interface Advertisement message contains information about the ULN interface on which the SAND Bundle has been sent, providing recipients information about communicating with the source node. When creating Interface Advertisement messages, the source node will populate it with parameters specific to the network on which the interface is an access point.¶
Each Interface Advertisement message SHALL be transported with a Hop Limit of 1. Only 1-hop neighbors are capable of using underlayer network parameters so there is no need to forward this to any other nodes in the network.¶
The Interface Advertisement message SHALL be identified by message type 8. The message parameters are listed below and correspond with the CDDL of Figure 7.¶
schedule
item as defined in Figure 4.
Each time at which the schedule is valid indicates when the interface or link is expected to be usable.
If this parameter is absent the interface SHALL be treated as always valid (within the validity schedule of the node itself, see Section 5.5).¶
tstr
or array of tstr
from DNS names in accordance with [RFC1034].
If this parameter is absent the node SHALL be treated as not having a DNS name on the network.¶
bstr
or array of bstr
from IPv4 or IPv6 addresses encoded as four-byte or 16-byte sequences respectively (consistent with untagged values of [RFC9164]).
If this parameter is absent the node SHALL be treated as having only the IP address from which the containing bundle was sent.¶
The Convergence Layer Advertisement message indicates the CLA instances available on the source node interface sending the message, including both active and passive roles where applicable, and any parameters necessary for peers to make use of those instances. Each instance can also have an associated validity schedule.¶
Each Convergence Layer Advertisement message SHALL be transported with a Hop Limit of 1. Only 1-hop neighbors are capable of using CL data so there is no need to forward this to any other nodes in the network.¶
The Convergence Layer Advertisement message SHALL be identified by message type 3. The message parameters are listed below and correspond with the CDDL of Figure 8.¶
cl-recv
items defined later in this section.
Each Convergence Layer List SHALL contain at least one item.
A Convergence Layer List item MAY have a non-unique CL Type parameter, indicating multiple instances of a particular CL.¶
Each Convergence Layer Advertisement SHALL contain a Convergence Layer List. Each item of the Convergence Layer List SHOULD be reachable via the interface over which the enveloping message is sent.¶
Each Convergence Layer Advertisement MAY contain any combination of DNS Name List, IP Address List, and Link MTU items. When present, the DNS Name List, IP Address List, and Link MTU values SHALL apply to all convergence layers in the message. Individual CLs MAY contain additional DNS names and/or IP addresses specific to that CL instance. Duplication between message-level DNS Name or IP Address and CL-level values SHOULD be avoided, but has no effect on the interpretation of the values.¶
Because different CLs are likely to have varying parameter sets, each CL is encoded as a CBOR map following the same conventions of SAND Message structure. 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 advertising 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 CL common parameters are listed below and correspond with the CDDL of Figure 9. These are also registered in the IANA registry defined in Section 8.5.¶
int16
identifying the type of CL being defined.
Possible CL Type values are defined Section 8.6 where, similar to message types, positive values are for well-known CL types and negative values are for private or experimental types.¶
bstr
or array of bstr
from IPv4 or IPv6 addresses encoded as four-byte or 16-byte sequences respectively (consistent with untagged values of [RFC9164]).
Each address represents a destination to which the CL is bound in order to receive traffic.
If this parameter is absent, the CL SHALL bet treated as if it was bound to the "any endpoint" IPv4 and IPv6 addresses (0.0.0.0
and ::
respectively).
If a node has either IPv4 or IPv6 addresses assigned but is not listening on the associated address family, this list SHALL contain the associated "any destination" bind address on which it is listening.¶
uint
indicating the transport-layer port number to which the CL is bound.
If this parameter is absent the default (i.e., IANA assigned) port number SHALL be used.¶
bool
indicating whether transport security is required (when true
) or prohibited (when false
).
If this parameter is absent there is no information about the required policy.¶
This pair uses key 6 and value of uint
containing flags indicating which CL-specific roles the source node can act as.¶
The role flag at bit 0 indicates that the node can act in an passive role.
The role flag at bit 1 indicates that the node can act in an active role.
If this parameter is absent it is assumed to be 0b11
(the node can be either role).¶
The definition of an "active role" is CL-specific but is expected to involve initiating outgoing conversations/connections/sessions rather than listening for incoming ones. Even when acting in the active role only, the CL MAY still be bound to a specific port number.¶
If multiple values for DNS Name and/or IP Address are present for a CL it is an implementation matter to choose which one to attempt first, and whether multiple attempts are made sequentially or simultaneously. See [RFC8305] for detailed discussion of one possible algorithm for handling multiple network names/addresses.¶
This CL Type specifically refers to the TCPCL version 4 of [RFC9174].¶
If the Port Number parameter is absent, the default TCPCL port 4556 SHALL be used.
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).
The Role parameter SHALL indicate whether the the TCPCL entity on the node can function as either active or passive or both.¶
This CL Type specifically refers to the UDPCL Version 2 of [I-D.sipos-dtn-udpcl].¶
If the Port Number parameter is absent, the default UDPCL port 4556 SHALL be used. The Transport Security Required parameter SHALL indicate the need for DTLS security when receiving CL messages.¶
While there is no IETF specification for transporting BPv7 bundles over the Licklider Transport Protocol (LTP), the CCSDS profile of BPv7 includes a specification for this in Appendix B of [CCSDS-BPv7].¶
If the Port Number parameter is absent, the default LTP port 1113 SHALL be used. The BPv7 use of LTP does not specify a transport-layer security mechanism.¶
While there is no concrete specification for transporting BPv7 bundles over TCPCL version 3 [RFC7242], this specification makes an allocation to allow a node to advertise that it is using this combination of protocols.¶
If the Port Number parameter is absent, the default TCPCL port 4556 SHALL be used. The TCPCL version 3 does not specify a transport-layer security mechanism.¶
While there is no concrete specification for transporting BPv7 bundles over the UDPCL as defined in [RFC7122], this specification makes an allocation to allow a node to express that it is using this combination of protocols.¶
The Resource Advertisement message is used to indicates the node's resource forecast (power state and storage) for some near time horizon. This corresponds to a node-scope schedule of Section 2.3.1 of [I-D.ietf-tvr-requirements] and these resource relate to all of the CLs exposed in the Convergence Layer Advertisement message from the same node. Per the definitions in Section 5, each schedule applies within the Validity Duration of the message.¶
Resource Advertisement messages are populated using the data in Table 1, part of the Local Node Information Base described in Section 3.1.¶
The Resource Advertisement message SHALL be identified by message type 4. The message parameters are listed below and correspond with the CDDL of Figure 15.¶
schedule
item as defined in Figure 4.
Each time at which the schedule is valid indicates when the node is forecast to be powered-on.¶
The Local Topology Advertisement message allows a participating node to enumerate the 1-hop neighbors with which the source node can communicate (via some unspecified CL or combined aggregate of CLs). Each neighbor is identified by it's SAND Singleton EID which is a unique across a BP network.¶
Each 1-hop neighbor (peer) is associated with a specific status and a set of communication metrics similar to the behavior of MANET NHDP [RFC6130]. The source of the metrics are not specified by this document, but might come from estimating based on SAND traffic exchanged with the peer. In addition, some of the data comprising the Local Topology Advertisement message is sourced from the Neighbor Information Base, such as Reachability and Path Metrics as discussed in Table 8.¶
The Local Topology Advertisement message SHALL be identified by message type 5. The message parameters are listed below and correspond with the CDDL of Figure 16.¶
Each Local Topology Advertisement SHALL contain a Peer List.¶
Each item of the Peer List represents a combination of a 1-hop neighbor node and metrics associated with network traffic from and to that node.¶
The common peer parameters are listed below and correspond with the CDDL of Figure 17. These are also registered in the IANA registry defined in Section 8.7. Peer parameters with negative keys are reserved for private or experimental use.¶
eid
from [RFC9171] representing the unique SAND Singleton EID for the neighbor node.¶
This pair uses key 2 and value of uint
containing an enumerated value indicating the status of communication with the neighbor.
The value is one of the following:¶
schedule
item as defined in Figure 4.
Each time at which the schedule is valid indicates when communication is expected to be available (in either direction).
This is different than the resource schedule of the node itself, and represents availability of the shared network between the source node and this peer.¶
time-duration
indicating the expected one-way light time (OWLT) of traffic from the peer in milliseconds.¶
time-duration
indicating the expected OWLT of traffic to the peer in milliseconds.¶
unsigned-fraction
indicating the expected maximum data rate of traffic from the peer in octets per second.¶
unsigned-fraction
indicating the expected maximum data rate of traffic to the peer in octets per second.¶
unsigned-fraction
indicating the expected bit error rate (BER) of traffic from the peer as a ratio.¶
unsigned-fraction
indicating the expected BER of traffic to the peer as a ratio.¶
For conciseness of encoding, the unsigned-fraction
values SHOULD limit the mantissa to less than 8 bits.
This limits the precision of encoded values but because these are all rough estimates that should be sufficient for contact planning purposes.¶
There is no required combination of RX and TX parameters for any peer. Because these might be estimated from traffic or some kind of underlying discovery protocol (e.g., DLEP) it is possible to obtain estimates for some subset of these but not all of them.¶
For both RX and TX Data Rate values, the rate is averaged over the entire valid time, so it is actually average-of-maximum rate. Another way to think of it is that the sum-total valid time duration multiplied by the data rate value will yield a total data volume that is transferable from (or to) the peer within the validity duration.¶
The Router Advertisement message exposes parameters about the source node's willingness to route bundles with different categories of destination EIDs. Each willingness to associate with an EID pattern?¶
The Router Advertisement message SHALL be identified by message type 6. The message parameters are listed below and correspond with the CDDL of Figure 18.¶
uint
representing a willingness to route (see later definition) for bundles with a singleton destination EID.
The absence of this pair SHALL be interpreted as a willingness of zero (not willing).¶
uint
representing a willingness to route (see later definition) for bundles with a non-singleton destination EID.
The absence of this pair SHALL be interpreted as a willingness of zero (not willing).¶
bstr
containing an encoded eid-pattern
from [I-D.sipos-dtn-eid-pattern].
The value contains the set of endpoints not participating in SAND but for which the source node is willing to route.
The value MAY be an any-scheme pattern or contain an any-SSP pattern.¶
Each willingness value is an integer in the inclusive range from 0 through 6, where 0 indicates the node will never route for that type and the values 1 through 6 indicate an increasing level of willingness. In the absence of additional configuration, a node which is willing to route SHALL have a default willingness of 3 and include the associated message item.¶
The presence of a Routable Endpoints pattern allows a participating router to expose node information from a stub network setting "behind" the router. All of these endpoints SHALL be treated as having persistent and reliable connectivity to the router sending the message. More TBD¶
TBD¶
The Endpoint Advertisement message SHALL be identified by message type 7. The message parameters are listed below and correspond with the CDDL of Figure 19.¶
endpoint-defn
items defined later in this section.
Each Endpoint List SHALL contain at least one item.
Each Endpoint List item SHALL have a unique Service ID parameter.¶
Each Endpoint Advertisement SHALL contain an Endpoint List. Each item of the Endpoint List SHOULD be reachable as a bundle destination on the node sending the message.¶
Because different endpoints (and their applications) are likely to have varying parameter sets, each endpoint definition is encoded as a CBOR map following the same conventions of SAND Message structure. There are several common endpoint parameters related to validity schedule and information about security policy.¶
The common endpoint parameters are listed below and correspond with the CDDL of Figure 20. These are also registered in the IANA registry defined in Section 8.8. Endpoint parameters with negative keys are reserved for private or experimental use.¶
This pair uses key 1 and a value specific to the scheme of the Source EID of the SAND Bundle containing this message. Possible Service ID values are defined in Section 8.9.¶
The initial types for current schemes being: IPN service numbers as uint
values and DTN service demux as tstr
values.¶
uint
item corresponding to one of the registered values from the "'ipn' Scheme URI Well-known Service Numbers for BPv7" registry within [IANA-BUNDLE].
If this parameter is absent and the Service ID itself is an IPN service number it SHALL be looked up as a Well-known Service Number.¶
schedule
item as defined in Figure 4.
Each time at which the schedule is valid indicates when an application is expected to be operating on the endpoint.¶
This pair uses key 5 and value of uint
containing flags indicating which aspects of payload security are required for communicating with this endpoint.
If this parameter is absent there is no information about the required policy.¶
The security flag at bit 0 indicates that the payload SHALL be a target of a BIB that the node can accept. The security flag at bit 1 indicates that the payload SHALL be a target of a BCB that the node can accept. The security flag at bit 1 indicates that the any accepted security block SHALL bind to the primary block as AAD.¶
Each participating node SHOULD register a singleton endpoint for the SAND application itself. This allows SAND Bundles to be transported with payload confidentiality to specific peer nodes. The endpoint SHOULD use the well-known service number from Section 8.2 when the Node ID uses the IPN scheme.¶
The Endpoint advertisement for the SAND singleton endpoint SHALL contain at least a Payload Security Required value.¶
This section outlines the ways in which SAND Messages (Section 5) can be combined into SAND Bundles (Section 4.2) and transported to other SAND-participating nodes. Because SAND messages can be combined in many ways and because the contents of each message can be filtered-out based on the need for data privacy or operational security considerations, these modes are not exhaustive of how SAND messages can be used to advertise to and discover about peers.¶
When a node first enrolls in a network, or when a node is informed of a link state change to active, it SHOULD send an Group Hello message set with a Hop Limit of 1 using the Default Convergence Layer. Because this is a group destination, it will be sent as a plaintext payload. This message set consists of the following:¶
The node SHALL include a Data Solicitation message if the time since the last Data Solicitation on that interface has exceeded an implementation-defined threshold.¶
For a new enrollment, a node SHOULD solicit all of the following: Identity Advertisement, Resource Advertisement, Interface Advertisement, Convergence Layer Advertisement, Local Topology Advertisement. For link state change, a node SHOULD solicit at least Local Topology Advertisement.¶
When a node is informed by some lower-level discovery mechanism that a specific peer is reachable via IP address, it SHOULD send a Targeted Hello message set with a Hop Limit of 1 using the Default Convergence Layer with the peer's IP address as destination. This message set contains the same messages and data as the Group Hello and is also sent as plaintext payload when peer BP identity and security information is not yet available.¶
TBD¶
TBD¶
This section separates security considerations into threat categories based on guidance of BCP 72 [RFC3552].¶
Because this protocol is involved in enrollment of a node into a BP network, the initial group messaging from a participating node necessarily has a plaintext payload.¶
One avoidance of passive leaking is for the source node to filter-out sensitive data from its initial messages. This could include not disclosing certain IP addresses assigned to interfaces, certain CL instances, or certain 1-hop neighbors from advertisement messages. It could also include not disclosing certificates from CAs or with key purposes which are sensitive. Because the initial group messaging is interface-specific, the filtering-out of data does not need to be symmetric across all interfaces on which the node is participating in SAND.¶
Another possible mitigation is to avoid group messaging entirely on an interface and rely on lower-layer network peer discovery to identify potential participants and then attempt to use UDPCL with DTLS to establish secure transport with the peer. While more secure from eavesdroppers, this method is more time- and resource-consuming than group messaging. This method also assumes that transport-layer security is even possible while in some environments only BP-layer security is viable.¶
The behaviors described in this section all amount to a potential denial-of-service to a participating node. The denial-of-service could be limited to an individual node, or could affect all entities on a host or network segment.¶
Because there is a Data Solicitation mechanism it is possible to attempt an amplification attack by soliciting many types of data, with corresponding large bundle size, using a small request bundle. A mitigation of this kind of attack is to treat solicitation requests in the context of minimum and maximum update intervals. Rather than causing a set of advertisements directly, the solicitation is treated as an update timer reset limited accordingly.¶
A participating node may, intentionally or not, use singleton or group messaging to overwhelm a link or network, requiring the receiving node to process the data. This kind of attack applies to BP Agents generally and is not specific to SAND messaging. The victim node can block bundles from network peers which are thought to be incorrectly behaving within network.¶
Because the Default Convergence Layer uses UDP transport, the recommended configurations of this document result in behaviors which conform to the limitations of [RFC8085], specifically Section 4. This protocol uses the "congestion avoidance" strategy by having implementations choose appropriate timer intervals for minimum SAND updates and, when applicable, for UDPCL redundant transmission Section 3.3.1 of [I-D.sipos-dtn-udpcl].¶
For BP nodes enrolling in a network for the first time, with proper authorization to do so, other participating nodes will not be able to authenticate SAND Bundles per the requirements of Section 4.4 without having associated end-entity certificates available.¶
A participating node SHOULD have the ability for an application to inspect the payload of a bundle as part of BPSec processing in order to extract necessary certificates from Identity Advertisement messages. If that is not possible, a source node SHOULD include necessary certificates within any BIB needed to satisfy requirements of Section 4.4. Determination of this need is a network administration matter outside the scope of this document.¶
In environments where PKI is not available for the BP-layer, the SAND could be operated without the requirements of Section 4.4 but doing so is outside the scope of this document. Even in cases where there is network-layer or link-layer security, specifically source authentication with proof-of-possession, having an authorized lower-layer identity does not convey to unlimited BP-layer authorization. Part of the purpose of BP-layer integrity protection is to prevent a misconfigured node from polluting topology information bases of BP routers.¶
Registration procedures referred to in this section are defined in [RFC8126].¶
Within the registry group of [IANA-BUNDLE], the registry titled "'imc' Scheme Well-known Group Numbers for BPv7" has been updated to include the following entry.¶
Value | Description | Reference |
---|---|---|
TBA1 | SAND Participants | [This specification] |
Within the registry group of [IANA-BUNDLE], the registry titled "'imc' Scheme Well-known Service Numbers for BPv7" has been updated to include the following entry.¶
Value | Description | Reference |
---|---|---|
TBA2 | SAND Messaging | Section 4 of [This specification] |
Within the registry group of [IANA-BUNDLE], the registry titled "'ipn' Scheme URI Well-known Service Numbers for BPv7" has been updated to include the following entry.¶
Value | Description | Reference |
---|---|---|
TBA3 | SAND Messaging | Section 4 of [This specification] |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND Message Parameter Keys" and initialize it with the contents of Table 16. The registration procedure is Specification Required.¶
Specifications of new common parameters need to define the code point (an int16
integer) as well as the CBOR form and meaning of the associated value.¶
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 |
---|---|---|
-32768 to -1 | reserved for type-specific parameters | [This specification] |
0 | Message Type | Section 5 of [This specification] |
2 | Reference Time | Section 5 of [This specification] |
3 | Validity Duration | Section 5 of [This specification] |
4 | Repetition Interval | Section 5 of [This specification] |
5 to 32511 | unassigned | |
32512 to 32767 | Private/Experimental Use | [This specification] |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND Message Types" and initialize it with the contents of Table 17. 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 code point (an int16
integer), as well as what message parameters are required and allowed within the message.
Specifications need to define how those CBOR parameters are used by a node 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 |
---|---|---|
-32768 to -1 | Private/Experimental Use | [This specification] |
0 | reserved | [This specification] |
1 | Data Solicitation | Section 5.1 of [This specification] |
2 | Identity Advertisement | Section 5.2 of [This specification] |
3 | Convergence Layer Advertisement | Section 5.4 of [This specification] |
4 | Resource Advertisement | Section 5.5 of [This specification] |
5 | Local Topology Advertisement | Section 5.6 of [This specification] |
6 | Router Advertisement | Section 5.7 of [This specification] |
7 | Endpoint Advertisement | Section 5.8 of [This specification] |
8 to 32767 | unassigned |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND CL Parameter Keys" and initialize it with the contents of Table 18. The registration procedure is Specification Required.¶
Specifications of new common parameters need to define the code point (an int16
integer) as well as the CBOR form and meaning of the associated value.¶
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 |
---|---|---|
-32768 to -1 | reserved for type-specific parameters | [This specification] |
0 | CL Type | Section 5.4 of [This specification] |
2 | DNS Name List | Section 5.4 of [This specification] |
3 | IP Address List | Section 5.4 of [This specification] |
4 | Port Number | Section 5.4 of [This specification] |
5 | Transport Security Required | Section 5.4 of [This specification] |
6 | Role | Section 5.4 of [This specification] |
7 to 32511 | unassigned | |
32512 to 32767 | Private/Experimental Use | [This specification] |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND CL Types" and initialize it with the contents of Table 19. 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 int16
integer), as well as the other CL parameters required and allowed.
Specifications need to define how those CBOR parameters are used by a node 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 |
---|---|---|
-32768 to -1 | Private/Experimental Use | [This specification] |
0 | reserved | [This specification] |
1 | TCPCLv4 | Section 5.4.1 of [This specification] |
2 | UDPCLv2 | Section 5.4.2 of [This specification] |
3 | LTPCL | Section 5.4.3 of [This specification] |
4 to 32765 | unassigned | |
32766 | TCPCLv3 | Section 5.4.4 of [This specification] |
32767 | RFC 7122 UDPCL | Section 5.4.5 of [This specification] |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND Peer Parameter Keys" and initialize it with the contents of Table 20. The registration procedure is Specification Required.¶
Specifications of new peer parameters need to define the code point (an int16
integer) as well as the CBOR form and meaning of the associated value.
Specifications need to define how those CBOR parameters are used by a node to relate the encoded message to the node'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 |
---|---|---|
-32768 to -1 | Private/Experimental Use | [This specification] |
0 | Node ID | Section 5.6 of [This specification] |
2 | Reachability | Section 5.6 of [This specification] |
3 | Validity Schedule | Section 5.6 of [This specification] |
4 | RX Delay | Section 5.6 of [This specification] |
5 | TX Delay | Section 5.6 of [This specification] |
6 | RX Data Rate | Section 5.6 of [This specification] |
7 | TX Data Rate | Section 5.6 of [This specification] |
8 | RX Bit Error Rate | Section 5.6 of [This specification] |
9 | TX Bit Error Rate | Section 5.6 of [This specification] |
8 to 32767 | unassigned |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND Endpoint Parameter Keys" and initialize it with the contents of Table 21. The registration procedure is Specification Required.¶
Specifications of new peer parameters need to define the code point (an int16
integer) as well as the CBOR form and meaning of the associated value.
Specifications need to define how those CBOR parameters are used by a node to relate the encoded message to the node'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 |
---|---|---|
-32768 to -1 | Private/Experimental Use | [This specification] |
0 | Service ID | Section 5.8 of [This specification] |
2 | Well-Known Service Number | Section 5.8 of [This specification] |
3 | Application State | Section 5.8 of [This specification] |
5 | Payload Security Required | Section 5.8 of [This specification] |
6 to 32767 | unassigned |
EDITOR NOTE: registry to-be-created upon publication of this specification.¶
IANA will create, under the "Bundle Protocol" registry group [IANA-BUNDLE], a registry titled "SAND Endpoint Service Schemes" and initialize it with the contents of Table 22. The registration procedure is Standards Action, which is identical to the procedure for the "Bundle Protocol URI Scheme Types" registry. Reserved values from that registry also apply to this registry and should be kept in-sync by IANA.¶
Specifications of new service identifiers need to define how each EID-scheme-specific service identifier is encoded and how it relates to service EIDs on the source node.¶
EID Scheme Value | Description | Reference |
---|---|---|
0 | reserved | [RFC9171] |
1 | dtn scheme service demux | Section 5.8 of [This specification] |
2 | ipn scheme service number | Section 5.8 of [This specification] |
3 to 254 | unassigned | |
255 to 65535 | reserved | [RFC9171] |
>65535 | reserved for private use | [RFC9171] |
Much pre-draft review was performed to make the document clear and readable by Sarah Heiner of JHU/APL.¶