Skip to main content

Bundle Protocol Version 7
draft-ietf-dtn-bpbis-14

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft that was ultimately published as RFC 9171.
Authors Scott Burleigh , Kevin Fall , Edward J. Birrane
Last updated 2019-09-12 (Latest revision 2019-08-04)
Replaces draft-dtnwg-bp
RFC stream Internet Engineering Task Force (IETF)
Formats
Reviews
Additional resources Mailing list discussion
Stream WG state Submitted to IESG for Publication
Document shepherd Fred Templin
Shepherd write-up Show Last changed 2019-07-25
IESG IESG state Became RFC 9171 (Proposed Standard)
Consensus boilerplate Unknown
Telechat date (None)
Responsible AD Magnus Westerlund
Send notices to "Fred Templin" <fred.l.templin@boeing.com>
draft-ietf-dtn-bpbis-14
Internet-Draft        Bundle Protocol Version 7             August 2019

   [URIREG] Thaler, D., Hansen, T., and T. Hardie, "Guidelines and
   Registration Procedures for URI Schemes", RFC 7595, BCP 35, June
   2015.

11.2. Informative References

   [ARCH] V. Cerf et al., "Delay-Tolerant Network Architecture", RFC
   4838, April 2007.

   [BIBE] Burleigh, S., "Bundle-in-Bundle Encapsulation", Work In
   Progress, June 2017.

   [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource
   Identifiers (IRIs)", RFC 3987, January 2005.

   [RFC5050] Scott, K. and S. Burleigh, "Bundle Protocol
   Specification", RFC 5050, November 2007.

   [RFC7143] Chadalapaka, M., Satran, J., Meth, K., and D. Black,
   "Internet Small Computer System Interface (iSCSI) Protocol
   (Consolidated)", RFC 7143, April 2014.

   [SIGC] Fall, K., "A Delay-Tolerant Network Architecture for
   Challenged Internets", SIGCOMM 2003.

   [UTC] Arias, E. and B. Guinot, "Coordinated universal time UTC:
   historical background and perspectives" in "Journees systemes de
   reference spatio-temporels", 2004.

12. Acknowledgments

   This work is freely adapted from RFC 5050, which was an effort of
   the Delay Tolerant Networking Research Group. The following DTNRG
   participants contributed significant technical material and/or
   inputs to that document: Dr. Vinton Cerf of Google, Scott Burleigh,
   Adrian Hooke, and Leigh Torgerson of the Jet Propulsion Laboratory,
   Michael Demmer of the University of California at Berkeley, Robert
   Durst, Keith Scott, and Susan Symington of The MITRE Corporation,
   Kevin Fall of Carnegie Mellon University, Stephen Farrell of Trinity
   College Dublin, Howard Weiss and Peter Lovell of SPARTA, Inc., and
   Manikantan Ramadas of Ohio University.

   This document was prepared using 2-Word-v2.0.template.dot.

Burleigh                Expires February 2020                 [Page 51]
Internet-Draft        Bundle Protocol Version 7             August 2019

13. Significant Changes from RFC 5050

   Points on which this draft significantly differs from RFC 5050
   include the following:

     . Clarify the difference between transmission and forwarding.
     . Migrate custody transfer to the bundle-in-bundle encapsulation
        specification [BIBE].
     . Introduce the concept of "node ID" as functionally distinct
        from endpoint ID, while having the same syntax.
     . Restructure primary block, making it immutable.  Add optional
        CRC.
     . Add optional CRCs to non-primary blocks.
     . Add block ID number to canonical block format (to support
        BPSEC).
     . Add definition of bundle age extension block.
     . Add definition of previous node extension block.
     . Add definition of hop count extension block.
     . Remove Quality of Service markings.
     . Change from SDNVs to CBOR representation.

Burleigh                Expires February 2020                 [Page 52]
Internet-Draft        Bundle Protocol Version 7             August 2019

Appendix A.                 For More Information

   Please refer comments to dtn@ietf.org. DTN Working Group documents
   are located at https://datatracker.ietf.org/wg/dtn/documents.  The
   original Delay Tolerant Networking Research Group (DTNRG) Web site
   is located at https://irtf.org/concluded/dtnrg.

   Copyright (c) 2019 IETF Trust and the persons identified as authors
   of the code. All rights reserved.

   Redistribution and use in source and binary forms, with or without
   modification, is permitted pursuant to, and subject to the license
   terms contained in, the Simplified BSD License set forth in Section
   4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info).

