A portion of the disclosure of this patent contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever.
Wireless mesh networks provide a way of creating low cost, flexible networks which may be deployed for many different applications, such as in disaster zones to rapidly provide communication infrastructure or in offices to enable the wireless office. However, aspects of the wireless medium, such as its broadcast nature, inherent variability and interference problems make designing efficient, high throughput networks challenging.
Wireless mesh networks offer the ability to use multiple paths to increase the capacity of the transmission of information link between two nodes, however, since any packet transmitted by a node may be received by more than one node (because of the broadcast nature of the medium), coordination between nodes is required to avoid duplicate transmissions. This coordination generally involves complex signaling and extra communication overhead as nodes communicate with each other to decide which nodes will forward which packets. This reduces the benefit of using multiple paths and complicates any implementation.
The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.
A method of transmitting data across a wireless mesh network is described which uses network coding at each of the intermediate nodes between the source node and the destination node. Each intermediate node also controls the rate at which it broadcasts packets based on link congestion and the backlog of packets at each of the possible next-hop nodes for the data flow.
Many of the attendant features will be more readily appreciated as the same becomes better understood by reference to the following detailed description considered in connection with the accompanying drawings.
The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein:
Like reference numerals are used to designate like parts in the accompanying drawings.
The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples.
If network coding is used at intermediate nodes (e.g. nodes 2 and 3), the information transmitted by intermediate nodes is mixed (e.g. using random coefficients) and the protocol overheads, which are otherwise required to avoid packet duplication, can be reduced. For example, if the source node (node 1) transmits three packets, both intermediate nodes 2 and 3 may not receive all three packets because of errors in the wireless channels and the inherent variability of the wireless transmission medium (e.g. due to interference from other nodes not shown in
The use of network coding can be described with reference to
E1=δ1B1+δ2B2+ . . . +δnBn
where δi are random coefficients (and may be referred to as the coefficient vector
(ω1δ1+ω2ε1, ω1δ2, ω1δ3+ω2ε3, . . . )
When network coding is used in this way, a destination node can recover the original data comprising x blocks (or packets) after receiving x blocks which are linearly independent from each other (i.e. x packets with linearly independent coefficient vectors), in a process similar to solving a set of linear equations. If the coefficients are chosen at random by each intermediate node, a destination node will be unlikely to receive a block which is not of use to that node. Each node can decide whether to receive and store a packet based on the coefficients vector; if the coefficient vector of the received packet can be expressed as a linear combination of the coefficient vectors that are already stored by the node, i.e. the received packet is redundant and may be dropped.
In the example above, a Galois Field GF(28) has been used as the base arithmetic field, which has a size of 256 elements. The size of the field is large enough to guarantee good diversity (at least for networks of sizes of a few hundred nodes) and is small enough to allow efficient encoding and decoding operations. Depending on the network size and other requirements, alternative base arithmetic fields may be used.
Network coding and optimization techniques for network coding are described in the following patent applications which are hereby incorporated herein by reference in their entirety:
The benefits of multi-hop routing and the use of network coding to improve the throughput of a wireless mesh network can be demonstrated mathematically using the simple network shown in
The routing problem asks which route packets should take: how many should be sent via node 2 and how many via node 3. The scheduling problem determines the packet schedule at each node. Let αi denote the fraction of time node i is active (hence Σi αi=1). Suppose that nodes broadcast packets at the same rate of 1 packet per time unit, and that packets transmitted by i are successfully received by j with probability pij. Here 1−pij is the erasure probability, and incorporates the effects of the physical (PHY) layer, interference, buffer overruns and MAC retransmissions. To ease the description, it is set that p12=p13=p and p24=p34=q with probabilities assumed independent.
For this comparison rij for a set J is defined to be the information rate on links ij, that is the rate at which linearly-independent packets from i are received (and may be forwarded) by any of the nodes in the set J, where J is the set of nodes that can receive information from i. The rij can be interpreted as the carried flow rate.
Under these assumptions of independent erasure probabilities:
where r1i≦α1p and ri4≦αiq for i=2,3. This can then be used to explore throughput using different routing and scheduling policies.
For multipath routing with network coding, the same packets may be received by nodes 2 and 3 when node 1 broadcasts. Using the bound equation (1) the following constraint is obtained
r1{2,3}≦αi(1−(1−p)2)=α1pb (2)
which is achievable where
is the probability at least one broadcast packet reaches a relay node. The optimal flow has to satisfy ƒ≦r1,{2,3}, ƒ≦r24+r34 and with the constraints r1,{2,3}≦r12+r13, r1i≦ri4 it is straightforward to show that the unique solution is
Uniqueness follows since this is effectively solving a linear program—given that the p's are assumed fixed, this is a linear objective function maximized over linear constraints, solving for non-negative variables (the αi and rij). Networking coding is implicit in this solution, ensuring that what is received at relay nodes 2 and 3 is useful to node 4; nodes 2 and 3 recode the packets they receive. Indeed, it is possible to show that a random linear coding scheme can get arbitrarily close to this rate (with arbitrarily small error probability, provided that a large number of packets are considered), where the intermediate nodes generate random linear combinations (over the appropriate field) of packets they receive.
The above relation (3) holds more generally if there are n relay nodes instead of 2, where all links interfere (only one node may transmit at a time). Letting 1 be the source, n+2 the destination, and {2, . . . , n+1} relays, with P1,n+2=0, p=p1i, q=pi,n+2 and pb=1−(1−p)n. A rate constraint on the first cut, between the source and the relays, is ƒnc≦α1pb and a rate constraint on the second cut is (1−α1)q. From there the maximal average end-to-end rate
is readily obtained.
For naive multipath routing without network coding, intermediate relay nodes just relay received packets, hence duplicate packets may be received by the destination, and the ‘double-counted’ packets must be substracted. As before, r1,{2,3} is given from the bound (2), however now the aggregate rate at the destination is bounded above by (1−α1)q−α1p2, since there are α1p2 duplicate packets on the average. In this case, the (unique) maximum rate is given by
The equation generalizes when there are n relays, the average rate of duplicated packets is α1(np−pb), the rate constraint on the second cut is (1−α1)q−α1(np−pb), hence the maximal average end-to-end rate is
With fixed routing, only one path can be used. In this case:
Even in this simple scenario described above, a benefit from multipath routing is obtained (fnc>ffr) provided the links to the relays are not lossless (p<1). The improvement ratio ƒnc/ƒƒr=pb(p+q)/p(pb+q) increases with n, the number of relay nodes, and q, and decreases as p increases, i.e. the less reliable the broadcast links, the bigger the gain. Indeed, with q=1 and small p (very unreliable broadcast links) the ratio is n+O(p), which illustrates the potential benefits. The gain is bounded above by ½p+½. This also demonstrates that network coding always gives an advantage over naive multipath routing. Network coding makes transmissions more efficient as it eliminates the redundancy, especially when the number of paths is large.
In
The source and destination nodes of a flow may be on the edges of a wireless mesh network, such that all the packets of a flow enter the wireless mesh network at the source and leave at the destination. However, the methods may also be used within a wireless mesh network where there is a common sub-path, for example considering the example mesh network shown in
The network coding may be implemented over the entire data element which is to be sent or alternatively, the groups of blocks (or packets) which make up a data element may be grouped into portions or generations and the network coding may be implemented only within a generation. A generation may be of fixed size, (e.g. 32 packets) or the size may be variable. The size of a generation may, for example, vary over the timescales of the system, for example by varying the generation size with evolution of the TCP congestion send/receive window. The size of the generation may be selected to meet particular performance and design requirements because larger generations allow for more encoding and improve system efficiency, but also require more buffer space. Smaller generations exploit less diversity and are less efficient but result in smaller delays in transmission.
In some implementations, each of the packets may be the same size, with smaller packets being padded or combined together (e.g. multiple acknowledgement packets). However, in other implementations packets of different sizes may be used and coding schemes may be adopted to combine packets of similar sizes in order to improve the efficiency of the system.
Network coding is implemented at intermediate nodes and in addition to this the source node may, in some embodiments, also encode packets using network coding prior to transmission. If network coding is used by the source node, the source node transmits X linearly independent packets for each generation, where there are X packets within the generation. Irrespective of whether network coding is used for initial transmission by the source node, network coding may be used by the source node in an error-correction or re-transmission scheme (e.g. as described in more detail below).
In addition to implementing network coding at intermediate nodes, the rate at which encoded packets are broadcast by each node (whether an intermediate node or a source node) is controlled. This rate control is implemented in a distributed (and decentralized) manner, such that each node controls the rate at which it distributes packets and also which next-hop node to use for each packet it relays. Use of such a distributed rate control method reduces the protocol overhead within the network. The rate is controlled on the basis of the backlog of packets for transmission to next-hop neighbor nodes (also referred to as ‘backpressure’) and this has the effect of directing traffic to appropriate parts of the network, i.e. those paths which are least loaded and/or most reliable. This rate control technique can adapt fast to variations in link qualities and congestion signals coming from different paths and can also react to packet losses.
The algorithms used within the mesh network are based on a credit system. The features of this credit system are:
According to the credit system, credits are added to the source node of each flow when fresh packets are created. The rate at which fresh packets are generated by the source node will define the efficiency of the scheme and the fairness among flows. An algorithm for controlling the generation of packets is described in more detail below. In an example, one credit may correspond to one packet, although in other embodiments, different relationships between credits and data may be used. The credits are transferred across the mesh network from the source node to the destination node, with each node (whether a source or intermediate node) being responsible for all the credits it has received, and it is obliged to forward each credit to exactly one next-hop node. At the destination node, each packet receipt reduces the number of credits and generally the number of credits within the system is conserved, although losses may occur upon node failures or other error conditions. Retransmission schemes (as described below) or other error correction techniques may be used to minimize credit losses within the system. Each node within the network maintains a list of credits for each flow, C(n,c), which contains all the credits for flow c stored at node n (also referred to as per-node credits). The credit transfer scheme may be secured against attack (e.g. through authentication of nodes).
For each flow c, a node c has a number of next-hop neighbors, DST(n, c). This can be described with reference to
In addition to the per-node credits (C(n,c)), transmission credits are defined which are associated with broadcast links. For all subsets J of next-hop neighbors (i.e. where J⊂DST(n, c)), the transmission credit, TC(n,c,J) is defined to be the list of credits associated with broadcast link (n, J). In the example of
Cumulative transmission credits for links within the mesh network are calculated and then used to define the state of congestion of a link. The cumulative transmission credit, CTC(n,c,m) for node n, flow c and a link from node n to node m, is defined as the sum of the transmission credits for each subset of next-hop neighbors which includes node m:
Therefore for the simple example described above:
CTC(A,A→D,B)=TC(A,A→D,J1)+TC(A,A→D,J3)
CTC(A,A→D,C)=TC(A,A→D,J2)+TC(A,A→D,J3)
The higher the value of the cumulative transmission credit for a link from node n to node m, the more packets are waiting to be transmitted to node m and hence the more congested the link is. By controlling which links are used to forward packets based on the value of the CTC, packets will be sent over less congested links and the overall efficiency of the network will be increased.
Credits are added to the source node of each flow (block 602) when fresh packets are created (block 601), as shown in the example flow diagram of
When a node (be it source node or an intermediate node) gets an opportunity to transfer credit from a flow, c, it must select a node to transfer credit (and subsequently packets) to. As detailed above, credits are declarations of intent which are transferred by a (sending) node before packets are transmitted. The transfer of credits is separate from the subsequent transmission of packets and when a credit is transferred by a node this refers to an internal process within the node which updates credit values stored at that node. Transfer of a credit does not, therefore, result in any interference within the wireless mesh network and as a result multiple nodes may transfer credits substantially simultaneously. The node to which the credit is transferred (i.e. the receiving node for the credit) only updates its stored credit values when successful packet transmission actually occurs based on details of credit transfers included within the packet received. Credits at the sending node are adjusted upon acknowledgement of successful packet transmission, as described in more detail below. This is shown in the example flow diagrams in
An active acknowledgement for a packet comprises a message (which may be included within another packet or flow) which is sent from the node that received the packet to the node that sent the packet. This message may be unicast or broadcast. A passive acknowledgement comprises including the acknowledgement information (such as the identifier of the packet received) in a transmission which is not specifically intended for the node that sent the packet. For example, the identifier for a packet received by a node may be included when a packet is next broadcast by that node to its next-hop neighbors. Use of passive acknowledgements may be more efficient (in that specific acknowledgements are not required) however the speed of acknowledgement to the sending node may be slower (as it is dependent on the receiving node being able to transmit to its next-hop nodes). Where this delay in acknowledgement is significant, it may result in re-transmissions (e.g. as described below) which reduces the overall efficiency. Use of passive acknowledgements may be limited by the wireless technology used within the mesh network. For example, where the transmission by a node is not omni-directional (e.g. through the use of directional antennas or as a result of the environment) it may not be possible for the node which sent the packet to receive transmissions made by the node which received the packet, where those transmissions are intended for one or more of the receiving node's next-hop nodes. In the methods described herein, active or passive acknowledgements (or both) may be used.
In an embodiment, a mechanism may be provided to ensure timely active acknowledgements if a node detects that the passive acknowledgements are not being received successfully. This can be described with reference to the system shown in
In some embodiments or applications it may be beneficial to have a two way acknowledgement process. In such an example, a second acknowledgement may be provided in response to receipt of the first acknowledgement (sent in block 803 and received in block 705). This second acknowledgement may be included within the next packet transmitted by the node (e.g. at the next instance of block 704) and may be heard by the node which transmitted the acknowledgement (in block 803). In some embodiments, a node may not be able to transmit a packet received from a second node until this second acknowledgement is received from that second node. In other embodiments, other processes may be dependent upon receipt of this second acknowledgement.
In order to select a node to transfer credit to, the following routing decision is used:
|C(n,c)|>|C(m,c)|+|CTC(n,c,m)|
This decision is checked for all nodes, m, which are next-hop neighbors for the flow (i.e. where mεDST(n,c)) and operates over the entire flow (rather than on a per-generation basis), although other implementations may make decisions on part of the flow. The value of C(m,c) is periodically received at node n either in an acknowledgement (or other communication) sent by node m to node n or by node m overhearing a transmission from node m (to any node) which includes the value of C(m,c). As a result, the value of C(m,c) may not be the current version (as according to node m) but an older value of C(m,c). If the routing decision is true for several next-hops (i.e. for several nodes m), the node may select one of those next-hop nodes at random to transfer credit to. This routing decision has the effect that congested nodes (as identified by the value of C(m,c)) and congested links (as identified by the value of CTC(n,c,m)) are avoided and hence backpressure (i.e. pressure at subsequent points in the network) affects the routing decisions made at any particular node in the system. If either the node credit C(m,c) or the cumulative transmission credit CTC(n,c,m) are large, a node n will not forward any more packets in that direction and hence the queue will not build up. Once the congested node has successfully transmitted packets to its next-hop nodes, the value of its node credit and transmission credit (and hence CTC) will reduce and node n may subsequently be able to transfer additional credit to it.
When a node n transfers credit to a node m, the values stored at node n of the node credit for both node n (C(n,c)) and node m (C(m,c)) are updated, i.e. the value of C(n,c) decreases by one and the value of C(m,c) increases by one. However, credit updates are included in headers of actually transmitted packets. This means that node m will be informed about the credits transferred to it before time t only after a packet, broadcast after time t, is successfully received by m. At that point, it will update its credit set C(m, c). More formally, let ztn(n,c,n=m) be the list of all credits transferred from n to m until time t, as seen by node n, and suppose that a packet broadcast by n at time t is successfully received. Then, node m receives ztn(n,c,n=m), and it will add to its credits the set
C(m,c)=C(m,c)∪(ztn(n,c,m)\ztm(m,c,n)).
Whenever a credit for flow c is transferred from node n to node m, then the transmission credit values are also updated. The value of the TC is updated by adding a transmission credit to TC(n,c,J) for all subsets J which contain node m (i.e. for all J⊂DST(n,c) such that mεJ).
|C(1,1)|>|C(2,1)|+|CTC(1,1,2)|
→3>0+(0+0) is True
|C(1,1)|>|C(3,1)|+|CTC(1,1,3)|
→3>0+(0+0) is True
If node 1 selects node 2 first and transfers a credit, the credits become:
C(1,1)=2
TC(1,2)=1
TC(1,{2,3})=1
TC(1,3)=0
C(2,1)=0(1)
C(3,1)=0
The notation for C(2,1) of 0(1) indicates that node 1 has transferred a credit to it and therefore node 1 considers the value of C(2,1) to equal 1. However as the credit update information is not actually transmitted to node 2 until a packet is sent to that node, node 2 still considers the value of C(2,1) to equal zero.
At this point, if the routing decisions are re-evaluated, only the routing decision for node 3 is found to be true:
|C(1,1)|>|C(2,1)|+|CTC(1,1,2)|
→2>1+(1+1) is False
|C(1,1)|>|C(3,1)|+|CTC(1,1,3)|
→2>0+(0+1) is True
After the transfer of a credit to node 3, the credits become:
C(1,1)=1
TC(1,2)=1
TC(1,{2,3})=2
TC(1,3)=1
C(2,1)=0(1)
C(3,1)=0(1)
After credit transfer and before packet transmission, nodes 2 and 3 are not yet aware of credit transfers, thus |C2(2, 1)|=0, |C3(3, 1)|=0. However, |C1(2, 1)|=1, |C1(2, 1)|=1 (values in brackets).
When a packet from flow c is successfully transmitted from node n to node m, one transmission credit corresponding to the packet generation is removed from TC(n,c,J) (if TC(n,c,J)>0) for each subset J which contains node m (i.e. for all J⊂DST(n,c) such that mεJ). Although it may appear that TC(n, c, J) is simply a union of TC(n, c, i) for all nodes within J (i.e. for all iεJ), this is not always the case. This is shown by the second part of
The routing decision above provides one example of a suitable routing decision. In another embodiment, the following decision may be used:
|C(n,c)|≧|C(m,c)|+|CTC(n,c,m)|
Other embodiments may use different routing decisions based on the credits described herein.
Due to the broadcast nature of the medium, scheduling is required to determine which node is able to transmit packets at any time and this is described below. Additionally as a node may be handling several different flows, the node must determine which flow will be given priority when that node has the ability to transmit a packet. This additional step (block 1101) is shown in the example flow diagram of
In an embodiment, a quality metric, Q(n,J) may be used to select a flow for transmission, where Q(n,J) is the quality metric for broadcast transmission from node n to subset J of next-hop nodes. This quality metric may correspond to the probability, as measured by node n, that at least one node from J will receive a packet transmitted from n. The transmission preference of a flow c at a node n can then be defined as:
The transmission preference of a node n can further be defined as:
W(n)=maxcW(n,c)
The flow to be given priority can then be determined by:
c(n)=arg maxcW(n,c)
This has the effect that a flow with high backlog and a good chance of successful transmission will be selected by a node. This determination may be made when the node is given ability to transmit packets or in advance of this. Once the determination has been made of which flow has priority, the node can prepare a random linear combination of the packets buffered for the selected flow from the generation corresponding to the oldest transmission credit.
The quality metric, Q(n,J) may also be used to simplify the algorithms and equations described above. Where there are a large number of next-hop neighbors, the number of subsets, J, can become extremely large which may make some of the required computations time consuming and very processor intensive (e.g. those computations described above which require summing over all J). Where there are only two next-hop nodes there are 3 subsets (AB, A, B), where there are three next-hop nodes, there are 7 subsets (ABC, AB, AC, BC, A, B, C) etc. Consequently, the number of subsets considered may be limited (e.g. to 10 subsets or to a number dependent upon the size of a generation) and the subsets used may be selected from all possible subsets by the value of their quality metric, e.g. the 10 subsets with the largest values of Q(n,J). As the value of Q(n,J) may vary over time, the subsets used may be selected periodically through reassessment of the values of the quality metric for all subsets and therefore the subsets used may change over time. A routing protocol (such as VRR) may be used for selection of subsets.
In other examples, the situation where there are a large number of next-hop neighbors may be addressed in a different manner. The concept of sub-nets may be introduced where each sub-net comprises a group (or range) of nodes identified by a sub-net identifier. In this example, the methods may be as described above, with subsets comprising one or more sub-nets rather than one or more nodes. Each sub-net may comprise one or more nodes and in the limit that each sub-net comprises just one node, the method is the same as described above. However, this is likely to be less efficient than limiting the number of subsets (as described above).
Scheduling algorithms may be used to determine which node is able to transmit packets at any given time. The scheduling algorithm may use the transmission preference of a node, W(n), to decide which node gets an opportunity to transmit, giving preference to nodes with a higher value of W(n). Examples of suitable scheduling techniques are described in:
The scheduling algorithm used may include a transmission timer associated with each node, such that after a defined period without being enabled to transmit (e.g. when the timer has decremented to zero), the node is given an opportunity to transmit a packet. Where no packet is queued for transmission (or no credit has been transferred and therefore no packet requires to be transmitted), the node may not necessarily transmit a packet. However, in other embodiments, the node may create and transmit a new encoded packet.
Whilst the above description refers to the transmission by one node at any one time, in some embodiments more than one node may transmit at any one time. This is particularly applicable to larger networks where distant nodes may transmit simultaneously without interfering and/or where nodes may be operating on different frequencies.
TC(1,2)=1
TC(1,{2,3})=2
TC(1,3)=1
After this credit transfer, the routing decision is still true for node 2, but is false for node 3 (where the routing decision is |C(n,c)|>|C(m,c)|+|CTC(n,c,m)|). Another credit is therefore transferred to node 2 (as indicated in cloud 1202). At this point, the routing decisions for both nodes 2 and 3 are false so no further credit can be transferred until after packets have been successfully transferred and the transmission credits updated. If subsequently a packet is broadcast by node 1 and successfully received at both nodes 2 and 3 (as indicated in cloud 1203), the values of TC(1,2), TC(1,{2,3}) and TC(1,3) are each decremented by one (because only one packet was successfully transmitted). At this point the values of the per-node credits held at nodes 2 and 3 for those respective nodes would be updated to reflect the credits transferred by node 1 (e.g. to equal the values shown in
In parallel to the credit transfer shown in
In addition to credits, each node maintains a list of received packets from each flow c and the packets are stored in a packet buffer. The buffers may be of fixed size and therefore have an upper limit on the number of packets that any buffer can hold. When the buffers reach the upper limit on capacity and a new packet arrives, a queue replacement strategy may be used. In a first example of a suitable queue replacement strategy, the buffers may operate a first-in-first-out (FIFO) queue such that the oldest packet is removed from the list and the buffer. As described above, depending on the size of the generation, the buffers may be required to be quite large to avoid packet loss. Alternatively, however, due to the use of network coding, if an intermediate node becomes full (or close to capacity), rather than dropping packets from the buffer, the node may create a new encoded packet from a linear combination of some or all of the received packets from the same flow and store this packet instead of some or all of the packets from which this combination was made. This enables the buffers at intermediate nodes to be smaller than the size of the generation without impacting the performance of the system. In an embodiment, the size of the buffer may be varied based on the transmission credits associated with the node.
To limit the number of packets being stored/transferred within a system at any time (e.g. to reduce buffer requirements), the number of generations which are being transmitted within the mesh network may be limited (e.g. to two generations). In an example, when an intermediate node, which already has stored packets from a first and a second generation, receives a packet from a third generation, the packets from the first generation may be discarded. Generations may be identified sequentially such that packets from the earliest generation are discarded. In an alternative embodiment, once a destination has received sufficient linearly independent packets from a particular generation, it broadcasts a message which triggers each intermediate node to discard all packets from that generation.
In order to solve the linear system to recover coded packets, it is necessary and sufficient for the destination node to receive the same number of linear combinations as the number of original packets in the generation. In order to ensure that the destination receives enough packets, some implementations may include one or more error control mechanisms. Examples of two suitable mechanisms which may be used independently or in combination are hop-by-hop local recovery and end-to-end retransmissions.
Hop-by-hop local recovery may be achieved by processing ‘passive acknowledgments’. Given the broadcast medium, a sending node (which may be the source node or an intermediate node) can potentially overhear what the next hop transmits. By monitoring these next hop transmissions (as shown in
A ‘pseudo’ end-to-end mechanism, also referred to as end-to-end retransmissions, may be used for end-to-end recovery. The term ‘pseudo’ is used because it may not necessarily be true end-to-end recovery but may be intercepted by an intermediate node. The destination unicasts a request toward the source for more combinations for the given generation. If any intermediate node (which is acting as a relay) that receives the request (block 1501 of
For both the hop-by-hop and the end-to-end mechanisms, retransmitted packets are new linear combinations of all packets the node has received (or for the source, that the node has sent out).
In another implementation, instead of implementing a retransmission scheme, additional encoded packets may be transmitted so that the destination will receive enough packets to decode. However, transmission of redundant packets consumes extra network resources and reduces the performance of the system. Dependent on the reliability of the system and the performance required, different error correction schemes may be adopted.
A prototype system was built which implemented basic sets of the functionalities described above, including multipath forwarding, coding on multiple paths, passive acknowledgements and error control. Details of this prototype system, testbed and the tests performed are provided by way of example only and are in no way limiting to the methods, systems or apparatus described herein. Initial testing focused on small topologies like the diamond topology shown in
Whilst in the above description, the credit information is described as being transmitted within the header of the next packet which is broadcast, this is by way of example only and in other embodiments, the credit information may be transmitted in other ways. For example, once credit has been transmitted to a next-hop node (i.e. allocated to that node within the credit transmitting node), the details of the credit may be transmitted using unicast to the particular next-hop node. In another embodiment, a separate (or different) channel may be used for transmission of credit update information.
The methods described above may be implemented for all or part of a particular flow. The methods may be implemented for all flows or for only flows meeting particular criteria; for example, the methods may be implemented only for flows which exceed a particular number of packets (e.g. flows which contain more than one packet). In another embodiment, the methods may be implemented for all flows but the methods may be modified for those flows which contain less than a predetermined number of packets (e.g. flows comprising one packet), e.g. by not using network coding and/or not using broadcast for these small flows. In a further embodiment, where flow type can be distinguished, the method may be implemented in different ways depending on flow type (e.g. different operation for TCP compared to UDP). In further embodiments, the credit scheme and/or flow control mechanism may be operated independently to other aspects of the methods described herein.
The computing-based device 1600 comprises one or more processors 1601 which may be microprocessors, controllers or any other suitable type of processors for processing computing executable instructions to control the operation of the device in order to perform any of the methods described herein. The computer executable instructions may be provided using any computer-readable media, such as memory 1602. The memory is of any suitable type such as random access memory (RAM), a disk storage device of any type such as a magnetic or optical storage device, a hard disk drive, or a CD, DVD or other disc drive. Flash memory, EPROM or EEPROM may also be used.
Platform software comprising an operating system 1603 or any other suitable platform software may be provided at the computing-based device to enable application software 1604 to be executed on the device. The memory may also be used to store the credit data 1605, such as the per-node credit for the node and each flow 1606, the transmission credits 1607 and the per-node credits for the next-hop neighbor nodes 1608. The memory may also comprise the quality data 1609 and packet buffer 1610.
The computing-based device 1600 may further comprise a wireless transmitter and receiver or transceiver 1611 and one or more inputs which are of any suitable type for receiving media content, Internet Protocol (IP) input, etc (not shown in
Although the present examples are described and illustrated herein as being implemented in a computer-based device as shown in
Although a prototype system using 802.11 technology is described above, the system described is provided as an example and not a limitation. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of wireless systems, including but not limited to WiFi, WiMAX, UWB (Ultra-Wideband) and Bluetooth. In an example, the methods described herein may be implemented in an ad-hoc network of wireless enabled devices such as mobile telephones, PDAs etc. In another example, the system may not be ad-hoc but may be configured with devices over larger timescales. The devices involved (i.e. as nodes) may be fixed or mobile.
The term ‘computer’ is used herein to refer to any device with processing capability such that it can execute instructions. Those skilled in the art will realize that such processing capabilities are incorporated into many different devices and therefore the term ‘computer’ includes PCs, servers, mobile telephones, personal digital assistants and many other devices.
The methods described herein may be performed by software in machine readable form on a storage medium. The software can be suitable for execution on a parallel processor or a serial processor such that the method steps may be carried out in any suitable order, or simultaneously.
This acknowledges that software can be a valuable, separately tradable commodity. It is intended to encompass software, which runs on or controls “dumb” or standard hardware, to carry out the desired functions. It is also intended to encompass software which “describes” or defines the configuration of hardware, such as HDL (hardware description language) software, as is used for designing silicon chips, or for configuring universal programmable chips, to carry out desired functions.
Those skilled in the art will realize that storage devices utilized to store program instructions can be distributed across a network. For example, a remote computer may store an example of the process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively, the local computer may download pieces of the software as needed, or execute some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by utilizing conventional techniques known to those skilled in the art that all, or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.
Any range or device value given herein may be extended or altered without losing the effect sought, as will be apparent to the skilled person. Additionally, aspects of any of the embodiments may be combined with aspects of other embodiments to create further embodiments without losing the effect sought.
It will be understood that the benefits and advantages described above may relate to one embodiment or may relate to several embodiments. It will further be understood that reference to ‘an’ item refer to one or more of those items.
The steps of the methods described herein may be carried out in any suitable order, or simultaneously where appropriate. Additionally, individual blocks may be deleted from any of the methods without departing from the spirit and scope of the subject matter described herein. Aspects of any of the examples described above may be combined with aspects of any of the other examples described to form further examples without losing the effect sought.
It will be understood that the above description of a preferred embodiment is given by way of example only and that various modifications may be made by those skilled in the art. The above specification, examples and data provide a complete description of the structure and use of exemplary embodiments of the invention. Although various embodiments of the invention have been described above with a certain degree of particularity, or with reference to one or more individual embodiments, those skilled in the art could make numerous alterations to the disclosed embodiments without departing from the spirit or scope of this invention.
Number | Name | Date | Kind |
---|---|---|---|
6714787 | Reed et al. | Mar 2004 | B2 |
20060146716 | Lun et al. | Jul 2006 | A1 |
20060146875 | Yang | Jul 2006 | A1 |
20060245442 | Srikrishna et al. | Nov 2006 | A1 |
20060251062 | Jain et al. | Nov 2006 | A1 |
20070066315 | Kado | Mar 2007 | A1 |
20070081603 | Jang et al. | Apr 2007 | A1 |
Number | Date | Country |
---|---|---|
WO 2006071187 | Jul 2006 | WO |
WO 2007008123 | Jan 2007 | WO |
WO2007035462 | Mar 2007 | WO |
Number | Date | Country | |
---|---|---|---|
20090003216 A1 | Jan 2009 | US |