The present invention relates to network coding, and in particular, to a method, an apparatus, and a system for random linear network coding.
Network coding is a specific channel coding known as rateless coding. The transmission model between the transmitting end and the receiving end is relatively simple: The transmitting end sends code packets to the receiving end continuously at the greatest rate, without waiting for feedback information from the receiving end; and the receiving end obtains original data after accumulating enough code packets.
In abstract algebra, a Galois field (also known as a finite field) is a field that includes a finite number of elements (digits). A Galois Field (GF) composed of q elements may be expressed as GF (q). GF operation is defined as a specific cyclic mapping relation between finite elements. Typical GF operations include GF addition and GF multiplication. Due to characteristics of circulation, the finite elements in the GF are correlated with each other to form a finite loop. For any element outside this loop, a modulo operation is performed on the element outside the loop so that the element is mapped to an element in the finite loop. The addition table and the multiplication table of the GF are globally unique. Reverse operation of the GF addition and multiplication exists because the GF addition and multiplication operations are one-to-one mappings. GF(q) addition and multiplication are expressed as:
A⊕B=(A+B)mod q
A
B=(A×B)mod q
In the formulas above, is an adding operator in the GF,
is a multiplying operator in the GF, and mod refers to modulo operation.
In the coding process and the decoding process of the network codes, the original data blocks are operated by performing the GF addition and the GF multiplication. Because the operation in the GF is completely reversible, the decoding process is a reverse process of the coding process.
As shown in
The original data is split into M data blocks (M≧2);
the data blocks are converted into code packets; and
the data blocks may be converted into code packets by using the formula
where Yk represents a code packet k, Xi represents a block i, Cki represents a random coefficient of a block i in the code packet k.
After a GF operation is performed on the data blocks, at least M code packets are generated. The code packets are sent to the receiving end one by one.
The receiving end receives the code packets and the corresponding random coefficients.
After receiving M linearly independent code packets, the receiving end constructs a linear equation group, where Xi represents M unknown numbers, and Cki and Yk are parameters included in the code packet.
The linear equation group is solved to obtain the original data.
In the process of transmitting the content by performing the foregoing network coding, the inventor finds that the decoding process corresponding to the network coding in the prior art is rather complicated and takes a long time, which makes the method hardly promotable in the Internet.
The embodiments of the present invention provide a coding method for random linear network to facilitate the coding process and the decoding process of the network coding and shorten the decoding time significantly.
To fulfill the foregoing objectives, the coding method for random linear network in an embodiment of the present invention includes:
splitting original data into at least two data blocks sequentially;
determining at least two coefficient groups, where the length of each coefficient group is the same as the number of the data blocks, and the coefficient group includes two elements;
In the embodiment, the two elements are 1 and 0.
performing a bitwise-AND operation on the data blocks and coefficients corresponding to the data blocks to obtain code blocks; and
performing a bitwise-XOR operation between the code blocks to obtain code packets.
To fulfill the foregoing objectives, a decoding method for random linear network in an embodiment of the present invention includes:
simplifying coefficient groups in code packets by performing an inverse operation of a bitwise-XOR operation; and
obtaining original data.
The embodiments of the present invention provide an apparatus for random linear network coding to facilitate the coding process and the decoding process of the network coding and shorten the decoding time significantly.
To fulfill the foregoing objectives, an apparatus for random linear network coding in an embodiment of the present invention includes:
a data splitting module, configured to split original data into at least two data blocks sequentially;
a coefficient determining module, configured to determine at least two coefficient groups, where a length of each coefficient group is the same as the number of the data blocks, and the coefficient group includes two elements;
an AND operation module, configured to perform a bitwise-AND operation on the data blocks and coefficients corresponding to the data blocks to obtain code blocks; and
an XOR operation module, configured to perform a bitwise-XOR operation on the data blocks to obtain code packets.
To fulfill the foregoing objectives, an apparatus for random linear network decoding in an embodiment of the present invention includes:
a simplifying module, configured to simplify data groups in code packets by performing an inverse operation of a bitwise-XOR operation; and
a data obtaining module, configured to obtain original data.
The embodiments of the present invention provide a system for random linear network coding to facilitate the network decoding process and shorten the decoding time significantly.
To fulfill the foregoing objectives, a system for random linear network coding in an embodiment of the present invention includes:
a coding apparatus, configured to allocate coefficients to original data blocks randomly, and convert the original data blocks into code packets by performing a bitwise-AND operation and a bitwise-XOR operation; and
a decoding apparatus, configured to simplify and decode the code packets to obtain original data.
By using the method, the apparatus, and the system for random linear network coding in the embodiments of the present invention, in the coding process, GF(2)-based network coding is applied, coefficients are allocated to the original data blocks randomly, and the original data blocks are converted into code packets by performing a bitwise-AND operation and a bitwise-XOR operation; in the decoding process, the non-pivot elements in each code packet are cut down to 0 so that the coefficient matrix of the code packet is finally simplified into a unit matrix and that the corresponding original data is obtained. The decoding process in the present invention prevents the complicated inverse operation of the coefficient matrix, and therefore the decoding process is much simpler and the operation time is shorter than the decoding process in the prior art. The method, the apparatus, and the system for random linear network coding in the embodiments of the present invention implement the network coding and the network decoding more quickly and efficiently.
The decoding process is too complicated and the processing time is too long in the network decoding in the prior art. To solve such problems, the embodiments of the present invention disclose a coding method for random linear network. The method is described below with reference to the accompanying drawings.
As shown in
21. Split original data into at least two data blocks sequentially.
22. Determine at least two coefficient group's, where a length of each coefficient group is the same as the number of the data blocks, and the coefficient group includes two elements.
23. Perform a bitwise-AND operation on the data blocks and coefficients corresponding to the data blocks to obtain code blocks.
24. Perform a bitwise-XOR operation between the code blocks to obtain code packets.
By using the coding method for random linear network in the preceding embodiment, the GF(2)-based network coding is applied in the coding process, coefficients are allocated to the original data blocks randomly, and the original data blocks are converted into code packets by performing the bitwise-AND operation and the bitwise-XOR operation. By using the coding method for random linear network in the preceding embodiment, the coding process is much simpler and the operation time is shorter than the coding process in the prior art.
As shown in
31. Simplify coefficient groups in code packets by performing an inverse operation of a bitwise-XOR operation.
32. Obtain original data.
In step 31, the inverse operation of the bitwise-XOR operation is still a bitwise-XOR operation.
By using the decoding method for random linear network in the preceding embodiment, the non-pivot elements in the code packets are set to 0 by performing the bitwise-XOR operation in the decoding process. In this way, the coefficient matrix is simplified to become a unit matrix, and the corresponding original data is obtained. By using the method, the complicated inverse operation of the coefficient matrix is prevented, and therefore the decoding process is much simpler and the operation time is shorter than the decoding process in the prior art.
The GF(2) coding simplifies the coding process. For a codec unit splited to n (n≧2) data blocks, n bits binary digit are generated randomly first, and a bitwise-AND operation is performed between the n bits binary digit and the data blocks corresponding to the bits, wherein data block and 0 make 0; the data block and 1 make the data block itself. In this way, code blocks are obtained. Then, a bitwise-XOR operation is performed on the code blocks to generate a code packet. To sum up, the coding process could be taken as: selecting several data blocks randomly, according to the result of the bitwise-AND operation, to perform the bitwise-XOR operation for obtaining a code packet. It can be seen that, the coding process according to the embodiment of the invention is much simpler than the coding process in the prior art.
In the coding method for random linear network in an embodiment of the present invention, the process of simplifying the coefficient groups in the code packets includes: using a Gaussian elimination method to simplify the coefficient matrix of at least two code packets so that the pivot element on each row of the coefficient matrix is 1 and the elements in other positions are 0.
If the current code packet is linearly independent of the previously received code packet, the current code packet includes one pivot element. By using the Gaussian elimination method, all the elements in the corresponding determined pivot element positions are set to 0. The redundant non-0 elements are eliminated to simplify the coefficient groups of the code packets and obtain the pivot element in the code packet coefficient. Then, the new pivot element may be used to further simplify other received code packets.
In the coding method for random linear network in the preceding embodiment, the Gaussian elimination method performs a bitwise-XOR operation on the rows in the coefficient matrix to simplify the coefficient groups in the code packets. The simplification process is described below briefly:
As shown in
S1. Add the coefficient group of a code packet “Y3” into a coefficient matrix.
S2 and S3. If the coefficient group of Y3 includes redundant elements (non-0 elements other than the pivot element), and the pivot elements corresponding to them are already confirmed in the coefficient group of Y1 and Y2, set the redundant elements in the coefficient group of Y3 to 0 according to result of a bitwise-XOR operation.
S4. Because the pivot element in the coefficient group of Y3 is already determined, use Y3 to further simplify other received code packets.
S5. Obtain the simplified coefficient matrix.
The decoding process is not complete until n linearly independent code packets are received, all pivot elements are 1s after simplification, and all redundant elements are eliminated. That is, the objective of the decoding process is to simplify the coefficient matrix of the code packet into a unit matrix based on a Gaussian elimination method.
By using the decoding method based on the Gaussian elimination method in the embodiment above, when the code packet arrives, the data in the code packet can be processed anytime, and the code packet can be processed while being downloaded, thus shortening the decoding time significantly.
Because each independent code packet has only one pivot element, the non-pivot elements may be cut down to 0 to decode the code packet. The number of non-0 coefficients decides the number of times of the XOR operation. In the coding process, the average number of non-0 coefficients in the coefficient groups of code packets may be adjusted to simplify the processing. If the average number of non-0 coefficients in the coefficient groups is very small, the data processing time in the network coding is short.
The process of determining the average number of non-0 coefficients in the coefficient groups is as follows: The transmitting end owns the original data requested by the receiving end; by checking the size of the original data, the transmitting end determines the number (n) of data blocks and the length (L) of the data block. The transmitting end transmits the number (n) of data blocks and the length (L) to the receiving end; and the receiving end returns the software and hardware configuration information of the receiving end; the transmitting end determines a K value according to the configuration information, wherein the K value indicates the average number of non-0 coefficients in all coefficient groups.
For a code packet with n coefficients, if the average number of non-0 coefficients in all coefficient groups is K, the probability of each coefficient being set to 1 is
and the probability of each coefficient being set to 0 is
If the K value is small, the data processing time in the network coding is short.
Each code packet received by the receiving end is simplified by using a Gaussian elimination method. The newly received code packet is linearly dependent on the previous code packet, all non-0 coefficients of the newly received code packet will be eliminated, and the code packet will be discarded by the receiving end.
If the receiving end has received plenty of useless code packets linearly dependent on the previous code packets, the speed of decoding on the receiving end side is affected seriously and the decoding time is longer.
A coefficient negotiation protocol is introduced into the coding method for random linear network in this embodiment:
The transmitting end transmits a code packet and the corresponding coefficient group, and the coefficient group of the code packet to be transmitted subsequently to the receiving end;
the receiving end checks whether the code packet to be transmitted subsequently is linearly dependent on the currently received code packet;
if the code packet to be transmitted subsequently is linearly dependent on the currently received code packet, the receiving end sends a rejection signal to the transmitting end, and sends a linearly independent coefficient group to the transmitting end at the same time; and
the transmitting end receives the coefficient group, generates a new code packet according to the coefficient group, and sends it to the receiving end.
Due to network delay and packet loss, it is possible that multiple packets are transmitted in the network simultaneously. To cope with such a circumstance, two or more coefficient groups of the code packets to be transmitted subsequently are embedded into the current code packet.
To make the present invention clearer, the following describes the technical solution under the present invention in more detail with reference to a preferred embodiment.
The transmitting end owns a complete copy of the original data requested by the receiving end. By checking the size of the original data, the transmitting end determines the number (n) of data blocks and the length (L) of the data block dynamically. The transmitting end uses a handshake protocol to transmit the number of data blocks and the length of the data block to the receiving end; and the receiving end returns information about potential computation capability of the receiving end as a response. In this way, the transmitting end can determine a proper K value, where the K value indicates the average number of non-0 coefficients in all coefficient groups.
If the K value is determined, the transmitting end starts transmission. The number of non-0 coefficients in the coefficient groups allocated to each code packet randomly is limited by the K value. If the number of data blocks is n, namely, the size of the coefficient matrix is n×n and each coefficient group includes n binary coefficients, the probability of each coefficient being 1 is
and the probability of each coefficient being 0 is
Code packets are generated according to the coefficients in the current coefficient group. First, a storage space is allocated to the data to be output, and the output data is initialized to a 0 vector. Then, the current coefficient group is scanned from left to right. If the coefficient in position i is not 0, a bitwise-XOR operation is performed for block i and the output data to generate a code packet. Subsequently, the transmitting end binds the two predictive coefficient groups (namely, comprising coefficient groups allocated to the code packet to be sent) to the code packet, and sends them to the receiving end.
After the code packet is sent, the first predictive coefficient group becomes the current coefficient group, and the second predictive coefficient group becomes the first predictive coefficient group. The transmitting end generates a new second predictive coefficient group automatically.
In the sending process, if the transmitting end receives a report related to coefficients of a code packet from the receiving end, that means at least one of the two predictive coefficient groups will make the transmitting end generate a code packet which is linearly dependent on the code packet already received by the receiving end. The transmitting end uses the coefficient group proposed by the receiving end to replace the predictive coefficient group which is linearly dependent on the coefficient group in the code packet already received by the receiving end.
The receiving end shakes hands with the transmitting end to know the number of data blocks and the length of the data block, and then initializes the relevant devices.
The decoding process is driven by the received code packet. When the code packet is received, three coefficient groups included in the code packet are processed first. An attempt is made to locate the pivot element in the coefficient group. First, each recovered pivot element is checked in the pivot element table. For the pivot element in position i, if the coefficient in the corresponding position of the newly received coefficient group is non-0, an XOR operation is performed for this newly received coefficient group and the coefficient group that owns the pivot element to eliminate the non-0 coefficient. After all non-0 coefficients corresponding to the determined pivot element position are eliminated in the newly received coefficient group, the coefficient group is simplified.
If the simplified coefficient group includes no non-0 element, the coefficient group is linearly dependent on the previously received data packet. If the coefficient group linearly dependent on the received code packet is the current coefficient group, the newly received data packet is discarded; if the coefficient group linearly dependent on the received code packet is the predictive coefficient group, a rejection message and a proposed coefficient group are sent to the transmitting end. The proposed coefficient group is linearly independent of the coefficients of the received code packet.
After all pivot elements are determined, the code packet is decoded and the original data is recovered. In the coefficient group of each stored code packet, non-0 elements exist only in the corresponding pivot element position. After the original data is recovered in the code packet, the receiving end reports decoding success to the transmitting end.
The foregoing embodiment of the coding method for random linear network describes a process of sending and receiving only one codec unit (n×L bytes). Generally, the size of one unit is moderate. Therefore, a content to be transmitted needs to be split into multiple continuous codec units logically. The receiving end generally downloads the codec units sequentially, and requests data from multiple transmitting ends simultaneously. After receiving the download request, the transmitting end encodes the data of the requested codec unit, and sends a code packet to the receiving end. The receiving end obtains the code packet of the requested codec unit from multiple transmitting ends. After enough code packets are obtained and the original data of the codec unit is obtained by decoding, the receiving end notifies the transmitting end that the receiving is complete, and may request the next codec unit. After receiving the completion report from the receiving end, the transmitting end starts sending the code packet of the next requested codec unit.
In the embodiment GF(2)-based network coding is applied in the coding process, the coding coefficients are either 0 or 1, and a bitwise-XOR operation is performed for the original data blocks to generate code packets, which simplifies the coding process. In the coding method for random linear network in the embodiment above, a Gaussian elimination method is applied in the decoding process so that the coefficient matrix of the code packet is ultimately simplified into a unit matrix and that the original data is recovered. This method prevents the complicated inverse operation for the matrix and shortens the decoding time. The coding method for random linear network in the embodiment above accomplishes adjustable coefficient allocation and adjusts the complexity of coding and decoding for different devices. In the coding method for random linear network in the embodiment above, a coefficient negotiation protocol is put forward. The receiving end judges whether to receive a code packet by detecting the coefficient group of the code packet to be received subsequently, thus reducing the probability of linear dependence of the code packets, and saving time and resources required for decoding the linearly dependent code packets. In the coding method for random linear network in the embodiment above, the computation device performs fast coding and decoding at a very high throughput, and minimizes the communication overhead caused by linear dependence of the code packets.
The decoding process is too complicated and the processing time is too long in the network decoding in the prior art. To solve such problems, the embodiments of the present invention disclose an apparatus for random linear network coding. The apparatus is described below in more detail with reference to the accompanying drawings.
As shown in
a data splitting module 51, configured to split original data into at least two data blocks sequentially;
a coefficient determining module 52, configured to determine at least two coefficient groups, where a length of each coefficient group is the same as the number of the data blocks, and the coefficient group includes two elements;
an AND operation module 53, configured to perform a bitwise-AND operation on the data blocks and coefficients corresponding to the data blocks to obtain code blocks; and
an XOR operation module 54, configured to perform a bitwise-XOR operation on the data blocks to obtain code packets.
The apparatus for random linear network coding in this embodiment further includes an average setting module 55, which is configured to set average number (K) of non-0 coefficients in all coefficient groups. In this case, the coefficient determining module 52 is configured to generate at least two coefficient groups randomly, where the probability of a specific coefficient being 1 in each coefficient group is
and the probability of a specific coefficient being 0 in each coefficient group is
The apparatus for random linear network coding in this embodiment further includes a sending module 56, which is configured to send code signals that include the code packet.
The sending module 56 is further configured to send the code signals that include the code packet and coefficient groups of at least one subsequent code packet.
The apparatus for random linear network coding in this embodiment further includes a coefficient receiving module 57, which is configured to receive a coefficient group sent by the receiving end.
As shown in
a simplifying module 61, configured to simplify data groups in code packets by performing an inverse operation of a bitwise-XOR operation; and
a data obtaining module 62, configured to obtain original data.
The apparatus for random linear network decoding in this embodiment further includes a receiving module 63, which is configured to receive code signals that include the code packet.
The receiving module 63 is further configured to receive the code signals that include the code packet and coefficient groups of at least one subsequent code packet.
The apparatus for random linear network decoding in this embodiment further includes:
a detecting module 64, configured to check whether the coefficient groups in the received code packet are linearly dependent on the coefficient groups of the previously received code packet; and
a discarding/rejecting module 65, configured to send an instruction for discarding the linearly dependent code packet.
The detecting module 64 is further configured to check whether the coefficient groups in the subsequent code packet are linearly dependent on the coefficient groups of the previously received code packet.
The discarding/rejecting module 65 is further configured to send an instruction for rejecting the code packet corresponding to the linearly dependent coefficient groups of the subsequent code.
The apparatus for random linear network decoding in this embodiment further includes a coefficient transmitting module 66, configured to transmit a coefficient group linearly independent of the received coefficient group to the transmitting end after rejecting the code packet.
In the apparatus for random linear network decoding in this embodiment, the simplifying module 61 includes:
a coefficient group adding unit, configured to add the coefficient groups of the code packet into an existing coefficient matrix;
an XOR simplifying unit, configured to eliminate non-0 elements other than the pivot element in the coefficient groups of the code packet by performing a bitwise-XOR operation; and
a matrix simplifying unit, configured to further simplify the existing coefficient matrix.
Through the apparatus for random linear network coding in the embodiment above, in the coding process, GF(2)-based network coding is applied, coefficients are allocated to the original data blocks randomly, the original data blocks are converted into code packets by performing a bitwise-AND operation and a bitwise-XOR operation; in the decoding process, the non-pivot elements in each code packet are cut down to 0 so that the coefficient matrix of the code packet is simplified into a unit matrix and that the corresponding original data is obtained. The decoding process in the present invention prevents the complicated inverse operation of the coefficient matrix, and therefore, the decoding process is much simpler and the operation time is shorter than the decoding process in the prior art.
The decoding process is too complicated and the processing time is too long in the network decoding in the prior art. To solve such problems, the embodiments of the present invention disclose a system for random linear network coding, which is described below in more detail with reference to accompanying drawings.
As shown in
a coding apparatus 71, configured to allocate coefficients to original data blocks randomly, and convert the original data blocks into code packets by performing a bitwise-AND operation and a bitwise-XOR operation; and
a decoding apparatus 72, configured to simplify and decode the code packets to obtain original data.
The coding apparatus 71 includes:
a data splitting module, configured to split original data into at least two data blocks sequentially;
a coefficient determining module, configured to determine at least two coefficient groups, where a length of each coefficient group is the same as the number of the data blocks, and the coefficient group includes two elements;
an AND operation module, configured to perform a bitwise-AND operation on the data blocks and coefficients corresponding to the data blocks to obtain code blocks; and
an XOR operation module, configured to perform a bitwise-XOR operation on the data blocks to obtain code packets.
The decoding apparatus 72 includes:
a simplifying module, configured to simplify data groups in code packets by performing an inverse operation of a bitwise-XOR operation; and
a data obtaining module, configured to obtain original data.
Through the system for random linear network coding in the embodiment above, in the coding process, GF(2)-based network coding is applied, coefficients are allocated to the original data blocks randomly, the original data blocks are converted into code packets by performing a bitwise-AND operation and a bitwise-XOR operation; in the decoding process, the non-pivot elements in each code packet are cut down to 0 so that the coefficient matrix of the code packet is simplified to become a unit matrix and that the corresponding original data is obtained. The decoding process in the present invention prevents the complicated inverse operation of the coefficient matrix, and therefore the decoding process is much simpler and the operation time is shorter than the decoding process in the prior art.
Number | Date | Country | Kind |
---|---|---|---|
200810126079.7 | Jul 2007 | CN | national |
This application is a continuation of International Application No. PCT/CN2009/071067, filed on Mar. 30, 2009, which claims priority to Chinese Patent Application No. 200810126079.7, filed on Jul. 3, 2008, both of which are hereby incorporated by reference in their entireties.
Number | Date | Country | |
---|---|---|---|
Parent | PCT/CN2009/071067 | Mar 2009 | US |
Child | 12981849 | US |