Network Coding Research Group (NCWCRG) | C.A. Adjih |
Internet-Draft | Inria |
Intended status: Informational | SY.C. Cho |
Expires: January 16, 2014 | Samsung Electronics Co.,LTD.(*) |
E.B. Baccelli | |
Inria | |
July 15, 2013 |
Broadcast With Network Coding: DRAGONCAST
draft-adjih-dragoncast-00
This document describes a Network Coding (NC) based broadcast protocol suitable mainly for wireless networks, including mobile ad hoc networks (MANET). It provides data dissemination from a single source, based on intra-flow network coding and for Internet Protocol (IP). It is designed to minimize the assumptions over the working environment and thus may operates over dynamically evolving environments.
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 January 16, 2014.
Copyright (c) 2013 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.
The goal of this document is to describe a protocol for broadcast in wireless networks with network coding.
It is best suited to multi-hop wireless networks. Compared to wired networks, they have specific properties, see for instance [I-D.baccelli-multihop], including:
In wireless networks, applications sometimes require the communication primitive of broadcasting information to the entire network. As an example, in the context of MANETs, the Simplified Multicast Forwarding (SMF) [RFC6621] has been proposed for this purpose.
For applications where a single source sends a large volume of information to the entire network, it will be split in several packets, which will then be broadcast to the entire network. In this case, network coding can provide two features: natural error correction, and efficiency (in terms of the number of transmissions). A large literature on this topic has evidenced the benefits of network coding and explored design and implementation aspects.
In this document, we present DRAGONCAST (D.R.A.G.O.N., "Dynamic Rate Adaptation from Gap with Other Nodes"), one such protocol for broadcasting with network coding.
It is based on intra-flow coding. It attempts to maximize simplicity and universality: it does not use explicitly or implicit knowledge relative to the topology (such as the direction or distance to the source, the loss rate of the links, ...), hence is perfectly suited to the most dynamic wireless networks.
Abbreviation | Definition |
---|---|
MANET | Mobile Ad Hoc Network |
NHDP | Neighborhood Discovery Protocol |
OLSR | Optimized Link State Routing |
SMF | Simplified Multicast Forwarding |
TLV | Type-Length-Value encoding |
DRAGON | Dynamic Rate Adaptation from Gap with Other Nodes |
SEW | Sliding Encoding Window |
PME | Protocol Message Element |
F-PME | Flow Protocol Message Element |
S-PME | State Protocol Message Element |
ED-PME | Encoded Data Protocol Message Element |
The following table summarizes the definitions and notations related to network coding in general and to DRAGONCAST. More details on network coding can be found in Appendix A.
Name | Definition |
---|---|
Coded Packet | Linear combination of source packets |
Encoding Vector | Coefficients in the linear combination of source packets |
Vector | abbrev. for "Information Vector", coded packet |
Innovative | A coded packet that brings new information |
Name | Notation |
---|---|
Source packets | P(1), ..., P(k) |
Linear combination of packets | a(1) P(1) + ... + a(k) P(k) |
Set of coded packets at a node v | q(v,i) = a(v,i,1) P(1) + ... + a(v,i,M) P(M) |
DRAGONCAST is a protocol for broadcasting a set of packets from one source to a entire network with network coding (various parts are described in [CA08a], [CA08b], [C08]). The protocol is distributed and requires minimal coordination.
The base functioning is simple: the broadcast is initiated by transmissions for the source. Every node in the network retransmits coded packets with a changing interval between transmissions. At the same time, every node collects received coded packets, and performs decoding as they are received. Finally, termination is automatically detected when all the nodes have successfully received all data.
DRAGONCAST is based on several building blocks that are in two categories. The first category concerns the protocol aspects themselves: Figure 1 represents the organization of the different building blocks.
The second category is relative to policy, that is building blocks that define high level protocol behavior:
The
Application (source) ................................................^.................. V +---------------------------+ +---------------------------+ | | | | | DRAGON | | SEW | | | | | | Packet Rate Selection | | Packet Encoding and | | | | Real-time Packet Decoding | +---------------------------+ +->| | ^ | +---------------------------+ Policy | +------+ ^ ...............|.........|......................|.................. Protocol V v v +---------------------------+ +---------------------------+ | | | | | DRAGONCAST | | DRALIB | | +<---> | | Protocol | | Local Information Base | | | | | +---------------------------+ +---------------------------+ ^ | ............................. v . Operating System +--------------+------------+ . | | . +--------------+ | DRAS | . | | | +<----------->+ IP Stack | | Signaling | . | | | | . +--------------+ +---------------------------+ .
Figure 1: Organization of the DRAGONCAST Building Blocks
The source initiates broadcasting by sending its original data packets with a format specified in Section 4.
When the source sends data packets, it produces packets of a predefined, constant size, using padding if necessary. Other nodes initiate transmission of encoded data upon receiving the first coded packet, and stay in a transmission state where they will retransmit coded packets with an interval decided by packet rate selection algorithms. Precisely, when intermediate nodes receive a data packet that is a source packet or a coded packet, they start scheduling encoded data transmission.
The scheduling interval is decided by the policy DRAGON from Section 7. Transmitted packets by intermediate nodes are coded packets generated using random linear coding with a header specified in Section 4. Data transmission continues until nodes detect the termination condition, i.e. that themselves and all their neighbors have successfully decoded the data stream.
General operations of the protocol are described in the following algorithm:
DRAGONCAST uses the following concepts and definitions:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Packet size | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | | | Protocol Message Element (PME) | | +-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | : ... : | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | | Protocol Message Element (PME) | | +-+-+-+-+-+-+-+-+ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 2
DRAGONCAST uses one single packet format based on a sequence of Type-Value including several protocol elements. The general packet format is represented in Figure 2.
They are used as the basis for DRAGONCAST Packets. Control information is sent in-band, prepended to encoded packets. In the normal flow of the protocol, the majority of transmitted packets are "Data Packets". In the current version of the specification, the packet MUST respect exactly one of the following formats:
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type: FLOW | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Flow Identifier (64 bits) | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Generation Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Packet Rate | Generation Number of Packets | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sliding Encoding Window Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 3: Format of the Flow PME
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Type: STATE | Rank of Transmitter | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Lifetime | Number of Neighbors | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | High Index | Low Index | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Transmitter Address | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 4: Format of the State PME
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Type: ENCODED_DATA | Encoding Type and Parameters | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Encoding Vector Data Size | Coded Packet Data Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Encoding Vector Index Offset | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Encoding Vector Data | : ... : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Coded Packet Data | : ... : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 5: Format of the Encoded Data PME
Constants: ENCODING_GF_2 = 0 ENCODING_GF_4 = 1 ENCODING_GF_16 = 2 ENCODING_GF_256 = 3
A node maintains a Local Information Base that records information about its decoding process, and the state of the neighbors.
The protocol state is maintained per flow: a flow is uniquely identified by a flow identifier. In addition, DRAGONCAST supports the concept of partitioning a flow into generations. In this version of the specification, each generation is considered as an independent "flow".
The different information bases of DRALIB are structured hierarchically as follows:
In addition, for decoding purposes, it includes the:
Each node maintains a Flow Information Set, which contains collected information about current flows. Specifically, the Flow Information Set consists of Flow Information Tuples each which records:
Each node maintains, for each of its Flow Information Tuple, a Generation Information Set, which contains information specific to a generation:
For each generation, a node maintains a Neighbor Information Set, which contains its known neighbors (with an expiration time), and information related to their state.
Specifically, the Neighbor Information Set consists of Neighbor Tuples, each of which contain information about a single neighbor, for a given flow and for a given generation, as follows:
For each generation, a node maintains a Decoding Information Base with the following content:
During the decoding process, the decoding module (SEW) performs real-time decoding by performing Gaussian elimination on the list of coded packets.
A node that acts as a data source for a flow, also runs a instance of the DRAGONCAST protocol for that flow (e.g. has a Flow Tuple with all associated information).
In addition, it adds periodically source packets in the associated Flow Information Base respecting the source rate.
Whenever a node receives an encoded packet:
For every "active" flow in its Flow Information Base, a node will generate coded packets, with an interval between packets defined by DRAGON (from the computed packet rate).
If for a given flow and generation, in the associated neighbor set, no neighbor is known to require coded packets, the packet is generated without encoded packet (without Encoded Data PME).
From information in its Local Information Base, every node is able to determines if it needs to sends packets, as described in [C08].
In this section, we describe one packet rate selection algorithms, proposed for DRAGONCAST.
The heuristic DRAGON has been proposed and analyzed in [CA08a], and is inspired by Fragouli et al. [FWB06]. We briefly summarize it in this section for completeness. The starting point of our heuristic DRAGON, is that the observation that, for real-time decoding, the rank of nodes inside the network should be close to the index of the last source packet, and that in any case, they should at least evolve in parallel.
Thus, one would expect the rank of a node to grow at the same pace as the source transmission, as in the example of optimal rate selections for static networks. Decreasing the rates of intermediate nodes by a too large factor, would not permit the proper propagation of source packets in real time. On the contrary, increasing excessively their rates, would not increase the rate of the decoded packets (naturally bounded by the source rate) while it would decrease energy-efficiency (by increasing the amount of redundant transmissions).
The idea of the proposed rate selection is to find a balance between these two inefficient states. As we have seen, ideally the rank of a node would be comparable to the lastly sent source packet. Since we wish to have a simple decentralized algorithm, instead of comparing with the source, we compare indirectly the rank of a node with the rank of all its perceived neighbors.
The key idea is to perform a control so that the rank of neighbor nodes would tend to be equalized: if a node detects that one neighbor had a rank which is too low in comparison with its own, it would tend to increase its rate. Conversely, if all its neighbors have greater ranks than itself, the node need not to send packets in fact.
In this section, we describe the proposed heuristic, DRAGON, as a packet rate selection. It is based on the following definitions. Precisely, let:
Then g(v,t) is evaluated as:
We propose the following rate selection, DRAGON (Dynamic Rate Adaptation from Gap with Other Nodes), which adjusts the rates dynamically, based on that gap of rank between one node and its neighbors as follows: The packet rate of node v is set to C(v,t) at time t as:
When computing the packet rate selection, DRAGONCAST Local Information Base supplies the information necessary: for each neighbor, the rank and the number of neighbors of the last packet received, are maintained in the Neighbor Set. Although they might not necessarily reflect the exact values at the computation time, they are provide an estimate.
In this section, we describe the method of DRAGONCAST for real-time decoding, which allows recovery of some source packets without requiring to decode all source packets at once. It is related to the method from Sundararajan et al. [SSMMB09] described for TCP.
The real-time decoding method, Sliding Encoding Window (SEW) relies on implicit cooperation between neighbor nodes, in order to ensure the possibility of decoding. (Technically, as described in [CA08a], it ensures the existence of a low triangle in global encoding vectors saved in a node during the online Gauss elimination process).
The key of SEW, is to ensure the existence of an early decoding part; to do so, every node in DRAGONCAST keeps track of the state of its neighbors, in order to only send packets, The method SEW relies on two principles:
Before detailing the insights behind these rules, we first give definition: the high index of a node, and the low index of a node. As explained in Appendix A, a coded packet is a linear combination of source packets. We define the highest and lowest index of a linear combination, as the minimum and maximum of the coded packets respectively. For instance, a packet Q = P(3) + P(5) + P(7) + P(8), the highest index is 8 and the lowest index is 3.
Because all encoded packets have their own highest index and lowest index, we can also compute the maximum of the highest index of all not-yet decoded packets in a node, as well as the minimum of the lowest index. We refer to the maximum and the minimum as high index of a node and low index of a node. Notice that a node will generally have decoded the source packets from 1 up to its low index.
The intent of the SEW coding rule is to use knowledge about the state of neighbors of one node, namely their high and low index. A node restricts the generated packets to a subset of the packets of the source, until it is confirmed that perceived neighbors of the node are able to decode nearly all of them, up to a margin K. Notice that once all its neighbors may decode up to the first L-K packets, it is unnecessary for the node to include packets P(1), ... P(L) in its generated combinations.
Hence, the general idea of SEW is that it restricts the mixed original packets within an encoded packet from a window of a fixed size K. In other words, a node encodes only source packets inside a fixed Encoding Window as:
where the { P(j) } is the set of packets generated by the source, The sequence of coefficients for q(v,i) is the following global encoding vector: [ 0, 0, ..., a(v,i,k), a(v,i,k+1), ..., a(v,i,k+K), ...,0,0]. A node will repeat transmissions of new random combinations within the same window, until its neighbors have progressed in the decoding process.
The intent of the SEW decoding rule, is to guarantee proper functioning of the Gaussian elimination. An example of SEW decoding rule is the following: assume that node v has received packets q(1) and q(2), for instance q(1) = P(1) + P(9) and q(2) = P(1) + P(2) + P(3). Then q(1) would be used to eliminate P(9) for newly incoming packets (the highest possible index is 9), and q(2) would be used to eliminate P(3) from further incoming packets. On the contrary, if the SEW decoding rule was not applied and if q(1) were used to eliminate P(1), then it would be used to eliminate it in q(2), and would result into the computation of q(2) - q(1) = P(2) + P(3) - P(9); this quantity now requires elimination of P(9), an higher index than the initial one in q(2). In contrast the SEW decoding rule guarantees the following invariant: during the Gaussian elimination process, the highest index of every currently non-decoded packet will always stay identical or decrease.
Provided that neighbor state is properly exchanged and known, as a result, the combination of the SEW coding rule and the SEW decoding rule, guarantee that ultimately every node will be able to decode the packets in the window starting from its lowest index; that is, they guarantee early decoding.
Notice that improper knowledge of neighbor state might impact the performance of the method but not its correctness: if a previously unknown neighbor is detected (for instance due to mobility), the receiving node will properly adjust its sending window. Conversely, in DRAGONCAST, obsolete neighbor information, for instance about disappeared neighbors, will ultimately expire.
This document does not have any security considerations.
This document does not have any IANA actions.
This section introduces network coding concepts and terminology.
Network coding differs from classical routing by permitting coding at intermediate nodes. One possible coding algorithm is linear coding that performs only linear transformations through addition and multiplication Precisely, linear coding assumes identically sized packets and views the packets as vectors on a fixed Galois field. It becomes then possible to perform linear combination of packets.
In the case of single source broadcast, all packets initially originate from one source: the source has k packets, which may be seen equivalently as k vectors P(1), ..., P(k) from the vector space over a Galois Field.
With network coding, any coded packet received by node, at any point of time, is a linear combination of some source packets. The i-th received coded packet at a node v is necessarily a linear combination of the source packets P(1), .... P(k) and can be written as:
The sequence of coefficients for a coded packet q(v,i) (denoted "information vector", or simply "vector") is itself a vector [a(v,i,1), a(v,i,2), ..., a(v,i,n)] (denoted "global encoding vector").
With linear coding, when one node generates a coded packet, it performs a linear combination of the packets that it possesses (the set of received packets { q(v,i) }) with some set of coefficients (g(1), ...., g(M)). It then transmits the result:
Since the vectors q(v,1), ... q(v,M) are in turn linear combinations of the source packets P(1),... P(k), the generated coded packet, can be expressed itself as a linear combination of these, yielding its global encoding vector.
In practice, a special header containing the global coding vector of the transmitted code packet may be added as proposed by Chou et al. [CWJ03].
As shown above, when a node generates a coded packet with linear coding, an issue is how to select coefficients. Whereas centralized deterministic methods exist, Ho and al. [HKMKE03] presented a novel coding algorithm, which does not require any central coordination. The coding algorithm is random linear coding: when a node transmits a packet, it selects randomly the set of coefficients { g(i) }, which will be used to perform a linear combination of the vectors q(v,M) as indicated above.
A node v will recover the source packets P(1), ... P(k) its the received packets q(v,1), ... q(v,M), considering the matrix of coefficients a(v,i,j) for i=1,...M and j=1,..k from Appendix A. Decoding amounts to inverting this matrix, for instance with Gaussian elimination.
Thinking in terms of coding vectors, at any point of time, it is possible to associate with one node v, the vector space, Q(v) spawned by the coding vectors, and which is identified with the matrix. The dimension of that vector space, denoted D(v), is also the rank of the matrix. In the rest of this document, by abuse of language, we will call "rank of a node", that rank and dimension.
The rank of a node is a direct metric for the amount of useful received packets, and a received packet is called innovative when it increases the rank of the receiving node. Ultimately a node can decode all source packets when its rank is equal to the the total number of source packets.
This document also stems from contributions of and from discussions with : Philippe Jacquet.