idnits 2.17.1 draft-burleigh-dtn-ecos-00.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (May 5, 2021) is 1058 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFCXXXX' is mentioned on line 365, but not defined == Unused Reference: 'RFC3986' is defined on line 391, but no explicit reference was found in the text ** Downref: Normative reference to an Experimental RFC: RFC 5050 Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group S. Burleigh 3 Internet-Draft JPL, Calif. Inst. of Technology 4 Intended status: Standards Track F. Templin 5 Expires: November 6, 2021 The Boeing Company 6 May 5, 2021 8 Bundle Protocol Extended Class of Service (ECOS) 9 draft-burleigh-dtn-ecos-00 11 Abstract 13 This document describes an extension to the Delay-Tolerant Networking 14 (DTN) Bundle Protocol (BP) that marks bundles with class-of-service 15 designators. The class-of-service designators are an "ordinal" 16 number that provides fine-grained prioritization of bundles, a 17 "critical" flag, flags that explicitly request "timely" or "assured" 18 convergence-layer transmission (or both), and an optional QoS tag. 20 Requirements Language 22 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 23 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 24 document are to be interpreted as described in RFC 2119 [RFC2119]. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on November 6, 2021. 43 Copyright Notice 45 Copyright (c) 2021 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 61 2. ECOS Block Format . . . . . . . . . . . . . . . . . . . . . . 3 62 3. Processing . . . . . . . . . . . . . . . . . . . . . . . . . 5 63 3.1. Bundle Origination . . . . . . . . . . . . . . . . . . . 5 64 3.2. Bundle Forwarding . . . . . . . . . . . . . . . . . . . . 6 65 3.3. Bundle Delivery . . . . . . . . . . . . . . . . . . . . . 8 66 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 67 5. Security Considerations . . . . . . . . . . . . . . . . . . . 8 68 6. Normative References . . . . . . . . . . . . . . . . . . . . 8 69 Appendix A. Congestion Experienced . . . . . . . . . . . . . . . 9 70 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 9 72 1. Introduction 74 This document describes an extension to the Delay-Tolerant Networking 75 (DTN) Bundle Protocol (BP) that marks bundles with class-of-service 76 designators. The Bundle Protocol version 7 (BPv7) base specification 77 [I-D.ietf-dtn-bpbis] defines no class of service designators, while 78 its predecessor Bundle Protocol version 6 (BPv6) [RFC5050] defined a 79 single designator for a bundle's class of service: 81 o Priority, a value in the range 0 through 2, with higher values 82 indicating greater urgency: 0 = "bulk", 1 = "normal", 2 = 83 "expedited". Priority level 3 is reserved for future use. 85 For some applications, such as space flight and tactical unmanned air 86 vehicle operations, additional variations in class of service may be 87 required: 89 o Many more levels of priority may be needed, enabling more fine- 90 grained control over the precedence of user-selected application 91 data types in the progress of bundles through the network. 93 o A way of indicating emergency ("critical") traffic may be needed. 94 Emergency traffic is not merely high-priority: it is so important 95 that the user is willing to incur the network overhead of 96 transmitting the bundle along every potential route to its 97 destination, rather than only on the route that would normally be 98 selected as the "best" route according to the applicable routing 99 value function. This expedient ensures that the bundle arrives at 100 its destination in the least possible time, regardless of how 101 accurately the routing system reckons end-to-end latency on any 102 given route: the bundle arrives by whatever turns out to be the 103 fastest route, as well as by all others. 105 o There may be a need to request explicitly that all nodes 106 forwarding the bundle use convergence-layer protocols that either 107 always do or always don't perform retransmission upon detected 108 loss of data. This designation may be important for bundles 109 carrying application data for which timeliness of delivery is 110 known to be more important than certainty, or vice versa. In some 111 cases, retransmitted "old data" may be a waste of bandwidth that 112 could instead be used to convey new data of greater value, or the 113 out-of-order arrival of retransmitted data may degrade the 114 usefulness of streaming data such as audio or video. 116 o There may be a need for an opaque "QoS tag" that can be used by 117 the application to pass a variety of transmission control 118 parameters to the convergence-layer protocol. 120 The Extended Class of Service (ECOS) extension block for BPv7 is 121 designed to provide these class of service designators. 123 2. ECOS Block Format 125 The ECOS block conforms to sections 4.3.2 and 4.4 of 126 [I-D.ietf-dtn-bpbis], where the block SHALL be represented as a CBOR 127 array with 5 elements (i.e., since CRC type is 0). The ECOS block is 128 constrained as follows: 130 o Block type code is TBD. (See "IANA Considerations" below.) 132 o Block number is coded as discussed in Section 4.1 of 133 [I-D.ietf-dtn-bpbis]. 135 o Per Section 4.2.4 of [I-D.ietf-dtn-bpbis], block processing 136 control flags are next encoded as a CBOR unsigned integer. The 137 following block processing control flag MUST be set to 1: 139 * Bit 0 - block must be replicated in every fragment. 141 The setting of other block processing control flags, where not 142 mandated by the Bundle Protocol specification, is an 143 implementation matter. 145 o CRC type is set to 0 as discussed in Section 4.2.1 of 146 [I-D.ietf-dtn-bpbis]. 148 o Block-type-specific data is represented as a single definite- 149 length CBOR byte string containing a 16-bit Flags field, an 8-bit 150 Priority field and (optionally) a 32-bit QoS Tag field. 152 The first field of the Block-type-specific data is a 16-bit Flags 153 byte. The bits of the flags signify the following conditions: 155 o The 0x0001 bit, if True, indicates that the bundle is "critical": 156 the bundle protocol agent is requested to forward one copy of the 157 bundle along every path that might get it to its destination. 159 o The 0x0002 bit, if True, indicates an explicit preference that 160 delivery of the bundle be timely and in order: the bundle protocol 161 agent is requested to forward the bundle on a "best-effort" basis, 162 without retransmission. 164 o The 0x0004 bit, if True, indicates that the Ordinal Number field 165 of this ECOS block (the byte immediately following the Flags) is 166 followed by a numeric QoS Tag field. 168 o The 0x0008 bit, if True, indicates an explicit preference that 169 delivery of the bundle be assured even if out of order: the bundle 170 protocol agent is requested to forward the bundle reliably, with 171 retransmission as necessary. 173 o The 0x0010 bit, if True, means "BSSP required". 175 o The 0x0020 bit, if True, means "BIBE required". 177 o The 0x0040 bit, if True, means "(BIBE) Custody Transfer required". 179 o Bits 0x0080 through 0x2000 are reserved for future use. For the 180 purpose of this specification, they are set to 0 on transmission 181 and ignored on recepition (future specifications may define new 182 settings and interpretations). 184 o Bits 0x4000 and 0x8000 are reserved as Congestion Experienced (CE) 185 indications. For the purpose of this specification, they are set 186 to 0 on transmission and ignored on recepition (future 187 specifications may define new settings and interpretations). 189 Note that both the 0x0002 and 0x0008 bits might be set for a given 190 bundle. This indicates an explicit preference that delivery of the 191 bundle be timely and in-order if possible but in any case assured, as 192 in a bundle streaming service: whenever loss is detected in "best- 193 effort" transmission, the lost data are retransmitted for eventual 194 out-of-order delivery in background. 196 The Flags field is followed by an 8-bit Priority field with the most 197 significant 2 bits containing a Service Class value as follows: 199 o 00 = bulk 201 o 01 = normal 203 o 10 = expedited 205 o 11 is reserved for future use. 207 The remaining 6 bits of the Priority field encode an unsigned Ordinal 208 Number value in the range 0-63. For a bundle whose Service Class is 209 2 ("expedited"), the Ordinal Number indicates the relative priority 210 of this bundle among all other expedited bundles: Ordinal Number 211 value 63 indicates greater urgency than value 62, and so on. For a 212 bundle whose Service Class is not 2, the Ordinal Number value has no 213 significance. 215 If the 0x0004 bit of the Flags field is True, the third field of the 216 block data is a numeric QoS Tag value. The significance of the QoS 217 Tag is an implementation matter. Notionally, the QoS Tag is intended 218 to be used to convey quality-of-service information to the 219 convergence-layer protocol adapter. The bundle protocol agent's 220 response to a QoS Tag whose significance is unknown is an 221 implementation matter. 223 3. Processing 225 3.1. Bundle Origination 227 At the time a bundle is sourced it MAY contain one ECOS block. When 228 a bundle contains an ECOS block, the ECOS block MUST precede the 229 payload block and it MUST be the only ECOS block in the bundle. 231 The manner in which the application issuing the block communicates 232 the values of the ECOS block data fields to the bundle protocol agent 233 is an implementation matter. 235 If the ECOS block contains a QoS Tag field, then the 0x0004 bit of 236 the block's Flags field MUST be set to 1 (True) and the QoS Tag MUST 237 be a numeric value. Otherwise the 0x0004 bit of the block's Flags 238 field MUST be set to 0 (False) and the QoS Tag field is omitted. 240 The Priority field of the ECOS block MUST contain a 2-bit Service 241 Class value followed by a 6-bit Ordinal Number unsigned integer in 242 the range 0-63. 244 3.2. Bundle Forwarding 246 This section applies only to nodes at which procedures for processing 247 ECOS blocks are implemented. When a node at which such procedures 248 are not implemented receives a bundle that contains one or more ECOS 249 blocks, those blocks must be processed as prescribed in the Bundle 250 Protocol specification. 252 When a received bundle contains multiple ECOS blocks or contains a 253 single ECOS block that is invalid (that is, one that violates one or 254 more of the provisions of section 3.1 above), all ECOS blocks in the 255 bundle MUST be ignored and SHOULD be deleted. 257 At the time a bundle that has no valid single ECOS block is received 258 from a neighboring node, the bundle protocol agent MAY insert an ECOS 259 block into the bundle. The values of the block data fields of such 260 an ECOS block are an implementation matter, provided that they 261 conform to this specification. 263 The forwarding of a bundle that contains a valid ECOS block, whether 264 locally sourced or received from another bundle protocol agent or 265 locally inserted upon reception from another bundle protocol agent, 266 MUST comply with the following rules: 268 1. If the 0x0001 bit of the ECOS block's Flags field is set to 1, 269 then exactly one copy of the bundle SHOULD be forwarded to every 270 neighboring node that has some plausible prospect of being able 271 to forward the bundle toward its final destination without 272 returning it to the local node, a determination that is a matter 273 left to the bundle protocol agent's route computation mechanism; 274 also, the bundle MUST be queued for transmission as if its 275 Service Class were 2 ("expedited") and its Ordinal Value were 63, 276 regardless of the actual values of these fields. Each "critical" 277 bundle MUST be forwarded *at most once* by each bundle protocol 278 agent; that is, critical bundles MUST NOT be reforwarded in 279 response to custody refusals, the expiration of custody transfer 280 timers, the presence of a routing loop in the network, or any 281 other condition, because such reforwarding could result in 282 unbounded bundle transmission explosions. The manner in which 283 this constraint is enforced is an implementation matter. One 284 possible approach is to manage a list of the IDs and expiration 285 times of all critical bundles received, removing bundles from the 286 list only as the associated expiration times are reached; since 287 "critical" bundles should be issued rarely, managing such a list 288 should not be a severe processing burden. Note that a bundle 289 protocol agent MAY choose to handle a critical bundle as non- 290 critical traffic and forward it on only a single path, but 291 ignoring the "critical" flag may put network assets as risk and 292 should be avoided unless necessary to preserve the continued 293 operation of the bundle protocol agent. 295 2. If the 0x0002 bit of the ECOS block's Flags field is set to 1, 296 then the bundle protocol agent SHOULD forward the bundle by 297 invoking an adapter for a convergence layer protocol that does 298 NOT perform retransmission of data lost in transit. If the 299 bundle protocol agent has no access to such a convergence layer 300 adapter then this flag may be ignored, but in that case 301 application data units may arrive out of transmission order at 302 the destination (possibly degrading application performance) and/ 303 or transmission bandwidth may be wasted on unnecessary 304 retransmission, reducing the effective throughput of the network. 306 3. If the 0x0008 bit of the ECOS block's Flags field is set to 1, 307 then the bundle protocol agent SHOULD forward the bundle by 308 invoking an adapter for a convergence layer protocol that DOES 309 perform retransmission of data lost in transit. If the bundle 310 protocol agent has no access to such a convergence layer adapter 311 then this flag may be ignored, but in that case application data 312 units may not arrive at the destination, possibly degrading 313 application performance. 315 4. If both the 0x0002 bit and the 0x0008 bit of the ECOS block's 316 Flags field are set to 1, then the bundle protocol agent SHOULD 317 forward the bundle by invoking an adapter for a convergence layer 318 protocol that functions as a bundle streaming service: whenever 319 loss is detected in "best-efforts" transmission, the lost data 320 are retransmitted for eventual out-of-order delivery in 321 background. If the bundle protocol agent has no access to such a 322 convergence layer adapter then this flag may be ignored, but in 323 that case application performance may be degraded. 325 5. If the bundle's Service Class is 2 (expedited), then the bundle 326 protocol agent MUST forward this bundle only after forwarding all 327 other bundles that are to be forwarded to the same node with 328 Service Class 2 and have explicit or implicit ordinal value that 329 is higher than or equal to the ECOS block's ordinal value. 330 Moreover, the bundle protocol agent MUST forward this bundle 331 before forwarding any other bundle that is to be forwarded to the 332 same node and either (a) has Service Class 2 and an explicit or 333 implicit ordinal value lower than the ECOS block's Ordinal Number 334 field or (b) has Service Class less than 2. An implicit ordinal 335 value is the value for a bundle that has no valid ECOS block; 336 that value is 0. 338 The valid ECOS block of a received bundle that is to be forwarded to 339 another node MUST NOT be deleted from the bundle. 341 3.3. Bundle Delivery 343 When a bundle that contains an ECOS block is delivered to its final 344 destination, the values of ECOS block fields MAY be provided to the 345 application but otherwise have no impact on bundle delivery 346 procedures. 348 4. IANA Considerations 350 The IANA is requested to allocate a codepoint TBD for the Extended 351 Class of Service (ECOS) block in the Bundle Block Type registry 352 defined in [I-D.ietf-dtn-bpbis] and with reference to this 353 specification. The registration should appear as follows: 355 +----------+-------+-----------------------------+---------------+ 357 | Bundle | Value | Description | Reference | 359 | Protocol | | | | 361 | Version | | | | 363 +----------+-------+-----------------------------+---------------+ 365 | 7 | TBD | Extended Class of Service | [RFCXXXX] | 367 5. Security Considerations 369 Clearly the injection of bundles with the "critical" flag set to True 370 could increase the impact of a denial of service attack. As with all 371 such attacks, the best available defense is to require the use of 372 BPsec [I-D.ietf-dtn-bpsec] on all received bundles. 374 6. Normative References 376 [I-D.ietf-dtn-bpbis] 377 Burleigh, S., Fall, K., and E. J. Birrane, "Bundle 378 Protocol Version 7", draft-ietf-dtn-bpbis-31 (work in 379 progress), January 2021. 381 [I-D.ietf-dtn-bpsec] 382 III, E. J. B. and K. McKeever, "Bundle Protocol Security 383 Specification", draft-ietf-dtn-bpsec-27 (work in 384 progress), February 2021. 386 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 387 Requirement Levels", BCP 14, RFC 2119, 388 DOI 10.17487/RFC2119, March 1997, 389 . 391 [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform 392 Resource Identifier (URI): Generic Syntax", STD 66, 393 RFC 3986, DOI 10.17487/RFC3986, January 2005, 394 . 396 [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol 397 Specification", RFC 5050, DOI 10.17487/RFC5050, November 398 2007, . 400 Appendix A. Congestion Experienced 402 Section 2 of this specification reserves two ECOS flag bits as 403 Congestion Experienced (CE) indications and mandates their values be 404 set to 0. Further study on whether BPv7 would benefit from CE 405 indications can therefore be conducted in parallel with the 406 progression of this specification. 408 Authors' Addresses 410 Scott Burleigh 411 JPL, Calif. Inst. of Technology 412 4800 Oak Grove Drive, m/s 301-490 413 Pasadena, CA 91109 414 USA 416 Phone: +1 818 393 3353 417 Email: Scott.C.Burleigh@jpl.nasa.gov 419 Fred Templin 420 The Boeing Company 421 P.O. Box 3707 422 Seattle, WA 98124 423 USA 425 Phone: +1 425 802-9039 426 Email: fltemplin@acm.org