Burleigh                Expires February 2020                 [Page 53]
Internet-Draft        Bundle Protocol Version 7             August 2019

Appendix B.                  CDDL expression

   For informational purposes, Carsten Bormann and Brian Sipos have
   kindly provided an expression of the Bundle Protocol specification
   in the Concise Data Definition Language (CDDL).  That CDDL
   expression is presented below.  Note that wherever the CDDL
   expression is in disagreement with the textual representation of the
   BP specification presented in the earlier sections of this document,
   the textual representation rules.

   start = bundle / #6.55799(bundle)

   ; Times before 2000 are invalid

   dtn-time = uint

   ; CRC enumerated type

   crc-type = &(

     crc-none: 0,

     crc-16bit: 1,

     crc-32bit: 2

   )

   ; Either 16-bit or 32-bit

   crc-value = (bstr .size 2) / (bstr .size 4)

   creation-timestamp = [

     dtn-time, ; absolute time of creation

     sequence: uint ; sequence within the time

   ]

   eid = $eid .within eid-structure

   eid-structure = [

     uri-code: uint,

Burleigh                Expires February 2020                 [Page 54]
Internet-Draft        Bundle Protocol Version 7             August 2019

     SSP: any

   ]

   $eid /= [

     uri-code: 1,

     SSP: (tstr / 0)

   ]

   $eid /= [

     uri-code: 2,

     SSP: [

       nodenum: uint,

       servicenum: uint

     ]

   ]

   ; The root bundle array

   bundle = [primary-block, *extension-block, payload-block]

   primary-block = [

     version: 7,

     bundle-control-flags,

     crc-type,

     destination: eid,

     source-node: eid,

     report-to: eid,

     creation-timestamp,

     lifetime: uint,

Burleigh                Expires February 2020                 [Page 55]
Internet-Draft        Bundle Protocol Version 7             August 2019

     ? (

       fragment-offset: uint,

       total-application-data-length: uint

     ),

     ? crc-value,

   ]

   bundle-control-flags = uint .bits bundleflagbits

   bundleflagbits = &(

     reserved: 15,

     reserved: 14,

     reserved: 13,

     bundle-deletion-status-reports-are-requested: 12,

     bundle-delivery-status-reports-are-requested: 11,

     bundle-forwarding-status-reports-are-requested: 10,

     reserved: 9,

     bundle-reception-status-reports-are-requested: 8,

     bundle-contains-a-Manifest-block: 7,

     status-time-is-requested-in-all-status-reports: 6,

     user-application-acknowledgement-is-requested: 5,

     reserved: 4,

     reserved: 3,

     bundle-must-not-be-fragmented: 2,

     payload-is-an-administrative-record: 1,

     bundle-is-a-fragment: 0

Burleigh                Expires February 2020                 [Page 56]
Internet-Draft        Bundle Protocol Version 7             August 2019

   )

   ; Abstract shared structure of all non-primary blocks

   canonical-block-structure = [

     block-type-code: uint,

     block-number: uint,

     block-control-flags,

     crc-type,

     ; Each block type defines the content within the bytestring

     block-type-specific-data,

     ? crc-value

   ]

   block-control-flags = uint .bits blockflagbits

   blockflagbits = &(

     reserved: 7,

     reserved: 6,

     reserved: 5,

     reserved: 4,

     bundle-must-be-deleted-if-block-cannot-be-processed: 3,

     status-report-must-be-transmitted-if-block-cannot-be-processed: 2,

     block-must-be-removed-from-bundle-if-it-cannot-be-processed: 1,

     block-must-be-replicated-in-every-fragment: 0

   )

   block-type-specific-data = bstr / #6.24(bstr)

