Internet-Draft | BP Zero-Conf | October 2023 |
Sipos | Expires 8 April 2024 | [Page] |
This document explains how to use existing protocols, registries, code points, and algorithms to operate a Bundle Protocol (BP) edge node within a stable, non-challenged local underlayer IP network without the need for prior BP-layer configuration or long-term state. The purpose of this is to significantly lower the barrier to entry for lightweight BP edge nodes intended to act as endpoints for one (or only a few) BP applications.¶
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 8 April 2024.¶
Copyright (c) 2023 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.¶
The Delay-Tolerant Networking (DTN) architecture of [RFC4838] and its realization in the Bundle Protocol (BP) Version 7 of [RFC9171] do not directly address how an edge node can gain access to a BP network. Existing Bundle Protocol Agent (BPA) and Convergence Layer Adaptor (CLA) implementations treat BP-layer and network-layer configuration as externally supplied and managed data; this is the configuration burden to operate a BP node (including its BPA and variaous CLAs).¶
A general-purpose BP node is designed to operate in environments with complex and diverse topologies, schedules, and underlayer networks. This provides an incredible power for a BP network to span large and complex physical and organizational domains, but this power comes at the cost of highly complex configuration on each node and a consistency of configurations between adjacent nodes. That necessary configuration represents a barrier to entry for deploying a simple edge node, e.g. one which is intended to mostly relay single-application data and rely on external BP routers to handle complexities associated with network topology and its time-variance.¶
The situation which this document addresses is shown in Figure 1, where one or more BP edge router acts as a gateway between an Internet Protocol (IP) local area network (LAN) and some larger BP core network. All edge nodes in the local network use the gateway router as a default bundle forwarding next-hop and a sole bundle previous-hop. The TCP Convergence Layer (TCPCL) is used on the IP LAN network due to it's favorable congestion control properties and it's ability to participate in DNS-based discovery without any new IANA allocations and without needing changes to BP or CLA behavior.¶
This type of situation is expected to be present within LANs on the edge of a mostly-non-terrestrial BP wide area network (WAN). Each of those LANs can have an isolated address space and potentially even use purely link-local addressing (which would create a situation similar to the Autonomic Control Plane (ACP) of [RFC8368]).¶
While the methods of this document can provide an easy way for an edge node to access a BP network, there are many situations listed in Section 1.1 where these methods do not apply. These caveats to use do not diminish the utility in situations where the methods described here do apply.¶
This document applies to a common but somewhat overlooked situation where an edge node is well-connected, via a non-challenged IP LAN, to one or more edge router of a BP network.¶
The zero-configuration CLA method defined in Section 3 does not apply to the following situations:¶
The zero-state BPA method described in Section 4 does not apply to the following situations:¶
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 document distinguishes between cases where a BP node is expected to function as an intermediate "router" (either on a network exterior or in its interior) versus an "edge node" with a more straightforward workload to source from and deliver to overlayer applications.¶
This document also distinguishes between a "core network" which extends up to, but not beyond, its edge routers from the broadest sense of "network" that includes all nodes sending, delivering, or forwarding bundles. When discussing behaviors between the edge routers and edge nodes, this document uses the term "IP LAN" to distinguish that IP-based edge topology from whatever means other nodes in the core network have to exchange bundles. The IP LAN is assumed to have the expected properties of an IP network, and not behave as a "challenged network" as described in [RFC4838].¶
For the stateless agent of Section 4, there is a separation between "TX session" used solely to transmit bundles and "RX session" used to receive bundles.¶
For a truly zero-configuration edge node, the network layer and below needs to be automatically configured. This is something which can already be achieved using methods such as the Dynamic Host Configuration Protocol (DHCP) of [RFC2131] and [RFC8415], Stateless Address Autoconfiguration of [RFC2462], or link-local addressing of [RFC3927] and [RFC4291]. There MAY be link- and network-level authentication and authorization applied to edge nodes. The form of these access control methods is a network policy matter.¶
Once an edge node has an IP address and local network configuration, the method of Section 3 is used to lookup TCPCL connection parameters from the edge router(s) in the LAN. Using those parameters, the methods of Section 4 can be used when an application wants to send or receive bundles via some edge router.¶
The methods defined in this document rely on a local BPA willing to act as an edge router for associated BP edge nodes within the same IP LAN. The edge router SHALL act as a TCPCL passive listener in accordance with Section 4 of [RFC9174]. The edge router MAY act as the active or passvie roles of any number of other convergence layers, but those are immaterial to the functioning of these methods.¶
When a request to establish a TCPCL session is received, the edge router SHALL respond with the following initialization parameters:¶
All other session initialization parameters are left as an implementation matter.¶
At the BPA level, the edge router SHALL be willing to forward and store bundles sourced by and destined for all of the edge nodes for which it establishes TCPCL sessions. The fact of being a "router" implies all of the activities required by [RFC9171] will be done for those edge-node-related bundles. It is an implementation matter for the router to decide if and when to limit new TCPCL sessions or transfers to conserve resources.¶
After establishing a TCPCL session with an edge node, the edge router SHALL treat contact with the edge node as persistent for any interior routing or discovery protocols within the BP network. Even if contact with the edge node is not truly persistent, when it establishes TCPCL sessions with the edge node the edge router assumes responsibility for queueing bundles destined for that edge node. The assumption here is that the IP network between edge router and node is persistent enough to appear continuous over time to the core BP network.¶
One side effect of these required behaviors is that edge nodes on the LAN can also send bundles between each other (via the edge router) without any prior configuration. The assumption of that behiavor is that the applications are aware of each other's EIDs from configuration outside of the BP or IP networks. Future work on BP node and service discovery could be used to avoid this assumption; once an edge node is able to communicate at the BP layer it could discover BP services via BP itself.¶
The SRV fields for priority and weight defined in [RFC2782] allow for a large variety of possible network configurations with multiple edge routers providing access to a core network. Due to the need for edge routers to queue bundles destined for edge nodes and the possibility of an edge router serving an unbounded number of edge nodes, it is RECOMMENDED to provide high-availability of service within a single edge router rather than using mulitple separate routers. When multiple edge routers are used on an IP LAN it is RECOMMENDED to give them distinct SRV priority fields so that one router is the active provider and the other(s) act as warm standby providers.¶
The risk when multiple routers are registered as TCPCL listeners with the same SRV priority is that a single edge node with limited connectivity (e.g., for power saving purposes) would choose different router instances at different times and require that the edge routers themselves coordiante and forward queued bundles to the currently-connected router. Although this is an acceptable and allowed situation, it adds hops to a bundle's path, increases resource burdens on the edge routers, and complicates the ways that bundle forwarding could fail before delivery.¶
This section defines a method to allow BP routers to advertise their presenece in an IP LAN and for edge nodes to discover those routers, both via DNS-based Service Discovery (DNS-SD) as defined in [RFC6763].¶
It is important to understand that the method defined in this section only applies to nodes willing to act as a gateway BP router for thir IP LAN. Any BP node which does not intend to forward bundles (both to and from) other nodes in a LAN SHALL NOT advertise their TCPCL listening state.¶
The DNS-SD naming convention of [RFC6763] combined with the service name registered in [IANA-SVC] for the TCPCL by Section 8.1 of [RFC9174] results in the following relative domain name (RDN):¶
When used with the multicast DNS (mDNS) reserved local domain of [RFC6762] results in the following FQDN:¶
The RDN can also be used with one or more search domain in accordance with [RFC1034].
For example, using a search domain of example.com
results in the following FQDN:¶
In addition to the registered service name this document defines additional TXT RR parameters, as hints about the TCPCL listener, in accordance with Section 6 of [RFC6763] of:¶
txtvers
(TXT RR Version):protovers
(Protocol Version):When an edge router desires to expose its willingness via mDNS, the FQDN of Figure 3 SHALL be registered using DNS PTR and/or SRV resource records (RRs) with fields defined in [RFC6763] and [RFC2782] corresponding to its TCPCL listening configuration.¶
An example of this for a router instance name rtr1
operating with service priority 0, weight 0, DNS name host-name
, and standard TCPCL port is below, with TTL and class fields elided.¶
_dtn-bundle._tcp.local. PTR rtr1._dtn-bundle._tcp.local. rtr1._dtn-bundle._tcp.local. SRV 0 0 4556 host-name.local. rtr1._dtn-bundle._tcp.local. TXT "txtvers=1" "protovers=4"¶
When edge routers are managed via centralized DNS, the RDN of Figure 2 SHALL be registered in the local domain zone using a DNS SRV
RR with fields defined in [RFC2782] corresponding to its TCPCL listening configuration.
Routers MAY update DNS RRs via an in-band protocol such as DNS Update [RFC2136].
Multiple edge routers MAY be present in an IP LAN and identified with SRV RR containing different priority and/or weight fields.¶
An example of multiple SRV RRs in the same domain with different priorities is below, with TTL and class fields elided.¶
_dtn-bundle._tcp.example.com. PTR rtr1._dtn-bundle._tcp.example.com. _dtn-bundle._tcp.example.com. PTR rtr2._dtn-bundle._tcp.example.com. rtr1._dtn-bundle._tcp.example.com. SRV 10 0 4556 primary.example.com. rtr1._dtn-bundle._tcp.example.com. TXT "txtvers=1" "protovers=4" rtr2._dtn-bundle._tcp.example.com. SRV 20 0 4556 backup.example.com. rtr2._dtn-bundle._tcp.example.com. TXT ""¶
For the edge node wanting BP network access, the method is as simple as retrieving the SRV RR for the RDS of Figure 2, either in the mDNS local domain or some other search domain, and using the SRV fields for a TCPCL session establishment.¶
When an edge node desires to look up a local BP router it SHALL attempt to resolve the SRV and TXT RRs in accordance with [RFC6763] by one or both of the following:¶
If the SRV or TXT lookup fails (which includes a lookup result with a target name of ".") the edge node SHALL treat edge routers as currently unavailable from the IP LAN. If SRV or TXT lookup fails, the edge node MAY attempt future lookups based on a schedule configured on the node. The specifics of reattempts at SRV or TXT record retrieval are an implementation matter (see Section 5 for possible alternatives).¶
If the SRV lookup succeeds, the edge node SHALL use the priority and weight fields of each SRV record fields in accordance with [RFC2782] to choose a single instance. When a TCPCL session is needed for transfers (see Section 4) and one or more service instances are available, the edge node SHALL use SRV record fields of a chosen instance in accordance with the active role of [RFC9174].¶
When needing to establish a TCPCL session, an edge node SHOULD use the same service instance for all TCPCL sessions until there is some failure to keep up an existing session or failure in establishing a new session. An edge node MAY use different servcie instnaces at the same time for different TCPCL sessions. It is an implementation matter to determine which service instance, or what combination of instances, to use for needed TCPCL sessions.¶
Beyond achieving CLA discovery for an edge router, an edge node can be operated in compliance with [RFC9171] without needing to use long-term BP-layer storage or state. The method defined in this section uses specifically parameterized TCPCL sessions to send bundles to and receive from an edge router discovered via the method of Section 3, but could use any other method to define how to connect to the edge router.¶
Both the Bundle Transmission and Bundle Reception procedures can be operated simultaneously or sequentially depending on how the overlaying application uses the BPA. It is an implementation matter for how the application indicates these policies to the BPA.¶
Using this method, the BPA can be implemented as a pure software middleware under a BP-aware application. Either the application or BPA library could perform the procedures in a multi-threaded form, but neither BP, nor TCPCL, nor this document require that the various protocol processing be performed in parallel.¶
The overall bundle flows are shown in Figure 5, which indicates how the transmission is handled fully independently from the reception, and how reception can cause status reports but these can be generated synchronously and handled separately from application-caused transmission. This diagram does not show possible security processing within the flows between sessions and the application or administrative element.¶
When the application indicates the need to send one or more bundles, a "TX" TCPCL session SHALL be established in accordance with Section 4 of [RFC9174] with the following initialization parameters:¶
All other TX session initialization parameters are left as an implementation matter.¶
After TX session establishment the bundle(s) requested by the application SHALL be transferred immediately. After all transfers are finished, the TX session SHALL be terminated with a Reason Code of Unknown (0x00).¶
If TX session establishment fails, the application SHALL be informed that the associated bundles were not sent. It is an implementation matter for how to handle this kind of failure (e.g., queueing within the BPA as in Section 5 or within the application).¶
When the application indicates the desire to receive available bundles, an "RX" TCPCL session SHALL be established in accordance with Section 4 of [RFC9174] with the following initialization parameters:¶
All other RX session initialization parameters are left as an implementation matter.¶
After session establishment and until the application indicates otherwise, the RX session SHALL be kept up. When the application indicates that reception is to stop, the RX session SHALL be terminated with a Reason Code of Unknown (0x00).¶
When a transfer is received in the RX session it SHALL be immediately processed in accordance with [RFC9171]. If the received bundle has a Destination to be delivered to the overlying application it SHALL be delivered immediately to the listening applicaiton. Otherwise, the bundle SHALL be deleted. In any case if during the processing of the received bundle it is necessary to send any administrative record (e.g., bundle status report), the transmission procedure of Section 4.1 SHALL be followed for those bundles.¶
If RX session establishment fails, the application SHALL be informed that listening cannot be performed at the requested time. It is an implementation matter for how to handle this kind of failure (e.g., waiting for service availability as in Section 5).¶
Because mDNS and DNS both have dynamic state, a library-based BPA can keep an "egress" queue of bundles to be transmitted and wait for an indication of edge router availability. This is similar to how current stateful BPAs operate, where the bundle source processing is in a different thread of operation from the bundle forwarding processing.¶
A library-based BPA can be used to host more than one independent application if there is an "delivery" queue of bundles destined for endpoints registered to known but non-listening applications. This is similar to how current stateful BPAs operate, where the bundle reception processing is in a different thread of operation from the bundle delivery processing.¶
In environments where the LAN is not IP-based, it is still possible to use the zero-state BPA as defined in Section 4 with some alternative reliable and flow-controlled CL. The CL in this case need not be session-oriented but reliable sessions do make it easier to detect transmission failures and report them to the application. In this situation, the DNS-SD discovery method will not work (as there is no DNS) but there may be other, network-specific methods of discovery or out-of-band CLA configuration will be needed.¶
This specification uses many existing IANA registries, but does not make updates to any registries.¶
To establish a local network address and network parameters, the edge node might be required to supply link- or network-layer credentials. Even with existing protocols such as MACSec or IPSec, it is possible to use the Extensible Authentication Protocl (EAP) of [RFC3748] with the PKIX certificate profile of Section 4.4.2 of [RFC9174]. It is a network policy for how access is granted and network addresses are allocated or authorized.¶
Within the zero-configuration specification of Section 3 there is no prohibition on the use of network-layer, DNS, or TCPCL security. If required by network policy, an edge router will authenticate its peer node's Node ID using the TLS security and PKIX certificate profile of Section 4.4.2 of [RFC9174]. If required by network policy, an edge node will authenticate its peer router's Node ID using the TLS security and PKIX certificate profile of Section 4.4.2 of [RFC9174]. A RECOMMENDED policy is to use mutual authentication of TCPCL when not on an isolated network with its own link-layer or network-layer security.¶
Within the zero-state specification of Section 4 there is no prohibition on the use of BP-layer security. If required by network policy, an edge node will provide BP integrity or confidentialy using the BPSec facilities of [RFC9172] either as a security source or a security acceptor. A RECOMMENDED policy is to have the edge node generate and process BPSec directly when possible, and to have the associated edge router act as BPSec gateway otherwise.¶
This consideration is not specific to the methods of this document, but when an edge router serves as a gateway for many edge nodes it is important that the router implement quotas (hard limits) and prioritization (soft limits) for both storage size and forwarding throughput for each edge node. If quotas are not present, it could be possible for a single edge node to monopolize either storage or LAN throughput on the router and cause denial-of-service to other edge nodes. The algorithms or techniques used to allocate per-node quotas or priorities are outside the scope of this document.¶