Network Working Group | J. A. Zinky |
Internet-Draft | A. Caro |
Intended status: Experimental | Raytheon BBN Technologies |
Expires: February 22, 2013 | G. Stein |
Laboratory for Telecommunications Sciences | |
August 23, 2012 |
Bundle Protocol Erasure Coding Extension
draft-zinky-dtnrg-erasure-coding-extension-00
This document describes an extension to the Delay and Disruption Tolerant Networking (DTN) Bundle Protocol specification [RFC5050] which describes a protocol that enables the transfer of relatively large Data Objects over disrupted networks. The Erasure Coding Extension is a mechanism that extends the ability of the existing DTN bundle fragmentation mechanism to handle situations where bundles have a high probability of being dropped. An example use case is a situation where no communication contact period will ever be long enough to send the whole Data Object. In this case the object must be partitioned into smaller chunks and these chunks are sent in multiple bundles. The Erasure Coding Extension provides a recovery mechanism that allows many of these bundles to be dropped and still allow the whole Data Object to be successfully sent.
This document describes an Erasure Coding Extension Block and a framework for integrating Forward Error Correction (FEC) into the bundle protocol. The Erasure Coding Extension is designed to support multiple FEC schemes and content object types. This is the framework document for a series of documents about erasure coding for DTN. Companion documents describe specific FEC schemes [RandBinary] and specific Data Object types [EcObjects].
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 http:/⁠/⁠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 February 22, 2013.
Copyright (c) 2012 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 (http:/⁠/⁠trustee.ietf.org/⁠license-⁠info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Delay and Disruption Tolerant Networks (DTNs) [RFC4838] have extreme communication constraints. DTNs can include high link delays, such as hours to reach another planet, or no guarantee of a contemporaneous end-to-end path between source-destination pairs, such as a bus with a DTN Bundle Protocol Agent ferrying data to a remote village. These constraints limit the timeliness of feedback that can be sent from the receiver back to the sender to acknowledge receipt or to control the data flow. Forward Error Correction (FEC) techniques are a potentially important mechanism for DTN networks, especially if a large Data Object must be partitioned into multiple bundles [Erasure_Wang]. While the base Bundle Protocol [RFC5050] has a fragmentation feature to partition a large bundle into multiple smaller bundles, there is no support for FEC, i.e. all bundle fragments must be received to reconstruct the original bundle.
To correct for this lack, this document describes an extension to the Bundle Protocol to support FEC mechanisms. The extension allows for large Data Objects to be partitioned into smaller Chunks. A FEC coding scheme is used to encode the Chunks into Encoding Bundles. Redundant Encoding Bundles are transmitted to allow recovery of Bundles that where dropped. The specification allows for different tradeoffs in the level of protection, overhead, and computation needed to encode and decode large Data Objects, based on the kind of FEC coding scheme, the network characteristics, and the type of Data Object.
This document describes a FEC framework for the encoding, decoding, forwarding, and recoding within a DTN network. A Bundle Protocol Extension Block is defined to send the parameters needed for several FEC coding schemes. The Erasure Coding extension is flexible and supports multiple FEC coding schemes and Data Object types. Separate documents define how specific FEC coding schemes [RandBinary] and Data Object formats [EcObjects] support this extension. Future documents will describe protocols for erasure coding flow control, routing, and recoding.
This document assumes familiarity with Forward Error Control techniques and the FEC framework described in "Forward Error Correction (FEC) Building Blocks" [RFC5052], this paper uses the Bundle Protocol as a "Content Delivery Protocol" that will use FEC schemes to insure reliable delivery of Data Objects. Many FEC coding schemes MAY be supported, such as Random Binary Codes [RandBinary], block-oriented parity [RFC5445], Raptor Codes [RFC5053], Reed-Solomon [RFC5510], and Low Density Parity Check (LDPC) [RFC5170]. The exact coding scheme used depends on the DTN network environment, as no one coding scheme works optimally in all situations. The Erasure Coding extension could also support Network Coding techniques.
The following definitions describe terms used in the Bundle Protocol Erasure Coding Extension. The terminology for Delay and Disruption Tolerant Networks (DTNs) follows [RFC4838],[RFC5050], and Forward Error Coding (FEC) terminology follows [RFC5052].
Terms are grouped by a common domain. Terms within a domain have relationships with other terms in that domain and not with other domains.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].
The goal of the Erasure Coding extension is to enable the transfer of large Data Objects over disrupted links. The Erasure Coding Architecture defines protocol layers, protocol functions, and components that achieve this goal in a modular and extensible manner. Besides defining terms and relationships, when realized the architecture forms a distributed system that executes at multiple locations, cross cuts multiple protocol layers, and reuses services from external components in a DTN network.
Erasure Coding happens at multiple locations across a DTN. At the end points, Data Objects are divided into Chunks, which are Encoded at the sender and Decoded at the receiver. Along the way between the sender and the receiver Intermediate Regulator, Intermediate Recoders and Bundle Forwarders may process the Encoding Bundles to ensure the end-to-end delivery of a Data Object, despite the poor communication channel between the sender and receiver.
This section describes the end-to-end Erasure Coding process, including the functions that need to be performed and the layers at which they are performed. This section also describes several configuration use cases and how the components carry out their roles. Subsequent sections describe each of the protocol layers: Data Object Content Layer, the Coding Layer, the Intermediate Regulating Layer, and the Bundle Forwarding Layer.
A Data Object goes through a series of transformations as it is transmitted using the Erasure Coding protocol: from a Data Object to Encodings to Bundles and back again from Bundles, to Encodings, to a copy of the Data Object at the receiver. The transmission process has the following steps:
The Erasure Coding process performs several functions that happen at different protocol layers and may happen at different locations within the DTN network.
These functions are grouped into four layers. The Data Object Content layer is the external consumer of the DTN services and is concerned with transferring a Data Object from the source to the destination(s). The Coding Layer encodes and decodes the Data Object into Encodings Bundles. The Intermediate Regulating Layer regulates the Encoding Bundle flows across the DTN. The Bundle Forwarding Layer routes and forwards the Bundles along the path from the source to the destination(s).
Erasure Coding architectural components are locations that execute the Erasure Coding functions. The architectural components are contained inside either DTN Applications or DTN Bundle Protocol Agents (BPAs). The end-to-end Encoders and Decoders may be located in either DTN Applications or DTN BPAs. Intermediate Regulators and Intermediate Recoders may only be located in DTN BPAs. The links between components are either through internal interfaces or across a DTN.
Different configurations of the Erasure Coding Components allow for the creation of distributed systems that meet different end-user application requirements, within the constraints of the DTN. These configurations help integrate legacy DTN applications and BPAs with Erasure Coding Components, selectively adding or removing functionality depending on availability.
All combinations are possible including running Erasure Coding-aware Applications over Erasure Coding Aware BPAs with Encoders and Decoders. In this case, the BPA MUST check for the Erasure Encoding Extension Block on all Bundles inserted by the application. The BPA MUST NOT attempt to encode an Bundle that has already been encoded by the application.
The goal of the Data Object Content Layer is to transfer a Data Object from a source to a destination within some application specific Quality of Service requirements. It uses the DTN Bundle protocol with Erasure Coding Extension to accomplish the transfer.
The Data Object Content Layer is concerned with Data Objects and a Transfer Specification for that Data Object. The Erasure Coding Extension expects to transfer an ordered array of octets across a DTN. The job of the Data Object layer is to map the Data Object and its Transfer Specification into the mechanisms available from the Erasure Coding Extension. This mapping is complex and very application and Data Object type specific, but mappings share some common features described in this section.
The Data Object type defines the internal representation of a Data Object's content and meta data as an ordered array of bytes. Many Data Object types are supported. A companion document [EcObjects] defines the Data Object types for files and large bundles.
The Data Object layer has to interact with all three other layers.
For the Bundle Forwarding Layer, the Data Object layer MUST set Bundle service delivery parameters, such as lifetime and priority, so that all Encoding Bundles for a Data Object have the same value. We do not recommend requesting delivery notifications, especially custody notification as these administrative services generate feedback traffic at the Bundle Layer and not at the Coding Layer. The destination is specified in the form of an DTN EID. The transfer specification may require multiple destinations, which may be satisfied by some configurations of the DTN BPAs routing protocols. For example epidemic routing attempts to flood Bundles to all nodes in the DTN or alternatively Geo-role routing forwards Bundles to all nodes playing a role within a geographic region. The Bundle Destination EID is used to specify the routing protocol and its parameters. Features from other DTN extensions may be used by the Data Object Layer. For example, the Bundle Security Protocol MAY be used to protect the authenticity of the Bundle extension blocks and payload.
For the Coding Layer, the Data Object and its meta data MUST be converted into an ordered array of octets. The Transfer Specification MAY have meta data that needs to be sent end-to-end with the Data Object. The representation of the meta data depends on the Data Object type. Likewise, some Data Object types may want control over how Chunks are made and whether Chunks are delivered early. For example, a video Data Object may want to align Chunks on video frame boundaries and may want to have the key frames delivered early. These Data Object format issues are addressed by companion documents for each Data Object Type, such as [EcObjects]
For the Intermediate Regulating Layer, the Data Object Layer SHOULD set parameter values to the Handling Specification. Intermediate Regulators MAY use the parameters to tradeoff resource consumption and delivered service among competing Data Objects.
The transfer specification is an abstract representation for how a Data Object should be transferred from the source to the destination. It gives hints to the Erasure Coding architectural components on how to create, combine, transfer, and decode Encoding Bundles. The transfer specification takes end-to-end quality of service requirements and translates them into the Bundle Protocol mechanisms necessary to meet those requirements. A transfer specification MAY be manifested physically in an Erasure Coding implementation, but its main role is to illustrate the control points available at each protocol layer and how they interact.
The transfer specification is not monolithic. It cross cuts different protocol layers and its content is spread among different fields in the bundle header, extension block, and the bundle payload. At the bundle layer, it specifies how Encoding Bundles are handled relative to other DTN traffic. At the Regulating layer, it specifies how Encoding Bundles are handled relative to other Encodings Bundles for the same Data Object UUID or relative to other Data Object UUIDs. Finally at the Data Object layer, it specifies the properties of a copy of the Data Object at the destination.
In the current state of the Bundle Protocol, the BPA has no means for advertising its constraints to the Erasure Coding components and the components can not make active measurements of these constraints because the poor quality of the communication channel makes any measurements obsolete before enough samples can be collected. The process of choosing transfer parameters, such as Chunk Size, is thus an open loop process and depends on external oracles to predict the transfer constraints. As the Bundle Protocol evolves and adds capabilities for detecting and advertising its environmental constraints, the transfer specification will become more powerful and more formal. For example, the Bundle Security Protocol [RFC6257] should be used to meet the Erasure Coding requirement to authenticate the creator of Encoding Bundles. The functionality should be reused by the Erasure Coding extension and their is no need to redefine it here.
The following table lists some transfer specification parameters that are actionable in the context of the current Bundle Protocol [RFC5050] and the Erasure Coding extension.
Parameter | Type | Header | Field | Description |
---|---|---|---|---|
Destination | EID | Bundle | Destination | DTN endpoint destination(s) for Data Object. The endpoint may be a singleton or have multiple destinations. |
Class of Service | Flags | Bundle | Priority | Priority relative to other Data Objects |
Life Time | SDNV | Bundle | Life Time | Time when the Data Object should be deleted, if not delivered |
Report Progress | Flags | Bundle | Processing Control | Quality of Service feedback for Data Object |
UUID | Id | Extension | Unique Id | A Universally Unique Identifier that is associated with the Data Object transfer. |
Number of Chunks | SDNV | Extension | Number of Chunks | The number of Chunks that the Data Object was divided into. Fewer Chunks reduce the reassembly time at destination. |
Chunk Length | SDNV | Payload | Length | The size of the Chunks that the Data Object was divided into. Smaller Chunks reduce chance of bundle-layer fragmentation. |
Handling Spec | Flags | Extension | Handling Spec | Handling hints for Intermediate Regulators for this bundle relative to other Encoding Bundles with same Data Object UUID |
Authentication | ID | Bundle Security Extension | Signing | The level of trust in the Encoding components. |
Data Object Metadata | Flags | Payload | Data Object Header in first Chunk | Meta Data about Data Object's systemic properties, such as authenticity, validity, and permissions |
The Data Object Layer formats the Data Object and meta data as an octet array that is used as input to the Coding Layer. The Data Object octet array is divided into an ordered array of equal length Chunks. Chunks are identified with an index. The Chunk with the index of '0' contains the octet with index '0'.
The Data Object Layer must add padding octets to the last Chunk, so that all Chunks are the same length. The Data Object Layer is responsable for storing the exact length of the Data Object without padding, because the Coding Layer does not have a field for the Data Object Length.
The exact number_of_chunks is determined at transfer time and is based on the Data Object Layer Transfer Specification and path characteristics of the DTN network. Decoders SHALL handle any number_of_chunks, but practical limits MAY be in the 1000's of Chunks. The chunk_length SHOULD be a multiple of 8. This will allow efficient octet array operations to be performed when encoding and decoding Chunks and Encoding Data.
The goal of the Coding Layer is to divide a Data Object that is formated as an ordered array of octets into a group of Encodings. The Encodings MUST form a full Encoding Set and MAY have Redundant Encodings. The Erasure Coding Process [Process] is followed to encode Data Objects into Encodings and to decode an Encoding Set back into a Data Object. In this process, a FEC scheme is applied to the Chunks of a Data Object to form an Encoding. The FEC scheme uses a coding formula to convert the Chunks to an Encoding Data. The coefficients for the coding formula are stored in the Encoding Vector. The Encoding Vector and Encoding Data together form the Encoding. The exact format of the Encoding Vector and Encoding Data is defined by the FEC scheme. The Erasure Coding Extension supports multiple FEC schemes, such as the Random Binary FEC scheme defined in the companion document [RandBinary].
An Encoding is packed into an Encoding Bundle. In order for Intermediate Regulators to detect Redundant Encodings and group Encoding Bundles into Encodings Sets, some Encoding parameters are exposed in the Erasure Coding Extension Block [Block], such as the Encoding Vector and Data Object UUID. The Encoding Data is not needed by Intermediate Regulators and is put into the Bundle Payload. Intermediate Recoders need access to the content of both the Erasure Coding Extension Block and the Bundle Payload in order to generate new Encodings.
The Erasure Coding Extension Block marks the Bundle containing an Encoding. The format of the Erasure Coding Extension Block is as follows:
Field | Type | Description |
---|---|---|
Block Type | Octet=0xEC | Bundle Protocol Extension Block Type is the constant 0xEC. |
Block Processing Flags | SDNV | See Section 4.3 of [RFC5050] for bit settings |
Block Length | SDNV | Length of extension block data, not including the padding. |
Version | SDNV | Erasure Coding Extension Block version that increments with newer versions |
Data Object Format Type | SDNV | Type number for the format of Data Object. Defines format for decoded Chunks, see [EcObjects]. |
Data Object UUID | UUID (128bits) | Universally Unique ID for a specific Data Object transfer. The UUID SHOULD be in the format specified in [RFC4122]. The Data Object Format specification MAY define a hash function to map the Data Object's name to a UUID. [NOTE: The reference implementation uses two SVDN fields to pack the upper and lower 64 bits.] |
Handling Specification Length | SDNV | Number of SDNV Parameters in the Handling Specification. As the Erasure Protocol matures, parameters will be added to the Handling Specification. Version 1 of the Erasure Coding Extension does not define any Handling Specification parameters, so this field value is 0. Version 1 implementations MUST treat this field as a length of the next field, even though the content SHOULD be ignored. |
Handling Specification Parameters | SDNV List | Hints on how Intermediate Regulators should order, prioritize, limit rate, or drop this Encoding relative to other Encoding bundles with the same Data Object UUID. No Handling Specification Parameters are defined for Version 1, so this field is null. |
Number of Chunks | SDNV | Number of Chunks that the Data Object was divided into. |
FEC Scheme Type | SDNV | The type number of the FEC Scheme used to interpret Coding Scheme Parameters, for example see [RandBinary]. |
FEC Scheme Parameters | Octets | Format of the octet array is determined by FEC Scheme. This field ends at the Block Length of the extension block data. |
Padding | Octets | Extra octets so that the total length the whole extension block is a multiple of 4 octets. |
The Data Object UUID field identifies the Data Object for the Encoding Bundle. The UUID MUST be unique in the DTN network over the life time of the bundle. While the UUID is treated just as a number, the UUID SHOULD be in the format specified in [RFC4122]. All the received Encoding Bundles with the same UUID form an Encoding Set for a Data Object.
The Data Object Format Type specifies the format used at the Data Object Layer. A Data Object format MUST define the headers and padding for the decoded Data Object. A Data Object format MAY define a format for the bundle payload, but by default the bundle payload contains just the Encoding Data. Several Data Object formats are defined in [EcObjects] and future documents.
The Handling Specification gives hints on how Intermediate Coders SHOULD process this bundle relative to other bundles in the same Encoding Set. For example, how many Redundant Encoding Bundles should be forwarded or what order to send Encoding Bundles across multiple contact points. The values of Handling Specification depend on both the type of FEC scheme and the characteristics of the expected DTN communication path. The parameters (flags) of the Handling Specification MUST be actionable by Intermediate Regulators. For Version #1 of the Erasure Coding Extension Block, this handling parameters are undefined and Handling Specification Length MUST be zero (0).
The Encoding Vector is part of the extension block because Intermediate Regulators MAY want to determine the rank of an Encoding Set to detect Redundant Encodings. Calculating the rank is a less computationally expensive operation than decoding the Encoding Set for its Chunks. Calculating the rank only needs the Encoding Vector sand not the Encoding Data. Decoding needs to XOR multiple Encoding Datas together to decode each Chunk, a computationally expensive operation. The format of the Encoding Vector depends on the type of FEC scheme used. The common field among all FEC schemes is the Number of Chunks in the Data Object. The other two fields specify the type of FEC scheme and the bytes for the Encoding Vector itself. Several FEC schemes are defined in [RandBinary] and future documents.
More than one Erasure Coding Extension Block MAY be present in the same bundle. The interpretation of multiple extension blocks is to treat them as a composite formula that are merging Chunks from multiple Data Objects. The merged Encoding Vector adds the coefficients from the component Encoding Vectors. The merged Encoding Data (bundle payload) is the XOR of the composite Encoding Data. Intermediate Regulators MAY use the handling specification from either extension block to determine the handling procedures. The Handling Specification SHOULD be equivalent for all Erasure Coding Extension blocks in the bundle. The multiple extension block option supports experimentation in Network Coding.
The goal of the Intermediate Regulating layer is to control the flow of Encoding Bundles as they move from the source to the destination. Intermediate Regulators decide on which Encoding Bundles should be sent next during a contact period with a neighbor BPA. Given the dynamic and complex nature of DTN topologies and the tradeoffs between competing DTN traffic flows, the traditional first come first serve queueing discipline is rarely adequate. Also, in the most general case the traffic shaping function in the Intermediate Regulators needs to work without feedback from neighbors or the end-to-end destinations.
Note: No reference implementation of the Intermediate Regulator have been completed at the time of this document publication. More research is necessary to determine the functionality of the Handling Specification and the policies used by Intermediate Regulators. This section is a place holder and lays out the issues. A future version of this section will capture the conclusions of the future research results.
Traffic Shaping MAY improve the efficiency of resource consumption and the fairness between DTN traffic flows in the case where feedback is impractical between neighbors or between the destination and the source. Traffic shaping may determine when to stop forwarding Encoding Bundles from a Data Object, limit the rate, redundancy, or the order between bundles. The traffic shaping parameters may be calculated per Data Object UUID, per neighbor, or per contact.
A basic no feedback traffic shaper MAY be based on the following policy and parameters. During a contact the candidate Data Objects are ordered by importance (priority field in Bundle Primary Block) and urgency (lifetime in Bundle Primary Block). The highest priority with the earliest expiration is sent first. Sending a Data Object is divided into two phases; an Innovative Send Phase and a Redundant Send Phase. The Innovative Send phase sends only enough Encodings to form a full Encoding Set at the Receiver, while the Redundant Send Phase sends extra Redundant Encodings for FEC purposes.
Each phase has a limit on the number of Encodings in that phase and a limit on the rate for which Encodings are sent during that phase. Encoding Bundles are sent in Data Object order, sending all the Innovative Encoding Bundles for all the Data Objects and then starting the redundant phase. While sending a Data Object during a phase, the next Data Object will start when the Max Number of Encodings for that phase is exceeded or the rate is exceeded. When all the Redundant Encoding Bundles have been sent for all Data Objects, transmission stops.
The following are basic traffic shaping parameters that MAY be put into the Handling Specification. Version 1 of the Handling Specification does not allow these parameters to be specified dynamically, but defines a default Handling Specification based on these parameters.
The Handling Specification is a field in the Erasure Coding Extension Block that defines the parameters for traffic shaping and feedback messages. The format of this field is that of a length followed by a list of parameters with 'length' entries. The length and parameters are SDNV values, making the entire Handling Specification field have variable length. As Version #1 of the Erasure Coding Extension does not define any Handling Specification Parameters, the length MUST currently be zero (0) for Version #1 and the parameter list null. As the Erasure Coding Extension matures, parameters will be added to the Handling Specification. The Handling Specification Length has the dual role of determining the number of parameters and as version indicator for the meaning of each parameter.
When the Handling Specification Length is zero (0), then the Intermediate Regulator and Recoder MAY use the following default policy. The order of sending Data Objects is based on the Priority and Lifetime fields in the Bundle Primary Block, with the highest priority first, then the earliest expiration. The order of sending Encodings within a specific Data Object is Round-Robin between contacts. The send state for a Data Object is saved for the whole Data Object regardless of neighbors. The maximum number of Encodings in the Innovative Phase is equal to the Number of Chunks. The maximum number of Encodings in the Redundant Phase should be the maximum of 10 and the square root of the Number of Chunks. There is no rate limit for sending Innovative Encodings or Redundant Encodings.
Feedback messages MAY be defined to increase the efficiency of resource usage for the case where feedback is possible between neighbors or between the destination and the source. The following types of feedback messages would enhance the exchange protocol.
Early research suggests that sending Encodings that are Redundant but not Duplicates will increase the probability of receiving a full Encoding Set at the destination. In the case where the DTN topology is highly dynamic with contact transmissions much smaller than a whole Data Object, the interactions along the intermediate path mixes and copies Encodings in flight so that receiving Duplicates is common. The overall receive process can be similar to a random draw from the senders Encoding Set with replacement. Avoiding Duplicates being propagated on alternate paths avoids the "coupon collector problem" at the receiver. That is, there is a low probability of getting the last missing coupon that is not a duplicate of a previous coupon. If Duplicates are allowed to propagate on intermediate paths, many Encodings must be received before the Encoding Set can be solved, thus wasting bandwidth. The goal of the Intermediate Recoder is to introduce Redundant Encodings on the intermediate paths that are not Duplicates.
An Intermediate Recoder includes all of the functionality of an Intermediate Regulator. The Recoder adds the functionality of generating additional Encoding Bundles for Data Objects. Intermediate Recoders do not directly forward Encodings that they receive, but would produce a new Encoding from all of the previously received Encodings for the same Data Object. This new Encoding would be Redundant relative to the previously received Encoding Set, but it would not be a Duplicate of any Encoding in the Encoding Set. Thus as the Encodings for a Data Object are propagated over the DTN, few if any Duplicates would be present over the whole DTN. In other words, if Intermediate BPAs transmitted copies of received Encoding Bundles, then Bundles that took different paths might be Duplicates. If two Duplicates are received, then at least one will be Redundant. But if two Recoded Encodings are receive, even if they come from the same partial Encoding Set, there is a chance that both will be Innovative.
Some FEC schemes allow the generation of Redundant Encodings from previously received Encodings. The exact mechanism for the generation is FEC scheme dependent, but the basic mechanism is to linearly combine multiple Encodings to form a new Recoded Encoding. The Recoded Encoding will always be Redundant relative to the Encoding Set. It adds no innovative information about the Data Object's Chunks. Instead the Recoded Encoding is not a Duplicate of previous Encodings.
More research is necessary to determine the mechanisms for Recoding. The Erasure Coding Extension supports this research by defining the architectural functions and basic policies for Recoding. Some issues to be addressed include: how to recode without raising the hamming weight; how to reduce the number of Encoding Data XORs during generation of a new Encoding; how to reduce the XORs during solving the Encoding Set; and how to generate a new Encoding that can be authenticated as if it is coming from the original Encoder.
The goal of the Bundle Forwarding Layer is to transfer Bundles using all the DTN features and services available to the BPA. Legacy BPAs that are not aware of the Erasure Coding Extension MUST still forward Bundles between components, ignoring the Erasure Coding Extension, but adhering to Bundle forwarding procedures. DTN Bundle Forwarding is adequately defined and characterized in other documents and does not have too be defined here.
In order to meet the Transfer Specification at the Data Object layer, the special characteristics of the particular DTN network must be taken into account. DTN can support networks that have extreme communication models, including the following: Besides the high delay-bandwidth products found in space networks and the non-contemporaneous end-to-end paths found in opportunistic mobile networks, DTN can support transmission to selective destinations. The DTN transmission links between coding components can be either unicast or multicast. DTN supports bundles being delivered to multiple destinations. DTN also supports multiple routing protocols, that can flood bundles through out the DTN network. These DTN features may be used by Erasure Coding to support a wide variety of end-user applications. For example, reliable multicast of large Data Objects over a DTN is an illustrative use case for Erasure Coding, because FEC is an effective technique for overcoming the difficulty of feedback between the multiple receivers and the sender, and FEC may exploit the ability of the DTN to deliver Encoding Bundles among peers.
The basic Erasure Coding protocol does not provide authentication for the Encoding Vector or the Encoding Data. This means that a rogue entity on the path between the sender and the receiver could view, delete, reorder, copy, modify, and inject new Encoding Bundles into the bundle flow. In this section we describe how to overcome this issue using the Bundle Security Protocol (BSP) [RFC6257].
The Encoding Vector is stored in the Erasure Coding Extension Block and the Encoding Data is stored in the Payload Block. The only method available in BSP to authenticate both the Payload Block and an Extension Block is through the use of a Bundle Authentication Block (BAB). This is a symmetric key-based algorithm, meaning both parties must share a secret bit-string that is not known to any other entities. BSP does not specify the method in which this secret bit-string should be established.
It should be noted that the Extension Security Block (ESB) option in BSP does not provide authentication of an Extension Block. Since ESB utilizes AES in Galois/Counter Mode (GCM), it does provide data integrity. If the AES-GCM key was the output of a key agreement protocol that authenticated the sender of the bundle, then AES-GCM encryption may provide implicit authentication. However, the ESB-RSA-AES128-EXT cipher suite that ESB utilizes does not provide this authentication.
Another issue is guaranteeing the authenticity of feedback messages [feedback_messages] generated in by the destination. This issue is not resolved because the actual need and format of the feedback messages is not defined in this document.
This document defines the framework for an Erasure Coding Extension for DTN. The document defines the terms, function, architectural components, and the extension block format. Some details of some features have be purposely left out, because we expect that the Erasure Coding Extension will have multiple options for these features. Specifically, a FEC scheme has not been defined in this document. The companion document [RandBinary] defines the specification for the Random Binary Forward Error Correcting Scheme. Other FEC schemes will be added in the future. Also, the format for Data Objects has not been defined in this document. The companion document [EcObjects] defines the specification of File and Large Bundle Data Objects. Other Data Object formats will be added in the future and each will have its own document. We also anticipate a refinement of the Handling Specification and the forwarding and traffic shaping policies of Intermediate Regulators. While this document recommends default policies, other Handling Specification definition will be added in the future and each will have their own document.
Erasure Coding extension defines the following well known numbers:
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC4838] | Cerf, V., Burleigh, S., Hooke, A., Torgerson, L., Durst, R., Scott, K., Fall, K. and H. Weiss, "Delay-Tolerant Networking Architecture", RFC 4838, April 2007. |
[RFC5050] | Scott, K. and S. Burleigh, "Bundle Protocol Specification", RFC 5050, November 2007. |
[RFC5052] | Watson, M., Luby, M. and L. Vicisano, "Forward Error Correction (FEC) Building Block", RFC 5052, August 2007. |
[RFC6256] | Eddy, W. and E. Davies, "Using Self-Delimiting Numeric Values in Protocols", RFC 6256, May 2011. |