Composite Extension Finite Fields for Low Overhead Network Coding: Telescopic Codes Janus Heide
Daniel Lucani
Steinwurf ApS, Aalborg, Denmark Email:
[email protected]
Department of Electronic Systems Aalborg University, Aalborg, Denmark Email:
[email protected]
Abstract—Although Network Coding (NC) has been proven to increase throughput and reliability in communication networks, its adoption is typically hindered by the additional complexity it introduces at various nodes in the network and the overhead to signal the coding coefficients associated with each coded packet. This work advocates the use of multiple composite extension finite fields to address these challenges. The key of our approach is to design a series of finite fields where increasingly larger fields are based on a previous smaller field. For example, the design of a field with 256 elements F22 2 2 is based on polynomial arithmetic over a field with 16 elements F22 2 , in turn based on a field with 4 elements F22 . We propose a technique to modify standard Random Linear Network Coding (RLNC) to utilize a set of these fields instead of a single field and analyze the performance. The results show that total overhead is reduced due to reduced size of the coding vector, while maintaining low linear dependency between coded packets. The overhead can in some cases be reduced to less than one-fifth compared to standard RLNC and importantly the ability to recode is preserved.
I. I NTRODUCTION NC is a promising paradigm that has been shown to provide benefits in many different network topologies and applications [1]. NC enables recombination of data in the network and thus breaks with the end-to-end view on data flows in todays store-and-forward networks. The ability to compute in the network provides enhanced performance but, more importantly enables disruptive and flexible designs of future computer networks. This flexibility makes it particularly suitable in less structured, highly dynamic, and highly heterogeneous settings, and therefore a good fit e.g. for Internet of Things and 5G. RLNC [2] offers a distributed approach to implementing NC by randomly mixing data packets. However, RLNC adds computational complexity to sources, receivers, and intermediate nodes, which can potential decrease the operation time of battery-driven devices or become a bottleneck in highly loaded routers and switches. A first approach to decrease this complexity was provided in [3], where it was proposed to divide the data over which coding is performed in generations. This approach effectively controls the complexity, but adds additional communication overhead in two ways. First, overhead due to the reception of linearly dependent combinations [4]–[6], which is particularly relevant if the underlying finite field is small. Second, it is necessary to distribute the coding coefficient vector, which describes how coding was performed, along with the coded packet. Overhead from the coding vector can be addressed by distributing seed values for a pseudo random function, but this reslult in the loss of ability to recode [7], which is a major benefit of NC.
Recent results have focused on understanding the choice of parameters, e.g., field size, generation size and sparsity, to maintain a low total overhead and higher processing speed [7], [8] or developing techniques that exploit some level of sparsity in the code, e.g., [6], [9]. The drawback of the latter is that the recoding process for sparse codes is not as straightforward as for RLNC and a general strategy is not known to date. More recently, Fulcrum network codes [10] have demonstrated how to achieve a low overhead and high processing speeds while maintaining simple recoding as in RLNC. The key to Fulcrum codes lies in part in the use of different finite fields, namely, F2 for network operations and a higher field extension field F2k for an outer code. In this work, we propose the use of multiple finite fields, where each field is an extension field of a previously defined field. For example, F22 uses F2 as a base field, while F22 2 uses F22 as a base field, and so on. As a consequence, field operations performed in small fields are valid operations in all its extension fields. This paper identifies key applications of composite extension fields in standard RLNC networks and Fulcrum network codes as well as proposes a code design on the basis of these composite fields. The proposed code design, here called telescopic codes, decrease the total communication overhead while retaining the possibility to recode. The code leverages multiple composite extension fields in a single generation of packets to achieve a better tradeoff between two sources of overhead: linear dependency and representation of the coding vectors. Our results show that it is possible to achieve a more compact vector representation as most elements are in a small field and, at the same time, maintain a low probability of linear dependency by utilizing a few elements in larger fields. We note that the proposed approach also reduces the complexity of encoding, recoding, and decoding operations leading to higher throughput. This is because most computations are performed over small and fast fields, with only a small ratio of operations performed over larger fields. Focus is on introduction of the idea and analyzes of its performance from a communication point of view. Implementation and real world performance measurements are left for future work. The remainder of this paper is organized as follows. Section II explains how the used extension fields are constructed and Section III details how encoding, decoding and recoding can be performed. Section IV provides performance analysis of the total code overhead, for various variants and baseline overhead. Final conclusions are drawn in Section V.
II. C OMPOSITE E XTENSION F IELDS The key to our approach lies in the definition of multiple composite extension fields. The goal is to allow compatibility between the operations performed in different fields, so that different nodes as well as different parts of the encoding/decoding process can be performed in the various finite fields. A. Generation of a Series of Composite Fields For generating the composite extension fields, we rely on polynomial arithmetic using as a base field the previous extension field generated. More specifically, we define each element in the composite field as fj (x) =
n X
i
aji x
After determining that m(x) is irreducible, we need to check that it is primitive. Several similar approaches can be followed. One standard method consists of computing the long division of xk − 1 modulo m(x) for increasing integer k from k = 1. Consider q as the field size of the base field. If the first value of k for which m(x) divides xk − 1 (i.e., the remainder of the long division is zero) is given by k = q n − 1 = q 2 − 1, then m(x) is also primitive. The number of primitive polynomials is still quite large. For example, for F22 there are four primitive polynomials and for F22 2 there are 64 primitive polynomials. For our numerical evaluation and examples we use the polynomials listed in Table I.
(1)
i=0
where ai is an element in the base field, and n is the degree of the polynomial. For two elements of the composite field f1 (x) and f2 (x), the addition operation is defined by f1 (x) + f2 (x) =
n X
(a1i + a2i )xi
(2)
i=0
where a1i + a2i uses the addition operation of the base field. For multiplication of f1 (x) · f2 (x), two steps are required. First, a product of polynomials and then a long division using a primitive polynomial m(x) to obtain the remainder. Operations between the aji coefficients follow the rules of the base finite field. In this work, we consider a series of composite fields constructed from F2 to obtain F22 , from it construct F22 2 , and from it F22 2 2 , etc. The rationale is that there already exist efficient implementations for these different field sizes that can be adapted to our approach [11] and that these fields fit data types in typical computer systems. Additionally, it provides as fine a granularity as possible for choosing different levels of computational complexity in the network. However, other configurations are possible as long as the starting point is a finite field, e.g., F23 could be used as the base field. For our specific construction, we consider the degree n = 1 for each new composite field created. This results in very simple addition and product operations. For the addition, f1 (x) + f2 (x) = (a10 + a20 ) + (a11 + a21 )x
q
F2 F22 F22 2 F22 2 2 F 2222
2 22 24 28 216
2
Used polynomial x2 + x + 1 x2 + x + 2 x2 + x + 9 2 x + x + 130
TABLE I: Primitive polynomials used in computations
By its design, multiplying an element of an extension field, f1 (x) = a10 + a11 · x , by another element that could be represented in the base field, i.e., f2 (x) = a20 + a21 x = a20 since a21 = 0, results in f1 (x) · f2 (x) = a10 · a20 + a11 · a20 · x
(5)
without needing to use the irreducible polynomial. This makes the product operation in the base field (and with elements from it) fully compatible with the product operation in the extension field. This can be illustrated by assuming four bits 1001, these can be interpreted as a single element (9) in F22 2 , or two concatenated elements (2 and 1) in F22 . If we multiply by 2 in the first field, i.e., 0010, the result is element 14 (1110). At the same time, multiplying each individual element from the base field by 2 results in 2 · 2 = 3 (11) and 2 · 1 = 2 (10), i.e., 1110 when concatenating them. This is only possible because 2 is a member of both fields. However, this property is not guaranteed by other finite fields created as direct extensions of F2 . Table II illustrates the table for product operations between two elements for the fields F2 , F22 and F22 2 .
(3)
which means that the addition is always a bitwise XOR of the different symbols. For the product operation f1 (x) · f2 (x) = (a10 · a20 + (a11 · a20 + a10 · a21 )x + (a11 · a21 )x2 ) mod m(x)
Field
(4)
where m(x) is a degree 2 polynomial. This makes m(x) particularly simple to find. A valid m(x) first needs to comply with m(x) = x2 + m1 x + m0 6= (x + b1 )(x + b2 ) for all values of b1 , b2 6= 0 in the base field to be irreducible. This search procedure showed that irreducible polynomials of this form are quite common for the various fields. For example, for F22 there are six irreducible polynomials and for F22 2 there are 120 irreducible polynomials.
⊗ 0 1 2 3 4 .. . 15
0 0 0 0 0 0
1 0 1 2 3 4
2 0 2 3 1 8
3 0 3 1 2 12
4 0 4 8 12 6
···
..
0
15
5
10
1
. ···
15 0 15 5 10 1 .. . 9
TABLE II: Partial multiplication table for the used fields F2 , F22 and F22 2 .
If an implementation based on lookup tables is used similar or better performance is ensured compared to using only the largest field. Generally, the cost of performing a table lookup will not change, but by mostly using a small field a small part
of the table will be accessed, thus increasing the probability of a cache hit and resulting in higher processing speed. We note that for big fields, e.g., F232 , a table look up implementation is not practical due to the necessary memory to store the tables. If iterative algorithms are used it could be beneficial from a performance perspective to only consider fields with a native datatype e.g. F2 , F28 , F216 to reduce the use of bit masking. B. Applications of Composite Extension Fields for NC Defining composite extension fields opens a series of opportunities in the design of NC systems. Its implications go from a potential reduction in the signaling to allowing a reduction in the overall computational complexity both inside the network and at the end devices. In the following, we discuss direct application in current designs and a new code design. 1) Standard RLNC systems: typically use a single field size in all coding operations, both at end devices and at intermediate nodes. This can create a heavy computational burden on intermediate nodes, which may need to process multiple flows. Using composite extension fields allows for intermediate nodes to choose what field to recode with according to their current work load without requiring an end-to-end change in parameters. This results in higher flexibility while maintaining the per packet overhead. The main drawback is the potential impact of the linear dependency if a smaller field is used at an intermediate node. 2) Fulcrum network codes: provide an interesting and simple solution to permit a fluid allocation of complexity in the network, maintaining the performance of high fields and a low per packet overhead for signaling. Composite extension fields can allow for the inner code in Fulcrum to be designed with a higher field from Fk2 , but allowing intermediate nodes to operate as low in field as F2 and maintain compatibility with the high field of the outer code. 3) Telescopic codes: are specifically designed to use multiple composite extension fields in the same generation of data packets. The key idea is to reduce the per packet overhead by using a large number of linear coefficients in small field sizes, and maintain a low overhead from linearly dependent combinations, by leveraging enough coefficients in fields of larger size. The remaining of this paper describes and analyzes this new design in detail. III. T ELESCOPIC C ODES We consider coding over g packets each of size B bits. In traditional RLNC, the data in each packet is represented by a Finite Field (FF) of size q. A coded packet, x, is generated at the source by combining all g packets in the block [12] as defined by a coding vector v which comprises g coding coefficients in the FF, x = M · v. Instead, we propose that the coding vectors v contain elements in multiple fields with different sizes Thus, we define q as the list of field size of length g, |q| = g, corresponding to the elements in the coding vector, v. Without loss of generality q i ≤ q i+1 , ∀i ∈ [1, g]. |v| =
|q| X i=1
⌈log2 (q i )⌉ [bits]
(6)
A receiver that has collected any g linearly independent coded (or uncoded) packets can invert the performed coding ˆ · Vˆ −1 , operations and thus recreate the original data, M = X ˆ is the collected coded packets and Vˆ is the where X corresponding collected coding vectors. Without coding, the receiver would instead have to collect all original packets. See [12], [13] for introductions to FF and RLNC. A. Encoding As in traditional RLNC, a coded packet x is created by multiplying the data M with a coding vector v. Thus a coded packet is calculated as the sum of the products for each packet multiplied with the corresponding element in the coding vector x=
|q| M i=1
l M i,j ⊗ v i , ∀j ∈ 1,
m B ⌈log2 (q i )⌉
(7)
Where vi is a random element drawn from the field q i . The size of the resulting coded packet is identical to that of one of the original packet. B. Decoding Decoding can be performed efficiently in the same way as traditional RLNC using Gaussian elimination [12], [14] with the following steps. 1) Forward substitute: each previously received symbol, u, into the received symbol v, v = v + u · v r s.t. v r = 0 where r is the pivot element identified for the previously received symbol hence ur ≡ 1. 2) Identify pivot: for the resulting symbol, v p = min(v 6= 0) and normalize v wrt. v p , v = v · v p −1 . 3) Backward substitute: the partially decoded symbol into previously received symbols u, u = u + v · up s.t. up = 0. From Equation (3), the addition of two coding vectors (and coded packets) is valid, and since v i ≡ 0, ∀i ∈ [1, p) and q p ≤ q j , ∀j ∈ [p, g] all the multiplications performed during decoding is also valid. Below is an illustration of the initial coding matrix and the state after partial decoding. We use Fq here to represent an element drawn from a specific field q, without specifying its exact value. T Vˆ
F2 F2 = F2 F2
F2 F2 F2 F2
F22 F22 F22 F22
F22 2 F22 2 → F22 2 F22 2
1 0 0 0
F2 1 0 0
F22 F22 1 0
F22 2 F22 2 F22 2 F22 2
Given the underlying structure, the decoder starts by identifying pivot elements from coefficients of the smaller field (leftmost), in this case, F2 . Using those pivot elements, it can start eliminating its contribution from the other linear combinations using only F2 operations. After all F2 posible pivot elements have been identified and its contribution eliminated from the remaining coded packets, the decoder starts identifying pivots in the second smallest field, namely, F22 . After eliminating the contribution from coefficients in F22 , the decoder focuses on the next higher field, and so on.
C. Recoding Because the elements in the coding vectors are drawn from fields of different sizes, recoding becomes slightly more complicated compared to RLNC using a single field, but retains the same fundamental properties. The main objective is to retain the structure of the coding vector and thus a recoded packet’s coding vector, v ˜, should be indistinguishable from an “original” coded packet’s coding vector, defined as v ˜i ∈ q i , ∀i. Recoding is performed using a local recoding vector, denoted w, with r elements, where r is the rank of the decoder and wi is a random element drawn from the field q i . l r m M B ˆ T ⊗ w i , ∀j ∈ 1, X x ˜= (8) i,j ⌈log2 (q i )⌉ i=1 l r m M T B Vˆ i,j ⊗ wi , ∀j ∈ 1, v ˜= (9) ⌈log2 (q i )⌉ i=1 One approach is to partially decode all incoming packets, T thus keeping Vˆ on reduced echelon form. This requires additional computational work if the recoding node do not need to decode, but ensures that a recoded coding vector is indistinguishable from an original coding vector. Since v ˜i = wi , ∀i ∈ [1, r] and v ˜i , ∀i ∈ [r + 1, g] is given by Equation (9) where w i ≤ q j , ∀i ∈ [1, r], j ∈ [r + 1, g] hence v ˜i ≤ q i , ∀i ∈ [r + 1, g] by Equation (4) and Equation (5). Alternatively recoding can be performed with a local coding vector with elements in the smallest field, F2 , the resulting recoded coding vector v ˜ will also be indistinguishable from and originally coding vector. But the drawback is that the probability of linear dependency at the receiver may be impacted negatively due to the use of a small field [10]. Finally, recoding may also be performed over one of the extension field with size qx then the elements in v ˜ will have size max(q i , qx ), ∀i ∈ [1, g]. This approach can reduce the probability of linear dependency at the receiver but also Pgincreases the overhead from the coding vector to |˜ v | = i=1 ⌈log2 (max(q i , qx ))⌉ [bits]. D. Overhead Analysis
The performance in terms of the expected end-to-end overhead is determined by the fields used in the coding vector, defined by q, and can be calculated from the expected number of coded packets received before decoding, the overhead added by including the coding vector, the packet size B and the generation size g = |q|. Some contemporary works consider the coding vector overhead to be negligible by transmitting only a seed value to generate the coding vector with a pseudo random generator. However such an approach exclude the possibility of efficient recoding, which is an important selling point of network coding [7]. The expected number of coded packets received before decoding, T (q), can be found using similar arguments as those used for RLNC using a single field [7], but modified to account for the multiple fields defined by q. The full characterization of the process describing the number of coded packets to be received before decoding can be obtained using absorbing Markov chain with a state defined as S = (i1 , i2 , ..., iK ),
where K field sizes are being utilized with sizes q1 , ..., qK , q1 < q2 < ... < qK , ij represents the number of pivot elements for the j-th field size. Here, we are grouping elements from q with the same value, e.g., q1 = q 1 = ... = q l1 , q2 = q l1 +1 = ... = q l2 , and so on up to qK = q lK−1 +1 = ... = q lK . The reason is to reduce the number of states needed to represent the problem. PK Furthermore, j=1 ij ≤ g and ij ≤ uj , where uj = lj − lj−1 defines the number of coefficients with field size qj . Clearly, the more fields used, the more complex the state definition is. We assume that the decoder will attempt to first find pivot elements from the lower fields and, only if unsuccessful, attempt to find them in the higher fields. This allow the decoder to operate using simpler operations as much as possible. Define PS (j) as the transition probability from state S to increase the number of pivot elements of the j − th field size, i.e., to transition from S = (i1 , i2 , ..., iK ) to S ′ = (i1 , ..., ij + 1, ...iK ), with j ∈ {1, ..., K}. To simplify notation, we define 1j as a row vector with all zeros except position j which contains a 1. We define PS (0) as the probability of self-transition at state S. Then, PS (j) = −(u −i ) 1 − q1 1 1 Qj−1 −(ul −il ) −(uj −ij ) q 1 − q j l=1 l Q 1 − K q −(ul −il ) l=1 l 0
if j = 1 and i1 < u1 if j > 1 and ij < uj if j = 0 otherwise
Using the moment generating function results from [15], we can have a full characterization of this problem. Finding T (q) can be solved with standard absorbing Markov chain arguments. By considering the mean time to absorption when starting in state S as TS and that T (q) = T(0,0,...,0), then TS = 1 +
K X
PS (j)TS+1j
j=0
This creates a system of linear equations that can be solved to obtain the value of T (q). The full formulation can become computationally cumbersome if a large number of fields are used, therefore a reasonable approximation for the expected number of coded packets needed to decode in cases with four or more high field coefficients, is used. −1 |q| X 1 1 − |q|−r+1 T (q) = R(q) + g ≈ (10) qr r=1 where we assumed that at each reception the packet transition probability is essentially dominated by the smallest field size not yet with a pivot and that each previous, useful coded packet provided a pivot for the fields with the smallest size. Finally, the end-to-end overhead using either the full model or the approximated expression can be obtained as O=
T (q) · (B + |v|) − g · B R(q) |v| R(q) · |v| = + + g·B g B g·B (11)
28 216 232
60
8192
0
4096
10-4
2048
20
1024
10-3
512
40
256
10-2
128
60
64
10-1
32
80
8
100
Overhead reduction [%]
Overhead compared to the best fixed field Two-fields 100 Multi-fields
28 216 232
Generation size [-]
Fig. 2: Expected overhead with a packet size of 1 MB.
512
Generation size [-]
256
0
128
10-1
64
20
32
100
16
40
8
101
101
Different choices of q 21 One-field 22 Two-fields 24 Multi-fields
16
Overhead compared to the best fixed field Two-fields Multi-fields 80
102
4
Total overhead [%]
103
Different choices of q 21 One-field 22 Two-fields 24 Multi-fields
100
Overhead reduction [%]
104
102
4
This section focuses on the end-to-end overhead analysis of Telescopic codes. Other interesting metrics could be delay or completion time, but these require the inclusion of a network topology and channel conditions, whereas here only the raw performance of the code itself is considered. We consider dense RLNC with a fixed field size as the baseline for comparison, since so far no practical and scalable solution for recoding of sparse RLNC codes have appeared [7]. We use the following field size [2, 22 , 24 , 28 , 216 , 232 ] as these can be represented by native datatypes in most computers or as several symbols packed in a byte. For the proposed approach we find the optimal configuration of fields in terms of minimizing the expected overhead. Additionally, we consider the special case where only the binary field and one binary extension field is used, as this approach is simple to implement in existing systems using a binary extension field. The expected overhead is evaluated for a range of generation sizes and with two different packet sizes 1.6 KB and 1 MB. Finally we calculate the reduction in overhead compared with RLNC with the single field that performs best. Fig. 1 shows the overhead with a packet size of 1.6 KB which is representative of the packet size in wireless networks in order to avoid MTU fragmentation. For our three practical approaches in Fig. 1 the total overhead increases with g and the solution provides lower overhead with the increase in degrees of freedom; from one, to two, to multiple fields. At low and high values of g the gain of utilizing multiple fields decreases. Using multiple fields the overhead is less than 1 % for g ≤ 100, and for g = [16, 128] the reduction in overheads is more than 50 % compared to RLNC with a fixed field. The reduction in overhead when two fields are used is also significant but as g decreases the performance deteriorates noticeably when compared against using multiple fields.
values of g and less than 0.1h for g ≤ 700. Additionally, the overhead reduction in % compared to standard RLNC is higher, For g = [16, 2048] the reduction is more than 60 % and for g = [32, 512] the reduction is more than 80 %. Fig. 3 shows what fields should be used in the coding vector to achieve the lowest overhead for various generation sizes with a symbol size of 1.6 KB. Using only one field, see Fig. 3a, as the generation increases, the field size of the optimal field decreases, and for g ≥ 128, F2 should be used for this packet size. With multiple fields, see Fig. 3c, for small values of g the coding vector comprises values in the extension fields, e.g. for g = 4 50% of the elements are in F24 , 25% in F28 , and 25% in F216 , two, one and one element(s) respectively. As g grows an increasing ratio of elements should be in F2 , e.g. for g = 64 90 % of the elements are in F2 . It should be noted that for this packet size the largest used field is F28 unless g < 8. Using F2 and one extention field, see Fig. 3b, the trend is similar, as g increases the size of the used fields decrease. Thus for high g the coding throughput will approach that of binary RLNC [6], [10].
Total overhead [%]
IV. R ESULTS
Fig. 1: Expected overhead with a packet size of 1.6 KB.
Fig. 2 shows the overhead with a packet size of 1 MB which could be a suggested atomic size in a distributed storage system. The trends are similar to those for the small packet size, but the overhead is lower, less than 1 h for all considered
V. C ONCLUSION This work proposes a mechanism to generate a series of composite extension fields that maintain compatibility in their addition and product operations on the various fields. This creates a powerful building block that can provide additional flexibility to current RLNC systems, e.g., allowing for recoding in the network in lower fields than the end-to-end field while maintaining the code structure and representation. It also enables the design of NC codes with lower total overhead. We proposed Telescopic codes, that exploit this underlying structure by using multiple composite extension fields with different size to combine packets from the same generation. This approach provides additional freedom compared to traditional RLNC when constructing codes and enables a reduction in the total overhead from the code, while providing potential speed ups in processing and retaining the ability to recode in a simple way.
60
40 Field size 28
Generation size [-]
(a) One-field
40
Field size 28
20
80
60
40
Field size 216
28 24 22 2
20
Generation size [-]
(b) Two-fields
256
128
64
32
16
8
0
4
512
256
128
64
32
16
0
8
24 2 512
256
128
64
32
16
4
0
24 22 2
60
4
20
80
512
80
100
Optimal choice of field distribution [%]
Optimal choice of field distribution [%]
100
8
Optimal choice of field distribution [%]
100
Generation size [-]
(c) Multiple-fields
Fig. 3: Solutions for the used field sizes in the coding vectors when minimizing for the total overhead with a packet size of 1.6 KB.
Our numerical results show that the total overhead can be reduced significantly compared to traditional RLNC. This is achieved by choosing a small field for most of the coding coefficients, to deliver a compact coding vector, while using a small number of large field coefficients to reduce linear dependency between coded packets. For standard packet sizes in wireless networks, the overhead can be reduced by more than 50%. For larger packet sizes as in the case of storage applications, the reduction of overhead is even larger. The potential of a series of composite fields is significant beyond helping to deliver novel codes. It can help us rethink fundamental results to construct deterministic network codes, e.g., [16], by including constraints that keep the choices of coefficients in the lower values as much as possible to allow for less complexity in the system. It can also have a direct impact on the management of complexity from network coding in dynamic scenarios, i.e., when nodes experience different and time-varying traffic loads or energy constraints. Future work should also consider the potential effects in security, of this field construction strategy. ACKNOWLEDGMENT This work was partially financed by the Green Mobile Cloud project (Grant No. DFF - 0602-01372B) and the TuneSCode project (Grant No. DFF - 1335-00125) granted by the Danish Council for Independent Research. R EFERENCES [1] R. Ahlswede, N. Cai, S.-Y. R. Li, and R. W. Yeung, “Network information flow,” IEEE Trans. on Info. Theory, vol. 46, no. 4, pp. 1204–1216, 2000. [2] T. Ho, R. Koetter, M. M´edard, D. Karger, and M. ros, “The benefits of coding over routing in a randomized setting,” in Proceedings of the IEEE International Symposium on Information Theory, ISIT ’03, June 29 - July 4 2003. [Online]. Available: citeseer.ist.psu.edu/ho03benefits.html [3] P. A. Chou, Y. Wu, and K. Jain, “Practical network coding,” Allerton conference on communication control and computing, vol. 4, pp. 40–49, 2003. [4] O. Trullols-Cruces, J. Barcelo-Ordinas, and M. Fiore, “Exact decoding probability under random linear network coding,” IEEE Comm. Letters, vol. 15, no. 1, pp. 67 –69, january 2011. [5] X. Zhao, “Notes on ”exact decoding probability under random linear network coding”,” IEEE Comm. Letters, vol. 16, no. 5, pp. 720 –721, may 2012. [6] J. Heide, M. V. Pedersen, F. H. Fitzek, and T. Larsen, “Network coding for mobile devices - systematic binary random rateless codes,” in The IEEE Int. Conf. on Comm. (ICC), Dresden, Germany, 14-18 June 2009.
[7] J. Heide, M. V. Pedersen, F. H. Fitzek, and M. M´edard, “On code parameters and coding vector representation for practical rlnc,” in IEEE Int. Conf. on Comm. (ICC), Kyoto, Japan, jun 2011. [8] A. Paramanathan, M. V. Pedersen, D. E. Lucani, F. H. P. Fitzek, and M. Katz, “Lean and mean: network coding for commercial devices,” IEEE Wireless Communications, vol. 20, no. 5, pp. 54–61, October 2013. [9] X. Li, W. H. Mow, and F.-L. Tsang, “Singularity probability analysis for sparse random linear network coding.” in IEEE International Conference on Communications (ICC), June 2011. [10] D. E. Lucani, M. V. Pedersen, J. Heide, and F. H. Fitzek, “Coping with the upcoming heterogeneity in 5g communications and storage using fulcrum network codes,” in Int. Symp. on Wireless Comm. Systems (ISWCS), 2014. [11] S. Guenther, M. Riemensberger, and W. Utschick, “Efficient GF Arithmetic for Linear Network Coding using Hardware SIMD Extensions,” in International Symposium on Network Coding (NetCod), Jul. 2014. [12] C. Fragouli, J. Boudec, and J. Widmer, “Network coding: an instant primer,” SIGCOMM Comput. Commun. Rev., vol. 36, no. 1, pp. 63–68, 2006. [13] A. Neubauer, J. Freudenberger, and V. Kuhn, Coding Theory: Algorithms, Architectures and Applications. Wiley-Interscience, 2007. [14] J. Heide, M. V. Pedersen, and F. H. Fitzek, “Decoding algorithms for random linear network codes,” in IFIP International Conferences on Networking - Workshop on Network Coding Applications and Protocols (NC-Pro), ser. Lecture Notes in Computer Science, vol. 6827, Valencia, Spain, may 2011, pp. 129–137. [15] D. E. Lucani, M. Medard, and M. Stojanovic, “On coding for delay - network coding for time-division duplexing,” IEEE Trans. on Info. Theory, vol. 58, no. 4, pp. 2330–2348, April 2012. [16] S. Jaggi, P. Sanders, P. Chou, M. Effros, S. Egner, K. Jain, and L. M. G. M. Tolhuizen, “Polynomial time algorithms for multicast network code construction,” IEEE Trans. on Info. Theory, vol. 51, no. 6, pp. 1973–1982, June 2005.