WO2011114191A1 - Intrinsic information conveyance in network coding - Google Patents
Intrinsic information conveyance in network coding Download PDFInfo
- Publication number
- WO2011114191A1 WO2011114191A1 PCT/IB2010/051208 IB2010051208W WO2011114191A1 WO 2011114191 A1 WO2011114191 A1 WO 2011114191A1 IB 2010051208 W IB2010051208 W IB 2010051208W WO 2011114191 A1 WO2011114191 A1 WO 2011114191A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- packet
- packets
- encoding
- status
- network node
- Prior art date
Links
- 239000013598 vector Substances 0.000 claims abstract description 76
- 238000000034 method Methods 0.000 claims abstract description 32
- 239000011159 matrix material Substances 0.000 claims description 24
- 238000004590 computer program Methods 0.000 claims description 23
- 230000015654 memory Effects 0.000 claims description 21
- 230000005540 biological transmission Effects 0.000 claims description 2
- 238000013459 approach Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 24
- 230000001419 dependent effect Effects 0.000 description 11
- 230000009897 systematic effect Effects 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000007812 deficiency Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 235000007119 Ananas comosus Nutrition 0.000 description 1
- 244000099147 Ananas comosus Species 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0076—Distributed coding, e.g. network coding, involving channel coding
Definitions
- This invention relates generally to wired and wireless networks and, more specifically, relates to network coding in wired and wireless networks.
- NC Network coding
- stores and forward or “routing”.
- NC allows data flows from one or several sources to one or several sinks to be combined within a network and provides the means to subsequently separate these flows and thus reconstruct the original data at the sinks.
- NC is generally introduced into a network by adding a new layer of coding between the source on the application layer and channel coding on the physical layer. This new layer of coding enables, a node in the network to encode, recode and decode data. Encoding and decoding are known from end-to-end codes, but recoding in the network is what separates NC from other types of coding.
- NC has certain benefits, NC can be improved.
- a method includes receiving a first packet from at least one network node, the first packet including an encoding vector, and, based on at least the encoding vector, determining a status of the first packet at , the network node.
- the method includes, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a number of second packets, and encoding the number of second packets to create a number of encoded second packets, wherein based on the decision the number of second packets includes or does not include the first packet.
- the method further includes transmitting the number of encoded second packets to the at least one network node.
- a computer program includes code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for causing transmission of the plurality of encoded second packets to the at least one network node; when the computer program is run on a processor.
- an apparatus includes at least one processor; and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to perform at least the following: receiving a first packet from at least one network node, the first packet comprising an encoding vector; based on at least the encoding vector, determining a status of the first packet at the network node; using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and transmitting the plurality of encoded second packets to the at least one network node.
- a computer program product comprising a computer-readable memory medium bearing computer program code embodied therein for use with a computer, the computer program code comprising: code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first .
- > packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for transmitting the plurality of encoded second packets to the at least one network node.
- an apparatus in a further exemplary embodiment, includes a means for receiving a first packet from at least one network node, the first packet comprising an encoding vector; means responsive to at least the encoding vector for determining a status of the first packet at the network node; means responsive to the determined status of the first packet, for making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; means for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and means for transmitting the plurality of encoded second packets to the at least one network node.
- FIG. 1 is a block diagram of a number of network nodes communicating in a mixed wired and wireless network
- FIG. 2 is a block diagram of a number of communications layers
- FIG. 3 is a graph that presents two probabilities that are functions of the size of the subset a,
- FIG. 4 is a graph that presents the density of all transmitted packets (packet 1 to 1463) for different NC approaches;
- FIG. 5 is a graph that presents the total complexity for all encoded/recoded packets for different NC approaches
- FIG. 6 is a graph that presents the total complexity for all packets decoded at one sink for different NC approaches
- FIG. 7 is a block diagram of actions performed for encoding data in accordance with an exemplary embodiment of the invention.
- FIG. 8 is a block diagram of actions performed for deciphering and saving information for received packets and associated network nodes in accordance with an exemplary embodiment of the invention.
- FIG. 9 is a block diagram of actions performed for decoding information in accordance with an exemplary embodiment of the invention.
- the mixed network 100 includes a wireless network 20 and a wired network 30.
- the wireless network 20 includes network nodes 10-1 and 10-2 in wireless communication.
- the wired network 30 includes network node 10-2 and 10-3 in wired communication.
- the network node 10-1 includes one or more processors 10- Al, one or more memories 10-Bl containing one or more programs 10-Cl, a radio frequency transceiver 10-Dl able to receive and transmit data, a wired network interface 10-El, and one or more antennas 10-Fl.
- the network node 10-2 includes one or more processors 10- A2, one or more memories 10-B2 containing one or more programs 10-C2, a radio frequency transceiver 10-D2 able to receive and transmit data, a wired network interface 10-E2, and one or more antennas 10-F2.
- the network node 10-3 includes one or more processors 10 7 A3, one or more memories 10-B3 containing one or more programs 10-C3, and a wired network interface 10-E3.
- NC is applicable to wired-only, wireless-only or wired and wireless networks.
- the network nodes 10-1 and 10-2 could be mobile devices, such as cellular devices, and the network node 10-2 could be a base station.
- each of the network nodes 10 could be a computer in a wired network.
- FIG. 1 is merely illustrative of possible devices suitable for use with NC.
- the one or more programs 10-1 can be logically separated into a set 200 of communications layers.
- an application layer 210 is "above" a coding layer 220, which in this example implements NC techniques to produce network coded data (not shown in FIG. 2).
- Additional layers include the transport layer 230, the Internet layer 240, and the link/physical layer 250.
- the link/physical layer 250 produces data suitable for communicating over one or more wired or wireless channel(s) 270. It is noted that this figure is merely illustrative, as there will typically be more layers than what is shown here.
- the coding layer 220 is where NC takes place, in this example.
- NC can, instead of residing in coding layer 220, be part of any layer between an application (e.g., interfacing with or part of application layer 210) and the physical layer 230, and may not comprise an entire layer.
- the coding layer 220 may also be implemented as part of an application (e.g., as part of application layer 210).
- FIGS. 1 and 2 are both applicable to NC using and not using the techniques (described below) of the invention.
- the program(s) 10-C are configured to use the techniques of the invention.
- the techniques of the invention are implemented in hardware, such as an integrated circuit.
- a packet contains a linear representation of a subset of the original data or the entire original data.
- the values of the original bits are scattered across several packets and each packet can be thought of as a many ⁇ l mapping of the original data.
- the sink can reconstruct the original data.
- NC Routing problems can be solved or simplified by using NC, as the requirement for decoding at the source is reduced from all n packets to any g packets.
- NC can be used to increase the throughput above what is achievable with routing.
- NC can reduce the problem of locally rare parts, as the data can be maximally spread in the network. This is because in a NC system all packets are equally rare, namely unique, and new unique packets can be generated at nodes in the network.
- Data to be transferred from the source to the sinks is divided into packets of length m.
- the number of original packets over which encoding is performed is typically referred to as the batch size or generation size and denoted g.
- the density, d, sometimes referred to as the degree, of a coded packet is defined by its encoding vector, g, and states how big a ratio of the original packet, the coded packet is a combination of:
- the O-notation complexity of the coding operations, per packet is the following:
- NC is often suggested to be implemented with random linear codes coded over a Galois Field of size q, where q is some relatively large number e.g. ⁇ 2 16 , 2 32 ⁇ .
- q is some relatively large number e.g. ⁇ 2 16 , 2 32 ⁇ .
- This solution provides very low expected overhead in terms of expected retransmissions, due to a lower probability of generating linear dependent packets, but it is non-trivial to construct an implementation with high coding throughput.
- a Galois field is also called a finite field and is a field that contains a finite number of elements.
- Systematic coding reduces the density of the first g packets created at the source to 1/g. However, all subsequently coded packets generated at the source and all coded packets generated at a relay still have density 1.
- all coded packets constructed at a node are linear combinations of all packets that node has received when coding the new packet.
- coded packets constructed at the source are a combination of all g packets, as the source possesses all g packets, and thus all g elements in g will be non-zero.
- the number of operations that are needed to decode this packet is determined by the ratio of non-zero elements in g, often referred to as the density (as described above).
- a packet can be decoded with fewer operations, which can increase the decoding throughput.
- the density is reduced randomly, e.g., by setting random elements to zero, the probability that the packet is linear dependent at the receiving node increases.
- Certain exemplary embodiments herein solve the above problems by intelligently reducing the density of coding vectors at sources and relays, based on intrinsic information embedded into the encoding vector of each coded packet.
- each scalar in an encoding vector will thus belong to one of these subsets and consequently indicate the status of that corresponding packet at the sender of the packet, such as: not received, received but not decoded, decoded, etc.
- the exemplary embodiments of the invention are considered implemented in software and thus are described as such.
- the software could be implemented as one or more programs 10-C in FIG. 1 residing in one or more memories 10-B.
- the one or more programs 10-C comprise program code, and the one or more memories 10-B and the program code are configured to, with the one or more processors 10- A, cause a network node 10 to perform actions described below.
- the one or more programs 10-C can be implemented as shown in FIG. 2, where the coding layer 220 performs the coding (include decoding) operations described below. It is noted that each network node 10 in FIG. 1 can be a source, relay, or sink.
- the exemplary embodiments may also be implemented as computer program product comprising a computer-readable memory medium (such as a compact disk, digital versatile disk, or one or more memories 10-B) bearing computer program code embodied therein for use with a computer.
- a computer-readable memory medium such as a compact disk, digital versatile disk, or one or more memories 10-B
- the invention may be implemented in hardware, such as an integrated circuit or programmable logic circuit (i.e., IC/PLC 70) or some combination thereof.
- the used Galois field of size q is divided into s sets a l5 a 2 , ... , a s , where
- q.
- This is practical as for any scalar b, where b ⁇ a, it holds that b+ ⁇ ⁇ a.
- the encoding node can determine for which packets all (or certain) nodes have a pivot element.
- a pivot element is the element of a finite set, which is selected first by an algorithm to perform certain calculations. Each node has between zero and g pivot elements for each generation. If a node has zero, the node has received no information. If the node has g, the node has received all the data.
- a node Whenever a node receives one packet, the node will get one additional pivot element for that generation. This is under the condition that the received packet is independent of all previously packets.
- these packets can be omitted from the linear combination in order to reduce the number of operations. That is, when the encoding node determines that a receiving node, to be sent an encoded packet corresponding to a received packet from the receiving node, has a pivot element corresponding to the received packet, the encoding node would not use the received packet in the generation of the linear combination of packets to be sent. This means the received packet would not be sent to the receiving node.
- This process can be generalized to all nodes to which the encoding node can communicate.
- a node e.g., a network node 10 of FIG. 1
- g is not directly specified but is calculated based on the generated h and the received encoding vectors G A , thus not all elements in the resulting g can be chosen arbitrarily.
- One can denote the set of g-i scalars in A for which the node have pivot elements in the corresponding rows, h'.
- all elements in h' will be equal to c and the remaining elements will be values in q.
- a node Based on the information collected from received coded packets (see decoding below), a node can determine for which packets all (or certain) nodes have a pivot element. When recoding a packet, these packets can be omitted from the linear combination.
- a node When receiving a coded packet, a node must inspect the encoding vector, decipher and save the information embedded in the encoding vector.
- the node may receive data from several sources, the node should save this information separately for each source. If the node previously received a coded packet from the same node, the receiving node should update the corresponding information, e.g., in the one or more memories 10-B.
- the corresponding information includes information about whether the sending node had a pivot element for the given packet. The corresponding information may also include into which sets s the coded packet falls.
- node n ⁇ when a node ⁇ receives a packet from node n 2 , the node 3 ⁇ 4 inspects the encoding vector. For each value in the received g that is equal to one, node n ! knows that node n 2 has a pivot element. If node n 1 then generates a reply in form of a coded packet, node n ⁇ can set all these values to zero in its encoding vector in order to reduce the number of operations, without decreasing the probability that the packet will be useful at node n 2 . However in order to do this, node r ⁇ must also have pivot elements for the same packets.
- node 3 ⁇ 4 can set all values in g to zero for the common set of h' in node ni and h' in node n 2 .
- this approach is not particularly practical, as it uses only a single scalar to indicate a pivot element. This is particularly obvious when encoding, because in this case the node have pivot elements for all packets and thus there is only one valid encoding vector namely all ones. However, it is possible to use this approach.
- the sending node n] has rank g-i, where i > 0, this probability is less straightforward and depends on the correlation between the received packets at the sending node rii and the receiving node n 2 .
- FIG. 3 presents two probabilities that are functions of the size of the subset a,
- pj na is the probability that, when a node generates an encoding or recoding vector, at least one of the elements in the encoding vector is in a. Thus, a new encoding or recoding vector must be generated at the node.
- pdependent is the probability that a received coded packet is linearly dependent at the sink. Thus a new packet must be generated and sent from a source.
- the plot shows as
- FIG. 3 shows the trade off that exists between pi na and Pdependent as a function of
- a source holds some data M mxg that is to be transmitted to N sinks r 1; r 2 , ... , ⁇ . All nodes are connected via one broadcast channel and erasures occur on this channel with some probability P. If g is relatively big, each sink will have received g packets when g*(l-P) " ' packets have been transmitted on the channel. These packets can be transmitted by the source or the sinks, however initially only the source may transmit as it is the only one that holds the data.
- each packet denoted j
- the first g packets are uncoded, and thus are a combination of a single packet.
- the suggested approach in the instant invention is also systematic and thus the first g packets are uncoded.
- the following coded packet is a linear combination of the packet that not all nodes have pivot elements for. Packet losses at the nodes are assumed to be uncorrelated, which also presents the worst case scenario Thus when packet ; ' is to be transmitted, all sinks have received (1-P)*( -1) packets. Therefore, the probability that a sink has a pivot element for a packet is (l-P)*(/-l)/g.
- FIG. 4 presents the density of all transmitted packets (packet 1 to 1463) for different NC approaches.
- PEP packet error probability
- the density is constant and one.
- the density from the gth packet depends on the number of sinks, N, and when N increases, the density increases.
- FIG. 4 shows the density of all coded packets, for different approaches.
- the density of all packets is reduced or the same as the systematic approach and the new approach performs better than the traditional approach.
- the new approach performs best, and in the worst case where N is infinite, the performance is identically to that of the systematic approach, although this is not depicted on the plot.
- FIGS. 5 and 6 The number of operations performed when different approaches are used, and for different P is plotted in FIGS. 5 and 6.
- FIG. 5 shows operations for encoding
- FIG. 6 shows operations for decoding.
- FIG. 5 presents the total complexity for all encoded/recoded packets for different NC approaches.
- N the number of receivers
- the plotted values are the sum of the complexity expressions for all encoded/recoded packets that are generated.
- the new approach requires the least amount of operations and performs best when the number of receiving nodes is low.
- FIG. 6 presents the total complexity for all packets decoded at one sink for different NC approaches.
- the performance does not depend on the number of receivers, N, but the new approach does and is plotted for 1 , 2, 4 or 8 receivers.
- the plotted values are the sum of the complexity expressions for all packets decoded at a sink.
- P increases, the number of performed operations increases for all approaches.
- the new approach requires the fewest number of operations and performs best when the number of receiving nodes is low. Both show a significant reduction in the number of performed operations with the suggested approach. This can translate into higher coding throughput, lower central processing unit (CPU) utilization and reduced power usage.
- CPU central processing unit
- An exemplary proposed technique is focused on meshed networking with device-to-device communication (exchanging any kind of information), as the technique reduces the amount of signaling overhead and assures efficient coding.
- the technique can be used for cooperative exchanges among devices of downloaded information.
- the technique is useful in scenarios where the complexity of standard coding could potentially limit the throughput, e.g., if the transmitting nodes have low computational capabilities or if the data rate is high.
- FIG. 7 is a block diagram 700 of actions performed for encoding data in accordance with an exemplary embodiment of the invention.
- the block diagram (and the block diagrams shown in FIGS. 8 and 9) may be a method performed by an apparatus such as network node 10 (see FIG. 1), e.g., under control of one or more processors 10-A.
- the block diagram 700 (and the block diagrams shown in FIGS. 8 and 9) may be a sequence of actions carried out by hardware, such as an integrated circuit, programmable logic device, or other devices, or combinations of these.
- FIG. 8 and 9 may also be a computer program product comprising a computer-readable memory medium (e.g., one or more memories 10-C in FIG. 1, a compact disk, a digital versatile disk/digital video disk, or the like) bearing computer program code embodied therein for use with a computer (e.g., such as network node 10 of FIG. 1).
- the computer program code has code causing the computer to perform the actions shown in FIG. 7 (and the block diagrams shown in FIGS. 8 and 9).
- packets are usually not retransmitted by a single network node.
- a source node might transmit X packets. Instead of retransmitting any of those X packets (e.g., if another node does not receive one or more of the X packets), a network node (such as a recoding node) that receives those X packets and would like to retransmit that data in the those X packet will encode (or recode) those X packets and retransmit them in the encoded/recoded state. It is also noted that the terms "encoded” and “coded” are used interchangeably herein.
- encoding and recoding are both described, as recoding is a version of encoding.
- network nodes such as a network node 10 of FIG. 1. If the network node is a source and this is the first time data has been encoded and transmitted from the source to other network nodes, uncoded data 730 will be used in block 731 and the first g packets are transmitted (to other network nodes 10) (block 731). If the network node is only a source (and not a sink or a recoding node), the source only performs block 730 and 731. Multiple sources and recoding nodes will perform the additional blocks in block diagram 700.
- header information is added to the packet (such as packets 705 or 765) for the receiver to know if the data in the packet is uncoded or coded and how the data is coded. In the case of the uncoded packet, this information can be compressed a lot. This header information is outside the scope of this disclosure and is known to those skilled in the art.
- the initially received packets (in this example) will be packets of uncoded data 730.
- Block 715 will not be performed until coded packets are received, so a secondary source or recoding node at this point does not perform block 715.
- the network node forms linear combinations of encoded packets using, in this case, the uncoded received packets (block 720).
- any scalar from the finite field may be used for encoding (block 745). Block 740 is not performed at this time.
- Block 720 produces encoded packets 765, which include coded data 766 and an encoding vector 767 (as described above). These encoded packets 765 are transmitted in block 725. At this time, blocks 750 and 755 are not performed.
- the network node begins to receive encoded packets 705 from other nodes (block 710).
- Each received packet 705 includes coded data 706 and an encoding vector 707. It is noted that the received packets 705 are encoded, but will be referred to as "received packets" to distinguish from encoded packets 765 produced in block 720.
- the received packets are examined (more specifically, the encoding vector 707 is examined) and the received packets are deciphered and information is saved corresponding to the received packets and the nodes. This is explained in more detail in reference to FIG. 8.
- block 720 After a certain number of encoded packets 705 are received, block 720 would be performed.
- block 720 a linear combination of encoded packets is formed, where the secondary source/recoding network node performs block 720 by performing block 735 using encoded packets 705, and by determining if the information determined in block 715 indicates that other network nodes have the coded packets (or in an exemplary embodiment, the network nodes have pivot elements corresponding to the coded packets).
- block 735 is subject to determining into which set of the sets of the finite field the scalars should fall, as described above in “Field subsets", “Encoding”, “First approach”, and “Second approach”.
- the secondary source/recoding network node begins recoding and performs block 750 instead of block 745.
- block 750 as described above in "Recoding", only the g-i scalars for which the recoding node has pivot elements in the decoding matrix can be chosen arbitrarily.
- the coded packets for which the information determined in block 715 indicates that other network nodes have the coded packets (or in an exemplary embodiment, the network nodes have pivot elements corresponding to the coded packets) are not included in the linear combination (block 740). What this means (block 755) is that these coded packets are not transmitted in block 725. In block 725, the remaining encoded packets are transmitted.
- Block diagram 800 is shown of actions performed for deciphering and saving information for received packets and associated network nodes in accordance with an exemplary embodiment of the invention.
- Block diagram 800 is one exemplary technique for performing block 715 of FIG. 7 (and also block 915 of FIG. 9).
- block 805 it is determined for each encoding vector into which set of the sets s of the finite field (see “Field subsets" above) the encoding vector falls.
- status of the received packet is determined based on the sets. Such status can be that the sending node has pivot nodes for the received packets (block 820) or can be other status (block 830). Such other status could be, as examples, not received 835, received but not decoded 840, or decoded 845.
- the status for received packets is updated for the packets and for the sending node.
- a first table 850 may be kept, where the table 850 includes entries 855-1 through 855 -x corresponding to Node 1, and entries 860-1 through 860-y corresponding to Node 2. Entries for additional nodes are not shown. Each entry includes, in this example, an indication 865 of the node, and indication of the packet 870, and an indication 875 of the status.
- the table 850 is merely one example and is not to be considered limiting. For instance, smaller sets of data could be used, such as that shown in table 880, which contains entries 881-1 and 881-2 (other entries are not shown). Each entry has an indication 885 of a packet and an indication 890 of whether all other nodes have a pivot element corresponding to the packet or not.
- Block diagram 900 is shown of actions performed for decoding information in accordance with an exemplary embodiment of the invention.
- Block diagram 900 would be performed by a sink. It is noted that some sinks may also be sources or recoding nodes, and the functions performed by those nodes may be performed as described above.
- Block diagram 900 begins in block 910, when packets are received, e.g., from source or recoding nodes.
- the received packets are deciphered and information for the received packets and associated nodes is saved (e.g., as described above in block diagram 800 of FIG. 8).
- matrices of coded data e.g., 766
- encoding vectors e.g., 767
- the matrices are used to decode the coded data. See the "Decoding" sections above.
- the decoded packets are output.
- the block diagram 900 ends in block 950.
- Embodiments of the present invention may be implemented in software, hardware, application logic or a combination of software, hardware and application logic.
- the software, application logic and or hardware may reside on any type of wired or wireless network node, such as nodes in a cellular network or nodes in a wired peer-to-peer or peers-to-servers network.
- the application logic, software or an instruction set is maintained on any one of various conventional computer-readable media.
- a "computer- readable memory medium" may be any memory media or means that can contain, store, communicate, propagate or transport the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer, with one example of a computer described and depicted in FIG. 1.
- the embodiments of this invention may be implemented by ; computer software executable by one or more processors 10-A or by hardware.
- the one or more memories 10-B may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory.
- the one or more processors 10-A may be of any type suitable to the local technical environment, and may include one or more of general purpose computers, special purpose computers, microprocessors, digital signal processors (DSPs) and processors based on a multi core processor architecture, as non limiting examples.
- Embodiments of the inventions may be practiced in various components such as integrated circuit modules (e.g., IC 70).
- integrated circuit modules e.g., IC 70.
- the design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
- Programs such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre stored design modules.
- the resultant design in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a standardized electronic format (e.g., Opus, GDSII, or
- One exemplary technical effect of the invention is that it enables a reduced number of operations relative to other NC techniques.
- Another exemplary technical effect of the invention is that it enables reduced bandwidth, as certain packets will not be communicated when these packets are determined to exist at certain nodes in the network.
- a computer program product comprising a computer-readable memory medium bearing computer program code embodied therein for use with a computer, the computer program code comprising: code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for transmitting the plurality of encoded second packets to the at least one network node.
- an apparatus may include a means for receiving a first packet from at least one network node, the first packet comprising an encoding vector; means responsive to at least the encoding vector for determining a status of the first packet at the network node; means responsive to the determined status of the first packet, for making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; means for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and means for transmitting the plurality of encoded second packets to the at least one network node.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
A method includes receiving a first packet from at least one network node, the first packet including an encoding vector, and, based on at least the encoding vector, determining a status of the first packet at the network node. The method includes, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a number of second packets, and encoding the number of second packets to create a number of encoded second packets, wherein based on the decision the number of second packets includes or does not include the first packet. The method further includes transmitting the number of encoded second packets to the at least one network node. Apparatus and program products are also disclosed.
Description
INTRINSIC INFORMATION CONVEYANCE IN NETWORK CODING
TECHNICAL FIELD
[0001] This invention relates generally to wired and wireless networks and, more specifically, relates to network coding in wired and wireless networks.
BACKGROUND
[0002] Network coding (NC) breaks with the current paradigm in switching computer networks often referred to as "store and forward" or "routing". In a nutshell, NC allows data flows from one or several sources to one or several sinks to be combined within a network and provides the means to subsequently separate these flows and thus reconstruct the original data at the sinks. NC is generally introduced into a network by adding a new layer of coding between the source on the application layer and channel coding on the physical layer. This new layer of coding enables, a node in the network to encode, recode and decode data. Encoding and decoding are known from end-to-end codes, but recoding in the network is what separates NC from other types of coding.
[0003] While NC has certain benefits, NC can be improved.
BRIEF SUMMARY
[0004] In one exemplary embodiment, a method includes receiving a first packet from at least one network node, the first packet including an encoding vector, and, based on at least the encoding vector, determining a status of the first packet at , the network node. The method includes, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a number of second packets, and encoding the number of second packets to create a number of encoded second packets, wherein based on the decision the number of second packets includes or does not include the first packet. The method further includes transmitting the number of encoded second packets to the at least one network node.
[0005] In another exemplary embodiment, a computer program is disclosed that includes code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the
encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for causing transmission of the plurality of encoded second packets to the at least one network node; when the computer program is run on a processor.
[0006] In a further exemplary embodiment, an apparatus is disclosed that includes at least one processor; and at least one memory including computer program code, the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to perform at least the following: receiving a first packet from at least one network node, the first packet comprising an encoding vector; based on at least the encoding vector, determining a status of the first packet at the network node; using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and transmitting the plurality of encoded second packets to the at least one network node.
[0007] In an additional exemplary embodiment, a computer program product is disclosed comprising a computer-readable memory medium bearing computer program code embodied therein for use with a computer, the computer program code comprising: code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first . ; > packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for transmitting the plurality of encoded second packets to the at least one network node.
[0008] In a further exemplary embodiment, an apparatus is disclosed that includes a means for receiving a first packet from at least one network node, the first packet comprising an encoding vector; means responsive to at least the encoding vector for determining a status of the first packet at the network node; means responsive to the determined status of the first packet, for making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; means for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and means for transmitting the plurality of encoded second packets to the at least one network node.
BRIEF DESCRIPTION OF THE DRAWINGS
[0009] The foregoing and other aspects of embodiments of this invention are made more evident in the following Detailed Description of Exemplary
Embodiments, when read in conjunction with the attached Drawing Figures, wherein:
[0010] FIG. 1 is a block diagram of a number of network nodes communicating in a mixed wired and wireless network;
[0011] FIG. 2 is a block diagram of a number of communications layers;
[0012] FIG. 3 is a graph that presents two probabilities that are functions of the size of the subset a, |a|, where a is in [0, 232];
[0013] FIG. 4 is a graph that presents the density of all transmitted packets (packet 1 to 1463) for different NC approaches;
[0014] FIG. 5 is a graph that presents the total complexity for all encoded/recoded packets for different NC approaches;
[0015] FIG. 6 is a graph that presents the total complexity for all packets decoded at one sink for different NC approaches;
[0016] FIG. 7 is a block diagram of actions performed for encoding data in accordance with an exemplary embodiment of the invention;
[0017] FIG. 8 is a block diagram of actions performed for deciphering and saving information for received packets and associated network nodes in accordance with an exemplary embodiment of the invention; and
[0018] FIG. 9 is a block diagram of actions performed for decoding information in accordance with an exemplary embodiment of the invention.
DETAILED DESCRIPTION
[0019] Before proceeding with a description of the exemplary
embodiments, an overview of network coding (NC) is helpful. Referring now to FIG. 1, a block diagram is shown of a number of network nodes 10 communicating in a mixed network 100. The mixed network 100 includes a wireless network 20 and a wired network 30. The wireless network 20 includes network nodes 10-1 and 10-2 in wireless communication. The wired network 30 includes network node 10-2 and 10-3 in wired communication. The network node 10-1 includes one or more processors 10- Al, one or more memories 10-Bl containing one or more programs 10-Cl, a radio frequency transceiver 10-Dl able to receive and transmit data, a wired network interface 10-El, and one or more antennas 10-Fl. Similarly, the network node 10-2 includes one or more processors 10- A2, one or more memories 10-B2 containing one or more programs 10-C2, a radio frequency transceiver 10-D2 able to receive and transmit data, a wired network interface 10-E2, and one or more antennas 10-F2. In the example of FIG. 1, the network node 10-3 includes one or more processors 107A3, one or more memories 10-B3 containing one or more programs 10-C3, and a wired network interface 10-E3. NC is applicable to wired-only, wireless-only or wired and wireless networks. For instance, the network nodes 10-1 and 10-2 could be mobile devices, such as cellular devices, and the network node 10-2 could be a base station. As another example, each of the network nodes 10 could be a computer in a wired network. FIG. 1 is merely illustrative of possible devices suitable for use with NC.
[0020] Turning to FIG. 2, as described above, the one or more programs 10-1 can be logically separated into a set 200 of communications layers. For instance, an application layer 210 is "above" a coding layer 220, which in this example implements NC techniques to produce network coded data (not shown in FIG. 2). Additional layers include the transport layer 230, the Internet layer 240, and the link/physical layer 250. The link/physical layer 250 produces data suitable for communicating over one or more wired or wireless channel(s) 270. It is noted that this figure is merely illustrative, as there will typically be more layers than what is shown here. The coding layer 220 is where NC takes place, in this example. It is also noted that the NC can, instead of residing in coding layer 220, be part of any layer between an application (e.g., interfacing with or part of application layer 210) and the
physical layer 230, and may not comprise an entire layer. The coding layer 220 may also be implemented as part of an application (e.g., as part of application layer 210).
[0021] It is noted that FIGS. 1 and 2 are both applicable to NC using and not using the techniques (described below) of the invention. In one exemplary embodiment, the program(s) 10-C are configured to use the techniques of the invention. In another exemplary embodiment, the techniques of the invention are implemented in hardware, such as an integrated circuit.
[0022] Overview of NC
[0023] To proceed with an overview of NC, in routing networks, data to be transferred from a source to a sink via the network is divided into n discrete blocks. Hence, the source creates n disjoint packets, where each contains a block of the original data and holds no information about the other n-1 packets. Packets are therefore numbered at the transmitter (i.e., part of the source) and must be organized accordingly at the receiver to ensure coherent reconstruction. For the sink to reconstruct the data, the sink must hold all n packets.
[0024] In a NC-system, a packet contains a linear representation of a subset of the original data or the entire original data. The values of the original bits are scattered across several packets and each packet can be thought of as a many→l mapping of the original data. This representation of data is related to FEC which is frequently used in digital communication systems. Therefore, the source can construct g+r linear combinations of the original data, where r G Z+ » g=n, of which a subset of approximately size g describes the original data completely. Hence, if a sink possesses an g linear independent packets of the g+r created packets from the source, the sink can reconstruct the original data.
[0025] Routing problems can be solved or simplified by using NC, as the requirement for decoding at the source is reduced from all n packets to any g packets. In some networks, NC can be used to increase the throughput above what is achievable with routing.
[0026] Security and NC is closely related, as all coded packets in a NC system are encrypted by default. If exactly g packets are transmitted from the source to the sink, then an intruder must intercept all g packets to be able to decode any information.
[0027] In a point-to-point (P2P) application, NC can reduce the problem of locally rare parts, as the data can be maximally spread in the network. This is because in a NC system all packets are equally rare, namely unique, and new unique packets can be generated at nodes in the network.
[0028] Coding Operations in NC
[0029] Data to be transferred from the source to the sinks is divided into packets of length m. The number of original packets over which encoding is performed is typically referred to as the batch size or generation size and denoted g. Thus the g original data packets of length m are arranged in the matrix M= m\ 2 ...wg ], where m is a column vector.
[0030] Encoding
[0031] To encode a packet x at the source, M is multiplied with a randomly generated vector g of length g, x = M χ g. In this way, one can construct X = [x\ x¾ · · · ½+r ] that consists of g+r coded data packets and G = [g\ g2 . . . gs+r ] that contains g+r randomly generated encoding vectors, where r is the number of redundant packets.
[0032] Note that if an encoding vector consists of all zeros except a single scalar that is one, the coded packet is equal to an original packet and it is said that the coded packet is trivially encoded.
[0033] Recoding
[0034] Any relay or sink node that has received g-i>l linear independent packets can recode and thus create new coded packets. All received coded packets are placed in the matrix XA = [ xA \ jtA 2 . . . xA g.i\ and all encoding vectors are placed in the matrix G = \gA \ gA2 . . . g i , and this latter matrix is denoted as the decoding matrix. The number of received linear independent packets g-i is equal to the rank of G . G and A is multiplied with a randomly generated vector h of length g-i, g~ = GA x h, x~
g~2■ · · g~g that contains g-i randomly generated recoding vectors and X~ = [x~\ x~2 . . . jcg.i] that consists of g-i recoded data packets.
[0035] Note that h is only used locally and that there is no need to distinguish between coded and recoded packets when further recoding or decoding is done.
[0036] Decoding
[0037] In order for a sink to successfully decode the original data packets, it must receive g linear independent coded packets and encoding vectors, thus the rank of the decoding matrix is g. All received coded packets are placed in the matrix XA = [xA] X2 . . . xAg] and all encoding vectors are placed in the matrix GA =[gA 1 gA 2 · · · gA g]. The original data M can then be decoded as M- ΧΛ x GA'1.
[0038] Density
[0039] The density, d, sometimes referred to as the degree, of a coded packet is defined by its encoding vector, g, and states how big a ratio of the original packet, the coded packet is a combination of:
¾) = (∑i= {gi > 0} ) / g (1)
[0040] Thus if q (the field size) is reasonably high, most scalars in a random generated encoding vector will be non-zero and d ~ 1. For a small field, a higher ratio of scalars in a random generated encoding vector will be zero, e.g. for the binary field, d = 1/2.
[0041] Coding Complexity
[0042] The O-notation complexity of the coding operations, per packet, is the following:
Encoding: 0(g (r+m))~ 0(g m) (2)
Recoding: 0((g-z) (r+m +g-i )) ~ 0((g-/) m + (g-i)2); (3)
Decoding: 0(g m + g ). (4)
[0043] See Janus Heide, Morten V. Pedersen, Frank H.P. Fitzek, and Torben Larsen, "Cautious view on network coding - from theory to practice", Journal of Communications and Networks (JCN), 10(4):403-411, December 2008; and C. Fragouli, J. Boudec, and J. Widmer, "Network coding: an instant primer", SIGCQMM Comput. Commun. Rev., vol. 36, no. 1, pp. 63-68, 2006. The cost of generating a random number r is system specific and here set to zero.
[0044] Exemplary Problems with Conventional NC
[0045] Today NC is often suggested to be implemented with random linear codes coded over a Galois Field of size q, where q is some relatively large number e.g.
{216, 232}. See T. Ho, R. Koetter, M. Medard, D. Karger, and M. Ros, "The benefits of coding over routing in a randomized setting", in Proc. IEEE ISIT, 2003. This solution provides very low expected overhead in terms of expected retransmissions, due to a lower probability of generating linear dependent packets, but it is non-trivial to construct an implementation with high coding throughput. See Janus Heide et al., cited above. It is noted that a Galois field is also called a finite field and is a field that contains a finite number of elements.
[0046] Systematic coding reduces the density of the first g packets created at the source to 1/g. However, all subsequently coded packets generated at the source and all coded packets generated at a relay still have density 1.
[0047] With regard to NC, all coded packets constructed at a node are linear combinations of all packets that node has received when coding the new packet. Thus, as a node receives more linear combinations, the node will become a better source, but the computations needed to create a coded packet will also increase. That is, coded packets constructed at the source are a combination of all g packets, as the source possesses all g packets, and thus all g elements in g will be non-zero. When a coded packet is received and decoded at a node, the number of operations that are needed to decode this packet is determined by the ratio of non-zero elements in g, often referred to as the density (as described above).
[0048] Thus, if the density is reduced, a packet can be decoded with fewer operations, which can increase the decoding throughput. However, if the density is reduced randomly, e.g., by setting random elements to zero, the probability that the packet is linear dependent at the receiving node increases.
[0049] Exemplary Embodiments
[0050] Certain exemplary embodiments herein solve the above problems by intelligently reducing the density of coding vectors at sources and relays, based on intrinsic information embedded into the encoding vector of each coded packet.
[0051] This can be done by splitting the used field over which packets are coded into two or more subsets. Moreover, each scalar in an encoding vector will thus belong to one of these subsets and consequently indicate the status of that corresponding packet at the sender of the packet, such as: not received, received but not decoded, decoded, etc. This differs from current NC systems, where the scalars in
the encoding hold no information about the status of packets at the sender of the packet.
[0052] Below, the exemplary embodiments of the invention are considered implemented in software and thus are described as such. For example, the software could be implemented as one or more programs 10-C in FIG. 1 residing in one or more memories 10-B. The one or more programs 10-C comprise program code, and the one or more memories 10-B and the program code are configured to, with the one or more processors 10- A, cause a network node 10 to perform actions described below. The one or more programs 10-C can be implemented as shown in FIG. 2, where the coding layer 220 performs the coding (include decoding) operations described below. It is noted that each network node 10 in FIG. 1 can be a source, relay, or sink. The exemplary embodiments may also be implemented as computer program product comprising a computer-readable memory medium (such as a compact disk, digital versatile disk, or one or more memories 10-B) bearing computer program code embodied therein for use with a computer. However, the invention may be implemented in hardware, such as an integrated circuit or programmable logic circuit (i.e., IC/PLC 70) or some combination thereof.
[0053] It is assumed that coding operations are performed over a Galois Field, specifically q=232 is used in the following evaluation. Note that smaller values of q can also be used, and that q={2&, 216, 232} are good candidates as the
corresponding data containers are directly supported in most computer systems.
[0054] Field subsets
[0055] The used Galois field of size q is divided into s sets al5 a2, ... , as, where |a2| + |a2| + ... + |as| = q. Here, n=2 is considered and put the elements {0, 1, 2, a} values into set a and the remaining elements {a+1, a+2, q} into q '. This is practical as for any scalar b, where b < a, it holds that b+\ <= a. In general for any scalar b, where a; < b < 04+1, it holds that a, <= b+l <= l+\, which will be utilized later (see "Second approach, below).
[0056] Encoding
[0057] When encoding, all scalars can be chosen arbitrarily because the source (e.g., a network node 10 in FIG. 1) holds all original packets and thus all possible g are valid encoding vectors.
[0058] Based on information collected from received coded packets (see decoding), the encoding node can determine for which packets all (or certain) nodes have a pivot element. A pivot element is the element of a finite set, which is selected first by an algorithm to perform certain calculations. Each node has between zero and g pivot elements for each generation. If a node has zero, the node has received no information. If the node has g, the node has received all the data. Whenever a node receives one packet, the node will get one additional pivot element for that generation. This is under the condition that the received packet is independent of all previously packets. When constructing a coded packet, these packets can be omitted from the linear combination in order to reduce the number of operations. That is, when the encoding node determines that a receiving node, to be sent an encoded packet corresponding to a received packet from the receiving node, has a pivot element corresponding to the received packet, the encoding node would not use the received packet in the generation of the linear combination of packets to be sent. This means the received packet would not be sent to the receiving node. This process can be generalized to all nodes to which the encoding node can communicate.
[0059] Recoding
[0060] When a node (e.g., a network node 10 of FIG. 1) recodes, g is not directly specified but is calculated based on the generated h and the received encoding vectors GA, thus not all elements in the resulting g can be chosen arbitrarily. Only the g-i scalars, for which the node has pivot elements in the decoding matrix, can be chosen arbitrarily. This can be done by choosing the scalars in h within a specific range for each ¾ that corresponds to a row where the node has a pivot element. One can denote the set of g-i scalars in A for which the node have pivot elements in the corresponding rows, h'. Thus, if all scalars in h are set to some value c, all elements in h' will be equal to c and the remaining elements will be values in q.
[0061] The reason is that for the columns corresponding to h' only one row will contain a one and all other rows a zero. Thus, when all rows are combined to form a coded packet, the scalars that correspond to packets in h' element can be chosen arbitrarily by multiplying the corresponding row with a scalar.
[0062] Based on the information collected from received coded packets (see decoding below), a node can determine for which packets all (or certain) nodes
have a pivot element. When recoding a packet, these packets can be omitted from the linear combination.
[0063] Decoding
[0064] When receiving a coded packet, a node must inspect the encoding vector, decipher and save the information embedded in the encoding vector.
Therefore, all nodes must use the same rules to create and decipher encoding vectors, this can be predefined or appended to the encoding vector.
[0065] As the node may receive data from several sources, the node should save this information separately for each source. If the node previously received a coded packet from the same node, the receiving node should update the corresponding information, e.g., in the one or more memories 10-B. The corresponding information includes information about whether the sending node had a pivot element for the given packet. The corresponding information may also include into which sets s the coded packet falls.
[0066] First approach
[0067] One very simple approach is to let a specific value, e.g., the value one, in the encoding vector denote that the coding node have a pivot element for the corresponding packet. Thus when a node encodes, g will be a vector of ones of length g, because the node holds all original data.
[0068] When recoding, the recoding vector h is constructed by setting each of the values in h' to one and drawing the rest of the values randomly from [0,q]/{l}. Then the new encoding vector g~ is calculated by g~= GA χ h. All resulting values in g~ that corresponds to h 'will then be one. If any values in g~ not correspondmg to K are equal to one, the chosen h is not usable, therefore it is discarded and a new h is generated. The data is then encoded using the generated h, Λ:~ =ΧΛ χ h.
[0069] Thus, when a node \ receives a packet from node n2, the node ¾ inspects the encoding vector. For each value in the received g that is equal to one, node n! knows that node n2 has a pivot element. If node n1 then generates a reply in form of a coded packet, node n\ can set all these values to zero in its encoding vector in order to reduce the number of operations, without decreasing the probability that the packet will be useful at node n2. However in order to do this, node r\\ must also have pivot elements for the same packets. Thus node ¾ can set all values in g to zero for the common set of h' in node ni and h' in node n2.
[0070] As a side node, this approach is not particularly practical, as it uses only a single scalar to indicate a pivot element. This is particularly obvious when encoding, because in this case the node have pivot elements for all packets and thus there is only one valid encoding vector namely all ones. However, it is possible to use this approach.
[0071] Second approach
[0072] To improve the first approach, one can increase the size of the subset |a| that indicates that the sender has a pivot element. One can choose a = [0,a], thus |a| = a +1 , and for any scalar b, where b < a, it holds that b+1 <= a < |a|. To identify a good value of a, it is necessary to determine the probabilities that influence the performance of a system where this approach is implemented. Namely, the probability that the resulting values ing are in a for packets that are not in A', this is denoted pi„a, and the probability that an encoding vector g is linear dependent at the receiving node, this is denoted pdependent- These probabilities should be as small as possible, as these represent outcomes that will introduce (that is, increase) costs.
[0073] When some value in the resulting g is in a for some packet not in A', a new h must be generated. Thus, the node will perform additional operations in order to encode a packet, which is what this invention seeks to reduce.
[0074] The probability that a random resulting scalar in g is in a is the following:
|a|/q
The probability that all g-i scalars are not in a is thus:
And hence the probability that any of the g-i scalars are in a is the following:
Pina =l- (l-| |/q)g-] (5)
[0075] When a node receives a coded packet that is linearly dependent with the packets the node already has, the packet is not useful at that node and thus the
linearly dependent coded packet introduces wasted resources. Additionally, it is necessary to perform operations on the packet to determine that it is linearly
dependent, and these operations will also be wasted.
[0076] The probability that a packet is linearly dependent at the receiving nodes is a function of the field size and the rank deficiency at that node. See Janus Heide, Morten V. Pedersen, Frank H.P. Fitzek, and Torben Larsen, "Network coding for mobile devices - systematic binary random rateless codes", in The IEEE
International Conference on Communications (ICC), Dresden, Germany, 14-18 June 2009. The field over which coding operations is performed is effectively reduced for the packet for which the coding nodes have pivot elements. Thus in the case where a node i is the sending node and has rank g, and the receiving node n2 has rank g-i, the probability that a received packet at n2 is linear dependent is.
Pdependent— 1/|« (6)
[0077] If the sending node n] has rank g-i, where i > 0, this probability is less straightforward and depends on the correlation between the received packets at the sending node rii and the receiving node n2.
[0078] FIG. 3 presents two probabilities that are functions of the size of the subset a, |a|, where a is in [0, 232]. In this example, q=232 and g =1024. The probabilities also depend on the rank deficiency at the sink, i, here the worst case values are used, for ina i=g, and for dependent *— 1· As described above, pjna is the probability that, when a node generates an encoding or recoding vector, at least one of the elements in the encoding vector is in a. Thus, a new encoding or recoding vector must be generated at the node. As also described above, pdependent is the probability that a received coded packet is linearly dependent at the sink. Thus a new packet must be generated and sent from a source. The plot shows as |a| grows, pina grows and Pdependent decreases. For |a| equal to one, pjna equals one, for |a| > 10 pdependent equals one.
[0079] Consequently, FIG. 3 shows the trade off that exists between pina and Pdependent as a function of |a|. Both the occurrences that these probabilities correspond to are associated with some cost. The cost for pdependent is largest, but the ratio of the cost between the two occurrences is system specific and thus there exist no
general best choice of |a|. In the following, it is assumed that |a| is chosen so that
Pdependent is so close to zero that dependem can be ignored.
[0080] Packet Density
[0081] A source holds some data Mmxg that is to be transmitted to N sinks r1;r2, ... ,ΓΝ. All nodes are connected via one broadcast channel and erasures occur on this channel with some probability P. If g is relatively big, each sink will have received g packets when g*(l-P)"' packets have been transmitted on the channel. These packets can be transmitted by the source or the sinks, however initially only the source may transmit as it is the only one that holds the data.
[0082] With traditional network coding, each packet (denoted j), all packets are coded packets and are combinations of all g original packets and thus d=\ . d(j) \ forj in {l, 2, ..., g*(\-PY1}. (7)
In systematic network coding, the first g packets are uncoded, and thus are a combination of a single packet. The remaining packets are linear combinations of all g original packets. Consequently: d(j) = \lg for; in {1, 2, g}; and (8) d(j) = 1 for; in {g+1, g+2, g*(l-F)A}- (9)
[0083] The suggested approach in the instant invention is also systematic and thus the first g packets are uncoded. The following coded packet is a linear combination of the packet that not all nodes have pivot elements for. Packet losses at the nodes are assumed to be uncorrelated, which also presents the worst case scenario Thus when packet ;' is to be transmitted, all sinks have received (1-P)*( -1) packets. Therefore, the probability that a sink has a pivot element for a packet is (l-P)*(/-l)/g. The probability that all sinks have a pivot element for a packet is the probability that one sink has the pivot element, raised to the number of sinks: d(j) = \lg for; in { 1, 2, ..., g} (10)
for j in {g+1, g+2, ..., g*(\-Py1}
<M = l- packetOT for; in {g+l, g+2, g*(\-P)A} . (11)
[0084] The resulting densities of encoded packets for g=1024, P=0.3, and N in { 1 , 2, 4, 8} are plotted on FIG. 4. As can be seen, the suggested approach herein reduces the density of the coded packets, especially when the number of receiving nodes is low. More particularly, FIG. 4 presents the density of all transmitted packets (packet 1 to 1463) for different NC approaches. With regard to traditional NC and systematic NC, the performance does not depend on the number of receivers, N, but the new approach does and is plotted for 1, 2, 4 or 8 receivers. In this example the packet error probability (PEP) is 0.3 and g = 1024.
[0085] For traditional NC, the density is constant and one. For systematic NC, the density is low until i=g, after which the density increases to one. For the suggested approach herein, the density is low until i=g, after which the density jumps and then decreases towards zero. The density from the gth packet depends on the number of sinks, N, and when N increases, the density increases.
[0086] System Complexity
[0087] To calculate the resulting complexities, expressions are needed for the number of packets from which each coded packet is a linear combination. This is denoted as g': m =g*dV)- (12)
[0088] The resulting complexities can then be calculated from the ;. , complexity expressions where g is substituted for encoding and recoding with g', and g-i with g' for recoding. In wireless networks, packets are typically approximately 1500 bytes in size, as q=232 the symbol size is 32 bits, and thus packet length, m, is 375.
Encoding : 0(g ' m) (13)
Recoding and decoding: 0(g' m + g' ) (14)
To include the PEP at the sinks, the probability that each packet is received (l-P) is multiplied to the cost for each packet, in terms of complexity, (l-P)*0(g' m + g' ).
[0089] As described above, FIG. 4 shows the density of all coded packets, for different approaches. When the new approach presented herein is used, the density of all packets is reduced or the same as the systematic approach and the new approach performs better than the traditional approach. When the number of receiving nodes is low, the new approach performs best, and in the worst case where N is infinite, the performance is identically to that of the systematic approach, although this is not depicted on the plot.
[0090] The number of operations performed when different approaches are used, and for different P is plotted in FIGS. 5 and 6. FIG. 5 shows operations for encoding, and FIG. 6 shows operations for decoding. FIG. 5 presents the total complexity for all encoded/recoded packets for different NC approaches. With regard to traditional NC and systematic NC, the performance does not depend on the number of receivers, N, but the new approach does and is plotted for 1 , 2, 4 or 8 receivers. P is varied between 0 and 0.5, g = 1024, and m-3T5. The plotted values are the sum of the complexity expressions for all encoded/recoded packets that are generated. As P increases, the number of performed operations increases for all approaches. The new approach requires the least amount of operations and performs best when the number of receiving nodes is low.
[0091] FIG. 6 presents the total complexity for all packets decoded at one sink for different NC approaches. Regarding traditional NC and systematic NC, the performance does not depend on the number of receivers, N, but the new approach does and is plotted for 1 , 2, 4 or 8 receivers. P is varied between 0 and 0.5, g = 1024, and w=375. The plotted values are the sum of the complexity expressions for all packets decoded at a sink. As P increases, the number of performed operations increases for all approaches. The new approach requires the fewest number of operations and performs best when the number of receiving nodes is low. Both show a significant reduction in the number of performed operations with the suggested approach. This can translate into higher coding throughput, lower central processing unit (CPU) utilization and reduced power usage.
[0092] An exemplary proposed technique is focused on meshed networking with device-to-device communication (exchanging any kind of information), as the technique reduces the amount of signaling overhead and assures efficient coding. For instance, the technique can be used for cooperative exchanges
among devices of downloaded information. In particular, the technique is useful in scenarios where the complexity of standard coding could potentially limit the throughput, e.g., if the transmitting nodes have low computational capabilities or if the data rate is high.
[0093] FIG. 7 is a block diagram 700 of actions performed for encoding data in accordance with an exemplary embodiment of the invention. The block diagram (and the block diagrams shown in FIGS. 8 and 9) may be a method performed by an apparatus such as network node 10 (see FIG. 1), e.g., under control of one or more processors 10-A. The block diagram 700 (and the block diagrams shown in FIGS. 8 and 9) may be a sequence of actions carried out by hardware, such as an integrated circuit, programmable logic device, or other devices, or combinations of these. The actions in block diagram 700 (and the block diagrams shown in FIGS. 8 and 9) may also be a computer program product comprising a computer-readable memory medium (e.g., one or more memories 10-C in FIG. 1, a compact disk, a digital versatile disk/digital video disk, or the like) bearing computer program code embodied therein for use with a computer (e.g., such as network node 10 of FIG. 1). The computer program code has code causing the computer to perform the actions shown in FIG. 7 (and the block diagrams shown in FIGS. 8 and 9).
[0094] It is helpful to note that packets are usually not retransmitted by a single network node. In other words, a source node might transmit X packets. Instead of retransmitting any of those X packets (e.g., if another node does not receive one or more of the X packets), a network node (such as a recoding node) that receives those X packets and would like to retransmit that data in the those X packet will encode (or recode) those X packets and retransmit them in the encoded/recoded state. It is also noted that the terms "encoded" and "coded" are used interchangeably herein.
[0095] In block diagram 700, encoding and recoding are both described, as recoding is a version of encoding. At this point, it is helpful to discuss the various options for network nodes (such as a network node 10 of FIG. 1). If the network node is a source and this is the first time data has been encoded and transmitted from the source to other network nodes, uncoded data 730 will be used in block 731 and the first g packets are transmitted (to other network nodes 10) (block 731). If the network node is only a source (and not a sink or a recoding node), the source only performs block 730 and 731. Multiple sources and recoding nodes will perform the additional
blocks in block diagram 700. It is noted that some header information is added to the packet (such as packets 705 or 765) for the receiver to know if the data in the packet is uncoded or coded and how the data is coded. In the case of the uncoded packet, this information can be compressed a lot. This header information is outside the scope of this disclosure and is known to those skilled in the art.
[0096] For nodes performing coding, the initially received packets (in this example) will be packets of uncoded data 730. Block 715 will not be performed until coded packets are received, so a secondary source or recoding node at this point does not perform block 715. After a certain number of uncoded packets are received, the network node forms linear combinations of encoded packets using, in this case, the uncoded received packets (block 720). For block 735, any scalar from the finite field may be used for encoding (block 745). Block 740 is not performed at this time.
Block 720 produces encoded packets 765, which include coded data 766 and an encoding vector 767 (as described above). These encoded packets 765 are transmitted in block 725. At this time, blocks 750 and 755 are not performed.
[0097] Subsequently, the network node begins to receive encoded packets 705 from other nodes (block 710). Each received packet 705 includes coded data 706 and an encoding vector 707. It is noted that the received packets 705 are encoded, but will be referred to as "received packets" to distinguish from encoded packets 765 produced in block 720.
[0098] In block 715, the received packets are examined (more specifically, the encoding vector 707 is examined) and the received packets are deciphered and information is saved corresponding to the received packets and the nodes. This is explained in more detail in reference to FIG. 8.
[0099] After a certain number of encoded packets 705 are received, block 720 would be performed. In block 720, a linear combination of encoded packets is formed, where the secondary source/recoding network node performs block 720 by performing block 735 using encoded packets 705, and by determining if the information determined in block 715 indicates that other network nodes have the coded packets (or in an exemplary embodiment, the network nodes have pivot elements corresponding to the coded packets). Note that block 735 is subject to determining into which set of the sets of the finite field the scalars should fall, as described above in "Field subsets", "Encoding", "First approach", and "Second
approach". Furthermore, once encoded packets 705 are received, the secondary source/recoding network node begins recoding and performs block 750 instead of block 745. In block 750, as described above in "Recoding", only the g-i scalars for which the recoding node has pivot elements in the decoding matrix can be chosen arbitrarily. The coded packets for which the information determined in block 715 indicates that other network nodes have the coded packets (or in an exemplary embodiment, the network nodes have pivot elements corresponding to the coded packets) are not included in the linear combination (block 740). What this means (block 755) is that these coded packets are not transmitted in block 725. In block 725, the remaining encoded packets are transmitted.
[00100] Turning to FIG. 8, a block diagram 800 is shown of actions performed for deciphering and saving information for received packets and associated network nodes in accordance with an exemplary embodiment of the invention. Block diagram 800 is one exemplary technique for performing block 715 of FIG. 7 (and also block 915 of FIG. 9). In block 805, it is determined for each encoding vector into which set of the sets s of the finite field (see "Field subsets" above) the encoding vector falls. In block 810, status of the received packet is determined based on the sets. Such status can be that the sending node has pivot nodes for the received packets (block 820) or can be other status (block 830). Such other status could be, as examples, not received 835, received but not decoded 840, or decoded 845.
[00101] In block 815, the status for received packets is updated for the packets and for the sending node. As an example, a first table 850 may be kept, where the table 850 includes entries 855-1 through 855 -x corresponding to Node 1, and entries 860-1 through 860-y corresponding to Node 2. Entries for additional nodes are not shown. Each entry includes, in this example, an indication 865 of the node, and indication of the packet 870, and an indication 875 of the status. The table 850 is merely one example and is not to be considered limiting. For instance, smaller sets of data could be used, such as that shown in table 880, which contains entries 881-1 and 881-2 (other entries are not shown). Each entry has an indication 885 of a packet and an indication 890 of whether all other nodes have a pivot element corresponding to the packet or not.
[00102] Turning to FIG. 9, a block diagram 900 is shown of actions performed for decoding information in accordance with an exemplary embodiment of
the invention. Block diagram 900 would be performed by a sink. It is noted that some sinks may also be sources or recoding nodes, and the functions performed by those nodes may be performed as described above. Block diagram 900 begins in block 910, when packets are received, e.g., from source or recoding nodes. In block 915, the received packets are deciphered and information for the received packets and associated nodes is saved (e.g., as described above in block diagram 800 of FIG. 8). In block 925, matrices of coded data (e.g., 766) and encoding vectors (e.g., 767) are formed. In block 930, the matrices are used to decode the coded data. See the "Decoding" sections above. In block 935, the decoded packets are output. The block diagram 900 ends in block 950.
[00103] Embodiments of the present invention may be implemented in software, hardware, application logic or a combination of software, hardware and application logic. The software, application logic and or hardware may reside on any type of wired or wireless network node, such as nodes in a cellular network or nodes in a wired peer-to-peer or peers-to-servers network. In an example embodiment, the application logic, software or an instruction set is maintained on any one of various conventional computer-readable media. In the context of this document, a "computer- readable memory medium" may be any memory media or means that can contain, store, communicate, propagate or transport the instructions for use by or in connection with an instruction execution system, apparatus, or device, such as a computer, with one example of a computer described and depicted in FIG. 1.
[00104] The embodiments of this invention may be implemented by ; computer software executable by one or more processors 10-A or by hardware.
Further in this regard, it should be noted that the various blocks of the logic flow diagrams of FIGS. 7, 8, and 9 may represent program steps, or interconnected logic circuits, blocks and functions, or a combination of program steps and logic circuits, blocks and functions.
[00105] The one or more memories 10-B may be of any type suitable to the local technical environment and may be implemented using any suitable data storage technology, such as semiconductor based memory devices, magnetic memory devices and systems, optical memory devices and systems, fixed memory and removable memory. The one or more processors 10-A may be of any type suitable to the local technical environment, and may include one or more of general purpose computers,
special purpose computers, microprocessors, digital signal processors (DSPs) and processors based on a multi core processor architecture, as non limiting examples.
[00106] Embodiments of the inventions may be practiced in various components such as integrated circuit modules (e.g., IC 70). The design of integrated circuits is by and large a highly automated process. Complex and powerful software tools are available for converting a logic level design into a semiconductor circuit design ready to be etched and formed on a semiconductor substrate.
[00107] Programs, such as those provided by Synopsys, Inc. of Mountain View, California and Cadence Design, of San Jose, California automatically route conductors and locate components on a semiconductor chip using well established rules of design as well as libraries of pre stored design modules. Once the design for a semiconductor circuit has been completed, the resultant design, in a standardized electronic format (e.g., Opus, GDSII, or the like) may be transmitted to a
semiconductor fabrication facility or "fab" for fabrication.
[00108] If desired, the different functions discussed herein may be performed in a different order and/or concurrently with each other. Furthermore,! if desired, one or more of the above-described functions may be optional or may be combined.
[00109] One exemplary technical effect of the invention is that it enables a reduced number of operations relative to other NC techniques. Another exemplary technical effect of the invention is that it enables reduced bandwidth, as certain packets will not be communicated when these packets are determined to exist at certain nodes in the network.
[00110] In an exemplary embodiment, a computer program product is disclosed comprising a computer-readable memory medium bearing computer program code embodied therein for use with a computer, the computer program code comprising: code for receiving a first packet from at least one network node, the first packet comprising an encoding vector; code for, based on at least the encoding vector, determining a status of the first packet at the network node; code for, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets
includes or does not include the first packet; and code for transmitting the plurality of encoded second packets to the at least one network node.
[00111] It is noted that any of the operations previously described may be implemented through means. For example, an apparatus may include a means for receiving a first packet from at least one network node, the first packet comprising an encoding vector; means responsive to at least the encoding vector for determining a status of the first packet at the network node; means responsive to the determined status of the first packet, for making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; means for encoding the plurality of second packets to create a plurality of encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and means for transmitting the plurality of encoded second packets to the at least one network node.
[00112] Although various aspects of the invention are set out in the independent claims, other aspects of the invention comprise other combinations of features from the described embodiments and/or the dependent claims with the features of the independent claims, and not solely the combinations explicitly set out in the claims.
[00113] It is also noted herein that while the above describes example embodiments of the invention, these descriptions should not be viewed in a limiting sense. Rather, there are several variations and modifications which may be made without departing from the scope of the present invention as defined in the appended claims.
Claims
1. A method comprising:
receiving a first packet from at least one network node, the first packet
comprising an encoding vector;
based on at least the encoding vector, determining a status of the first packet at the network node;
using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets;
encoding the plurality of second packets to create a plurality of encoded
second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and transmitting the plurality of encoded second packets to the at least one network node.
2. The method of claim 1, wherein determining a status of the first packet further comprises determining into which set from a plurality of sets of a finite field the encoding vector falls.
3. The method of claim 2, wherein determining a status of the first packet further comprises determining, based on into which set the encoding vector falls, the status indicates the at least one network node has a pivot element corresponding to the first packet.
4. The method of claim 2, wherein determining a status of the first packet further comprises determining, based on into which set the encoding vector falls, the status indicates the at least one network node has one of the following: not received the first packet, received but not decoded the first packet, or decoded the first packet.
5. The method of claim 1 , wherein the at least one network node comprises a plurality of network nodes, and wherein making a decision further comprises making the decision that a first packet should be used as a packet in the encoding of the plurality of second packets only when the status of that packet for each of the plurality of nodes is a predetermined status.
6. The method of claim 2, wherein all possible vectors from the finite field are able to be used in the encoding and the encoding further comprises, for each packet of the plurality of packets, determining into which set the packet should be placed and placing the packet into that set by selecting one of one or more possible vectors in the set.
7. The method of claim 3, wherein the method is performed by a node, wherein there are g possible second packets, wherein each of the first packets also comprises coded data, wherein receiving further comprises receiving i first packets, and wherein encoding further comprises:
forming a matrix, XA - [ xAi xA 2 . . . x i\, wherein each JCa is coded data from a respective one of the i first packets;
forming a decoding matrix GA = wherein each gA is an encoding vector from a respective one of the i first packets;
generating a matrix h comprising a plurality of randomly selected scalars hj, the generating including choosing the scalars in h within a specific range for each h} that corresponds to a row in XA where the node has a pivot element; and
multiplying the matrix, XA and the generated matrix h to create the plurality of second packets.
8. The method of any one of the proceeding claims wherein encoding further comprises forming the plurality of coded second packets as a number of linear combinations of data elements in the second packets.
9. The method of claim 8, wherein the data elements comprise one of uncoded data or coded data.
10. The method of any one of the proceeding claims wherein each of the first packets comprises coded data and each of the encoded second packets comprises coded data and an encoding vector.
11. The method of claim 1 , wherein receiving further comprises receiving a plurality of first packets, each first packet also comprising coded data, wherein the method further comprises forming a first matrix comprising the coded data, forming a second matrix comprising the encoding vectors, decoding the coded data using the first and second matrices, and outputting decoded data.
12. A computer program, comprising:
code for receiving a first packet from at least one network node, the first
packet comprising an encoding vector;
code for, based on at least the encoding vector, determining a status of the first packet at the network node;
code for, using the determined status of the first packet, making a decision whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; code for encoding the plurality of second packets to create a plurality of
encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and code for causing transmission of the plurality of encoded second packets to the at least one network node;
when the computer program is run on a processor.
13. The computer program according to claim 12, wherein the computer program is a computer program product comprising a computer-readable medium bearing computer program code embodied therein for use with a computer.
14. An apparatus, comprising:
at least one processor; and
at least one memory including computer program code,
the at least one memory and the computer program code configured to, with the at least one processor, cause the apparatus to perform at least the following:
receiving a first packet from at least one network node, the first packet comprising an encoding vector;
based on at least the encoding vector, determining a status of the first packet at the network node;
using the determined status of the first packet, making a decision
whether the first packet should be used or should not be used as a packet in an encoding of a plurality of second packets; encoding the plurality of second packets to create a plurality of
encoded second packets, wherein based on the decision the plurality of second packets includes or does not include the first packet; and
transmitting the plurality of encoded second packets to the at least one network node.
15. The apparatus of claim 14, wherein determining a status of the first packet further comprises determining into which set from a plurality of sets of a finite field the encoding vector falls.
16. The apparatus of claim 15, wherein determining a status of the first packet further comprises determining, based on into which set the encoding vector falls, the status indicates the at least one network node has a pivot element corresponding to the first packet.
17. The apparatus of claim 15, wherein determining a status of the first packet further comprises determining, based on into which set the encoding vector falls, the status indicates the at least one network node has one of the following: not received the first packet, received but not decoded the first packet, or decoded the first packet.
18. The apparatus of claim 14, wherein the at least one network node comprises a plurality of network nodes, and wherein making a decision further comprises making the decision that a first packet should be used as a packet in the encoding of the plurality of second packets only when the status of that packet for each of the plurality of nodes is a predetermined status.
19. The apparatus of claim 15, wherein all possible vectors from the finite field are able to be used in the encoding and the encoding further comprises, for each packet of the plurality of packets, determining into which set the packet should be placed and placing the packet into that set by selecting one of one or more possible vectors in the set.
20. The apparatus of claim 16, wherein there are g possible second packets, wherein each of the first packets also comprises coded data, wherein receiving further comprises receiving i first packets, and wherein encoding further comprises:
forming a matrix, X = [ χΛ \ xA 2 . . . JtA g-i], wherein each χΛ is coded data from a respective one of the i first packets;
forming a decoding matrix (7A = [gAi gA2 . . . g i\, wherein each gA is an encoding vector from a respective one of the i first packets;
generating a matrix h comprising a plurality of randomly selected scalar s /¾, the generating including choosing the scalars in h within a specific range for each ¾ that corresponds to a row in XA where the apparatus has a pivot element; and
multiplying the matrix, ΧΛ and the generated matrix h to create the plurality of second packets.
21. The apparatus of any one of claims 14 to 20, wherein encoding further comprises forming the plurality of coded second packets as a number of linear combinations of data elements in the second packets.
22. The apparatus of claim 21 , wherein the data elements comprise one of uncoded data or coded data.
23. The apparatus of any one of claims 14 to 22, wherein each of the first packets comprises coded data and each of the encoded second packets comprises coded data and an encoding vector.
24. The apparatus of claim 14, wherein receiving further comprises receiving a plurality of first packets, each first packet also comprising coded data, wherein the apparatus further comprises forming a first matrix comprising the coded data, forming a second matrix comprising the encoding vectors, decoding the coded data using the first and second matrices, and outputting decoded data.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2010/051208 WO2011114191A1 (en) | 2010-03-19 | 2010-03-19 | Intrinsic information conveyance in network coding |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2010/051208 WO2011114191A1 (en) | 2010-03-19 | 2010-03-19 | Intrinsic information conveyance in network coding |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2011114191A1 true WO2011114191A1 (en) | 2011-09-22 |
Family
ID=44648475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/IB2010/051208 WO2011114191A1 (en) | 2010-03-19 | 2010-03-19 | Intrinsic information conveyance in network coding |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2011114191A1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007008123A1 (en) * | 2005-07-07 | 2007-01-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and arrangement for coding and scheduling in packet data communication systems |
WO2008108708A1 (en) * | 2007-03-06 | 2008-09-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Improved retransmissions in a wireless communications system |
WO2008108700A2 (en) * | 2007-03-06 | 2008-09-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Network coding based on soft feedback |
US20100046371A1 (en) * | 2008-05-29 | 2010-02-25 | Jay Kumar Sundararajan | Feedback-based online network coding |
-
2010
- 2010-03-19 WO PCT/IB2010/051208 patent/WO2011114191A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007008123A1 (en) * | 2005-07-07 | 2007-01-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and arrangement for coding and scheduling in packet data communication systems |
WO2008108708A1 (en) * | 2007-03-06 | 2008-09-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Improved retransmissions in a wireless communications system |
WO2008108700A2 (en) * | 2007-03-06 | 2008-09-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Network coding based on soft feedback |
US20100046371A1 (en) * | 2008-05-29 | 2010-02-25 | Jay Kumar Sundararajan | Feedback-based online network coding |
Non-Patent Citations (2)
Title |
---|
HEIDE J. ET AL: "Network Coding for Mobile Devices - Systematic Binary Random Rateless Codes", COMMUNICATIONS WORKSHOPS, 2009. ICC WORKSHOPS 2009. IEEE INTERNATIONAL CONFERENCE ON, 14 June 2009 (2009-06-14) - 18 June 2009 (2009-06-18), pages 1 - 6, XP031515516 * |
SHRADER B. ET AL: "Systematic wireless network coding", MILITARY COMMUNICATIONS CONFERENCE, 2009. MILCOM 2009, October 2009 (2009-10-01), pages 1 - 7, XP031609710 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dabora et al. | Broadcast channels with cooperating decoders | |
Bidokhti et al. | Noisy broadcast networks with receiver caching | |
CN103250463B (en) | Subset coding for communication systems | |
US9998406B2 (en) | Method and apparatus for performing finite memory network coding in an arbitrary network | |
EP3844883B1 (en) | Method and system for decoding data using compressed channel output information | |
Yang et al. | BATS Codes: Theory and practice | |
KR20170102173A (en) | Data transfer method and device | |
CN108737021B (en) | Polar code transmission method and device | |
WO2019047544A1 (en) | Encoding method and device | |
CN107040334A (en) | Loss Resilience Protocols for Communication Networks | |
CN113508542A (en) | Transmitter and transmission method using PSCM scheme | |
Zhan et al. | Half‐duplex relay systems based on polar codes | |
KR20200093627A (en) | Encoding of systematic punctured polar codes associated with internal code | |
US10523790B2 (en) | System and method of header compression for online network codes | |
Taghouti et al. | Random linear network coding for streams with unequally sized packets: Overhead reduction without zero-padded schemes | |
Ong et al. | On the capacity of the binary‐symmetric parallel‐relay network | |
CN109565330A (en) | For emitting method, corresponding program product and the relay equipment of digital signal using selective logic for the system at least one dynamic half-duplex repeater | |
Mehta et al. | Survey on multimedia transmission using network coding over wireless networks | |
WO2011114191A1 (en) | Intrinsic information conveyance in network coding | |
Giri et al. | Performance analysis of feedback-based network-coded systems for broadcast | |
JP5276673B2 (en) | System and method for providing heterogeneous message protection | |
WO2019047788A1 (en) | Coding method and device | |
Lei et al. | Performance Analysis of Wireless Dynamic Cooperative Relay Networks Using Fountain Codes. | |
JP2019083507A (en) | Reception device, transmission device, reception method and transmission method | |
WO2019047543A1 (en) | Coding method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 10847773 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 10847773 Country of ref document: EP Kind code of ref document: A1 |