The distributed storage systems realize a reliable data storage system via multiple data storage devices. In the distributed storage systems, each original data (or message) is split into several source packets. Those source packets are encoded by an erasure correcting code and each encoded packet is stored in a data storage device. Hence, even if several data storage devices are broken, one can recover the original data by using erasure decoding. Nowadays, the distributed storage systems are used in cloud storage services , e.g, Google file system and Dropbox .
Each packet is composed of multiple bits. We assume that an erasure correcting code generates encoded packets from source packets, where . An erasure correcting code satisfies combination property  if the original message can be decoded from arbitrary source packets. It is easily confirmed that the maximum distance separative (MDS) codes satisfy combination property.
Read-Solomon (RS) code  is an MDS code defined over a non-binary finite field. Since the encoding and the decoding algorithms of RS codes are performed over the non-binary finite field, the computation complexity is high  and the electric energy consumption is also high . Hence, distributed storage systems with RS codes are not suitable for the situation in which one needs high throughput or one needs to save energy (e.g, battery-powered devices).
An erasure correcting code is sub-optimal if the code satisfies combination property but the length of encoded packets are slightly longer than the source packets. Zigzag decodable (ZD) code [3, 7] is a sub-optimal code. ZD codes are encoded by using exclusive OR (XOR) and bit-level shift operation and are efficiently decoded by zigzag decoding . Hence, it is known that ZD codes have lower encoding and decoding complexities than RS codes .
By the bit-level shift operation, the encoded packets are slightly longer than the source packets. We refer to the extra length of an encoded packet as overhead of an encoded packet. A code with large overhead requires large storage size. Hence we should construct a code with small overhead.
In this paper, we construct a sub-optimal code which has smaller overhead than the ZD codes. We refer to the constructed code as the shift and XOR (SXOR) code. The SXOR code can be also encoded by using XOR and bit-level shift. In this paper, firstly, we consider a maximum a posteriori (MAP) decoding algorithm for the ZD code. As a result, we see that the MAP decoding algorithm is efficiently realized by an infinite impulse response (IIR) filter. Secondly, we construct a sub-optimal code encoded by shift and XOR with small overhead under MAP decoding. Thirdly, we construct a systematic form of an SXOR code. Finally, we evaluate the overhead of ZD codes and SXOR codes. As a result, we show that SXOR codes have smaller overhead than ZD codes.
This paper is organized as follows: Section II gives notations and definition of ZD codes. In Section III, we consider the MAP decoding algorithm for the codes encoded by using XOR and bit-level shift. Section IV proposes SXOR code and its systematic form. Section V evaluates the overhead of ZD codes and SXOR codes. Section VI concludes the paper.
Ii ZD Codes and Zigzag Decoding
This section explains the ZD code and the zigzag decoding algorithm with a toy example. Moreover, we introduce a construction of a ZD code.
As a toy example, we consider a ZD code which generates four encoded packets from two source packets with length . The first (resp. second) encoded packet (resp. ) stores the first (resp. second) source packet (resp. ), i.e, and . The third encoded packet is generated from the bit-wise XOR of two source packets , i.e, . The fourth encoded packet is generated from the bit-wise XOR of and with a right shift, i.e, . Note that the length of the fourth packet is .
Now, consider the decoding from two encoded packets . Since the first bit of stores the first bit of , we have . By using this result, we can recover the first bit of from the first bit of , i.e, . Similarly, the decoder recovers and the decoding is success. Since the decoding process takes zigzag path in the encoded packets as in this example, this decoding is called zigzag decoding .
We assume that a file is split into source packets . Each source packet is composed of bits. The -th source packet is denoted by
We introduce the polynomial representation for the source packets easily to describe the shift operation. The polynomial representation of the source packet is given by
A ZD code generates the encoded packets by using shift operation and XOR of the source packets. By the shift operation, the encoded packets are slightly longer than the source packets. Assuming that the length of the encoded packets is given by , we denote
Here, is the number of extra bits generated by the shift operation and called overhead. Similarly, the polynomial representation of the encoded packet is given by
Each encoded packet is generated as follows: 1) shifting source packets and 2) adding those packets. Note that denotes the right shifting of with offset . Hence, in the ZD code, the -th encoded packet is given as
where is a monomial of , i.e, . We denote the degree of , by . Then, we have . Denote the source packets and encoded packets, by
We define the generator matrix by . Then, the ZD code is generated as
To simplify the notation, we denote by .
The “good” ZD code can be decoded by zigzag decoding and has the small maximum overhead and total overhead . In , , the ZD codes with are proposed. The ZD codes with the smallest maximum overhead is given in . Table I shows those maximum overhead. In , for
, the generator matrixes via heuristic approach and forthe generator matrixes are constructed from Hankel matrixes. For example, the generator matrix with in  is
Iii MAP Decoding Algorithm for ZD Code
In this section, we will show that the ZD codes are also efficiently decoded by MAP decoding algorithm.
Let be the finite field of order . Let be the polynomial ring with the coefficient . Moreover, we denote field of rational functions over as , i.e,
In the MAP decoding algorithm, the source packets are decoded from encoded packets. We denote the encoded packets, by . Let be the set of indexes of the encoded packets, i.e, . We denote the submatrix of obtained by choosing columns in the set , by . Notice that
is the invertible matrix over, we have
We assume that the generator matrix is (3). When we decode the source packets from the encoded packets , i.e, , we have
Then, the inverse matrix is
Therefore, firstly, we calculate the following equation.
From (4), we get
From those equations, we have
Secondly, we calculate from . Since ,
where . In particular, we have , and we recover . Next, we have and , and we recover . Similarly, if decoding succeeds until the -th bit, we can compute the -th bit by substituting into (6). This can be easily realized by feedback and a flip-flop.
For a fixed ZD code and a set of indexes, if Zigzag decoding succeeds, the MAP decoding also succeeds. Hence, if ZD code is sub-optimal, the MAP decoding algorithm can decode the source packets from arbitrary encoded packets. That is, if a ZD code is sub-optimal, we have for arbitrary set of indexes with . Conversely, if the submatrix satisfies for arbitrary set of indexes with , then the ZD code is sub-optimal under MAP decoding.
In general, we can rewrite with and a matrix over , i.e,
The polynomial can be factorized by a monomial and irreducible polynomials with constant term as follows:
This means that the bits at the front of are . Therefore, the bits at the front of are removed in the decoding. The polynomials are realized by feed back and flip-flops. Moreover, is constructed from the cascade of those filters.
The MAP decoding algorithm depicted in Fig.1 starts from the left of the encoded packets. Hence, the source packets can be decoded from the left.
The zigzag decoding algorithm is to search an encoded packet that has an exposed bit, which can be directly read out. After that, the bit is subtracted from other encoded packets. The procedure repeats until all source packets are decoded. In other words, the bits of and cannot be decoded in parallel under zigzag decoding. The MAP decoding algorithm by using a circuit can decode in parallel, i.e, the MAP decoding algorithm is the parallel decoding algorithm.
Iv Erasure Correcting Codes by Using Shift Operation and Exclusive OR
In this section, we propose the erasure correcting codes by using shift operation and XOR which is named the shift and XOR (SXOR) code. Moreover, we propose a systematic SXOR code.
Iv-a SXOR codes
Let be the finite field of order . Let be a primitive element of and a primitive polynomial of which root is . Assume that , where is a positive integer. Let be a Vandermonde matrix defined over , i.e, . We denote the remainder derived from division of polynomial by , by .
Construction 1 (SXOR code).
Each element of a generator matrix for an SXOR code is a polynomial remainder derived from the division of the corresponding element of by . In other words, the generator matrix for the SXOR code satisfies .
Notice that the maximum overhead is determined from the maximum degree of the elements in generator matrix. Hence, the maximum overhead is . Recall that , where the symbol denotes the ceiling function, which is the integer obtained by rounding up. Therefore, the maximum overhead is given by .
Let , and . The generator matrix is given by
From this, we see that the maximum degree, i.e, the maximum overhead, is .
Hereafter, we denote the submatrix of obtained by choosing columns in the set , by .
The code in Construction 1 is sub-optimal.
To prove this, we will show that the submatrix for the arbitrary set of indexes with satisfies . By the properties of Vandermonde matrix, we have
Note that primitive polynomials are irreducible. By the properties of Vandermonde matrix and remainder, we have
where be a nonzero polynomial of degree less than . From the above, we can write with a polynomial
Hence we obtain the theorem.
Iv-B Systematic SXOR Codes
Let be a sequence over which satisfies (for ). Let be the submatrix of which the -th column equals to the -th column of .
Let and . For the sequence and , we have
By the properties of Vandermonde matrix, the inverse matrix always exists.
Construction 2 (Systematic SXOR code).
Similar to the Construction 1, each element of a generator matrix is a polynomial remainder derived from the division of corresponding element of by . In other words, the systematic SXOR code is generated from an generator matrix .
Let , , and . The submatrix and inverse matrix is given by
Compute . Then, the generator matrix is
From the first, third, and fourth column of , we see that the encoded packets store the source packets. This means that the code is systematic.
The code in Construction 2 is sub-optimal.
This theorem is proven in a similar way to Theorem 1.
The generator matrix of a systematic SXOR code depends on . Hence, we see that there are
generator matrixes. However, those matrixes can be classified into several classes.
A sequence is equivalent to if for all there exists only one such that . In other words, and are equivalent if we can write by a permutation over . The two generator matrixes and are equivalent if can be transformed into by using row permutation and column permutation.
If and are equivalent, then and are equivalent.
We denote the submatrix and , by , . Since and are equivalent, we have , . Note that and are equivalent. From and , and are equivalent. From Construction 2, and are equivalent.
From Theorem 3, the generator matrixes can be classified into classes.
Let , and . We will enumerate the generator matrix with sequence with entries , and . To simplify the notation, we denote the first, second, and third row of , by , , and
, respectively. Then, the row vector, and are
Then, we obtain the following results:
From the above, we confirm that each entry of corresponds to the index of row vector.
In particular, for , we can reduce the number of classes of the generator matrixes. For and a positive interger , we define as follows:
Assume that . Then, and are equivalent for all positive integer .
Write for a diagonal matrix whose diagonal entries starting in the upper left corner are . From the properties of the Vandermonde matrix, we have for
From the above and (7), we have
From this, the second factor of the equation is equivalent to . Hence, is equivalent to . By similar arguments to the above, we can also show that for . Hence we obtain the theorem.
Let , , and . We will enumerate the generator matrix with sequence with . Denote the -th column of , by . We obtain the following results:
From the above, we confirm that is the right cyclic shift of .
V Performance Evaluation
In this section, we evaluate the encoding complexity and overhead for SXOR codes. Section V-A shows that the complexity and overhead are depended on the sequence and primitive polynomial . Section V-B compares the complexity and overhead for the SXOR codes, systematic SXOR codes and Hankel matrix based ZD codes .
V-a Dependency to and
We denote the two primitive polynomials of degree , by and . We assume , . In this case, from the result in the previous section, the generator matrixes are classified into five classes. We denote the five representatives, by , , , , and . Then, the five representatives for are
Due to space limitations, we omit the generator matrixes for .
We refer to the number of XOR used in encoder as the encoding complexity and denote it by . Table II displays the maximum overhead , total overhead , and encoding complexity of the five representatives for and .
From Table II, we see that the total overhead and encoding complexity depend on the sequence a primitive polynomial .
V-B Performance comparison
We assume and . The complexities and overheads for systematic SXOR codes depend on the sequence for each . Hence, we evaluate the systematic SXOR code with the smallest total overhead. We compare the systematic SXOR code with the SXOR code and the ZD code. Table III shows the encoding complexity and two overheads , for systematic SXOR codes, SXOR codes and ZD codes.
|Systematic SXOR code|
From Table III, we see that the systematic SXOR code has smaller overheads and encoding complexity than the SXOR code for each . Moreover, we see that the systematic SXOR code has smaller overheads than the ZD code for each . However, the systematic SXOR code has larger encoding complexity than the ZD code for each . Summarizing above, we conclude that the systematic SXOR code has small overheads but its encoding complexity is high.
In this paper, we have considered MAP decoding algorithm for the ZD code. Moreover, we have proposed SXOR code and its systematic form which has small overheads under MAP decoding. We see that the generator matrix can be classified into several classes. Finally, we have evaluated the overhead of ZD codes and SXOR codes. As a result, we have shown that the complexity and overhead are depended on the sequence and primitive polynomial and the systematic SXOR codes have smaller overhead than ZD codes.
-  Q. Zhang, L. Cheng, and R. Boutaba, “Cloud computing: state-of-the-art and research challenges,” Journal of internet services and applications, vol. 1, no. 1, pp. 7–18, 2010.
-  I. Drago, M. Mellia, M. M Munafo, A. Sperotto, R. Sadre, and A. Pras, “Inside dropbox: understanding personal cloud storage services,” in Proceedings of the 2012 ACM conference on Internet measurement conference. ACM, 2012, pp. 481–494.
-  M. Dai, C. W. Sung, H. Wang, X. Gong, and Z. Lu, “A new zigzag-decodable code with efficient repair in wireless distributed storage,” IEEE Transactions on Mobile Computing, vol. 16, no. 5, pp. 1218–1230, 2017.
-  I. S. Reed and G. Solomon, “Polynomial codes over certain finite fields,” Journal of the society for industrial and applied mathematics, vol. 8, no. 2, pp. 300–304, 1960.
-  P. Vingelmann, M. V. Pedersen, F. H. P. Fitzek, and J. Heide, “Multimedia distribution using network coding on the iphone platform,” in Proceedings of the 2010 ACM Multimedia Workshop on Mobile Cloud Media Computing, ser. MCMC ’10. New York, NY, USA: ACM, 2010, pp. 3–6. [Online]. Available: http://doi.acm.org/10.1145/1877953.1877957
-  H. PJM, “Energy efficiency of error correction on wireless systems,” in Wireless Communications and Networking Conference, WCNC. IEEE, 1999, pp. 616–620.
-  C. W. Sung and X. Gong, “A zigzag-decodable code with the mds property for distributed storage systems,” in 2013 IEEE International Symposium on Information Theory Proceedings (ISIT). IEEE, 2013, pp. 341–345.
-  S. Gollakota and D. Katabi, “Zigzag decoding: combating hidden terminals in wireless networks,” in Proc. SIGCOMM, 2008, pp. 159–170.
-  M. Dai, C. W. Sung, H. Wang, X. Gong, and Z. Lu, “A new zigzag-decodable code with efficient repair in wireless distributed storage,” in IEEE Transactions on Mobile Computing, 2016.
-  C. W. Sung and X. Gong, “A zigzag-decodable code with the MDS property for distributed storage systems,” in Proc. 2013 IEEE Int. Symp. Inf. Theory (ISIT), 2013, pp. 341–345.