Burleigh                Expires February 2020                 [Page 57]
Internet-Draft        Bundle Protocol Version 7             August 2019

   ; Actual CBOR data embedded in a bytestring, with optional tag to
   indicate so

   embedded-cbor<Item> = (bstr .cbor Item) / #6.24(bstr .cbor Item)

   ; Extension block type, which does not specialize other than the
   code/number

   extension-block = $extension-block-structure .within canonical-
   block-structure

   ; Generic shared structure of all non-primary blocks

   extension-block-use<CodeValue, BlockData> = [

     block-type-code: CodeValue,

     block-number: (uint .gt 1),

     block-control-flags,

     crc-type,

     BlockData,

     ? crc-value

   ]

   ; Payload block type

   payload-block = payload-block-structure .within canonical-block-
   structure

   payload-block-structure = [

     block-type-code: 1,

     block-number: 1,

     block-control-flags,

     crc-type,

     $payload-block-data,

     ? crc-value

Burleigh                Expires February 2020                 [Page 58]
Internet-Draft        Bundle Protocol Version 7             August 2019

   ]

   ; Arbitrary payload data, including non-CBOR bytestring

   $payload-block-data /= block-type-specific-data

   ; Administrative record as a payload data specialization

   $payload-block-data /= embedded-cbor<admin-record>

   admin-record = $admin-record .within admin-record-structure

   admin-record-structure = [

     record-type-code: uint,

     record-content: any

   ]

   ; Only one defined record type

   $admin-record /= [1, status-record-content]

   status-record-content = [

     bundle-status-information,

     status-report-reason-code: uint,

     source-node-eid: eid,

     subject-creation-timestamp: creation-timestamp,

     ? (

       subject-payload-offset: uint,

       subject-payload-length: uint

     )

   ]

   bundle-status-information = [

     reporting-node-received-bundle: status-info-content,

Burleigh                Expires February 2020                 [Page 59]
Internet-Draft        Bundle Protocol Version 7             August 2019

     reporting-node-forwarded-bundle: status-info-content,

     reporting-node-delivered-bundle: status-info-content,

     reporting-node-deleted-bundle: status-info-content

   ]

   status-info-content = [

     status-indicator: bool,

     ? timestamp: dtn-time

   ]

   ; Previous Node extension block

   $extension-block-structure /=

     extension-block-use<7, embedded-cbor<ext-data-previous-node>>

   ext-data-previous-node = eid

   ; Bundle Age extension block

   $extension-block-structure /=

     extension-block-use<8, embedded-cbor<ext-data-bundle-age>>

   ext-data-bundle-age = uint

   ; Hop Count extension block

   $extension-block-structure /=

     extension-block-use<9, embedded-cbor<ext-data-hop-count>>

   ext-data-hop-count = [

     hop-limit: uint,

     hop-count: uint

   ]

Burleigh                Expires February 2020                 [Page 60]
Internet-Draft        Bundle Protocol Version 7             August 2019

Authors' Addresses

   Scott Burleigh
   Jet Propulsion Laboratory, California Institute of Technology
   4800 Oak Grove Dr.
   Pasadena, CA 91109-8099
   US
   Phone: +1 818 393 3353
   Email: Scott.C.Burleigh@jpl.nasa.gov

   Kevin Fall
   Roland Computing Services
   3871 Piedmont Ave. Suite 8
   Oakland, CA 94611
   US
   Email: kfall+rcs@kfall.com

   Edward J. Birrane
   Johns Hopkins University Applied Physics Laboratory
   11100 Johns Hopkins Rd
   Laurel, MD 20723
   US
   Phone: +1 443 778 7423
   Email: Edward.Birrane@jhuapl.edu

Burleigh                Expires February 2020                 [Page 61]