Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
NETWORK CODED MULTIPATH AND RELATED TECHNIQUES
Document Type and Number:
WIPO Patent Application WO/2020/028494
Kind Code:
A1
Abstract:
Techniques are disclosed for adaptive coding and scheduling of packets in wireless networks. The adaptive coding and scheduling can be achieved by utilizing a discrete water filling (DWF) scheme. In an example, a computer-implemented method to adaptively code and schedule packets in a wireless network may include determining number of paths between a sender and a receiver in a multipath (MP) network, determining erasure rates for each path of the paths between the sender and the receiver, and determining a multipath rate. The method may also include determining a coding bucket size based on the multipath rate and determining a multipath delay for the coding bucket size and the erasure rates. In another example, the adaptive coding and scheduling techniques can be applied to a multihop multipath (MM) network.

Inventors:
MEDARD MURIEL (US)
MALAK DERYA (US)
SCHNEUWLY ARNO (CH)
TELATAR EMRE (CH)
Application Number:
PCT/US2019/044346
Publication Date:
February 06, 2020
Filing Date:
July 31, 2019
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
MASSACHUSETTS INST TECHNOLOGY (US)
UNIV NORTHEASTERN (US)
ECOLE POLYTECHNIQUE FED LAUSANNE EPFL (CH)
International Classes:
H04L5/00; H04L1/00; H04L45/24
Other References:
WEIFEI ZENG ET AL: "Joint coding and scheduling optimization in wireless systems with varying delay sensitivities", SENSOR, MESH AND AD HOC COMMUNICATIONS AND NETWORKS (SECON), 2012 9TH ANNUAL IEEE COMMUNICATIONS SOCIETY CONFERENCE ON, IEEE, 18 June 2012 (2012-06-18), pages 416 - 424, XP032223408, ISBN: 978-1-4673-1904-1, DOI: 10.1109/SECON.2012.6275806
WU JIYAN ET AL: "Adaptive Flow Assignment and Packet Scheduling for Delay-Constrained Traffic Over Heterogeneous Wireless Networks", IEEE TRANSACTIONS ON VEHICULAR TECHNOLOGY, IEEE SERVICE CENTER, PISCATAWAY, NJ, US, vol. 65, no. 10, 1 October 2016 (2016-10-01), pages 8781 - 8787, XP011625717, ISSN: 0018-9545, [retrieved on 20161013], DOI: 10.1109/TVT.2015.2504455
CLOUD JASON ET AL: "Multi-Path Low Delay Network Codes", 2016 IEEE GLOBAL COMMUNICATIONS CONFERENCE (GLOBECOM), IEEE, 4 December 2016 (2016-12-04), pages 1 - 7, XP033058735, DOI: 10.1109/GLOCOM.2016.7842012
Attorney, Agent or Firm:
KIM, Do Te et al. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is: 1. A computer-implemented method to adaptively code and schedule packets in a wireless network, the method comprising:

determining number of paths between a sender and a receiver in a multipath (MP) network;

determining erasure rates for each path of the paths between the sender and the receiver;

determining a multipath rate;

determining a coding bucket size based on the multipath rate; and determining a multipath delay for the coding bucket size and the erasure rates. 2. The computer-implemented method of claim 1, wherein determining the multipath delay is by solving a discrete water filling (DWF) formulation. 3. The computer-implemented method of claim 2, wherein a solution to the DWF formulation specifies an allocation of packets in a coding bucket over the paths that minimizes the multipath delay, wherein the coding bucket is of the coding bucket size. 4. The computer-implemented method of claim 1, wherein the multipath rate is a lower bound to the multipath rate assuming that all packets in a coding bucket are transmitted using a worst path with a highest erasure rate, wherein the coding bucket is of the coding bucket size. 5. The computer-implemented method of claim 1, wherein the multipath rate is a current multipath rate, the coding bucket size is a current coding bucket size, and the method further comprising updating the current multipath rate such that the updated current multipath rate is used to optimize the current coding bucket size. 6. The computer-implemented method of claim 5, further comprising: determining an updated coding bucket size based on the updated multipath rate; and

determining a multipath delay for the updated coding bucket size and the erasure rates. 7. The computer-implemented method of claim 6, wherein determining the updated coding bucket size and determining the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges. 8. The computer-implemented method of claim 1, wherein the method of claim 1 is applied to a multihop multipath (MM) network. 9. A computer-implemented method to adaptively code and schedule packets in a wireless network, the method comprising:

determining an erasure rate for each link of a plurality of links between a sender and a receiver in a multihop multipath (MM) network, the MM network including a plurality of hops between the sender and the receiver;

determining combinations of links through the hops between the sender and the receiver;

determining a multihop multipath rate;

determining a coding bucket size based on the multihop multipath rate; and determining a multihop multipath delay for the coding bucket size and the erasure rates. 10. The computer-implemented method of claim 9, wherein determining the multihop multipath delay is by solving a discrete water filling (DWF) formulation, wherein the DWF formulation specifies an optimal path allocation of packets in a coding bucket from the sender to the receiver that maximizes a rate at the receiver, the coding bucket being of the coding bucket size. 11. The computer-implemented method of claim 9, wherein the multihop multipath rate is a current multihop multipath rate, the coding bucket size is a current coding bucket size, and the method further comprising: updating the current multihop multipath rate;

determining an updated coding bucket size based on the updated multihop multipath rate; and

determining a multihop multipath delay for the updated coding bucket size and the erasure rates. 12. The computer-implemented method of claim 11, wherein updating the current multihop multipath rate, determining the updated coding bucket size, and determining the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges. 13. The computer-implemented method of claim 9, wherein the MM network includes a recoded scheme with link-by-link ACK. 14. The computer-implemented method of claim 9, wherein the MM network includes an end-to-end coded scheme with end-to-end ACK. 15. A system to adaptively code and schedule packets in a wireless network, the system comprising:

one or more non-transitory machine-readable mediums configured to store instructions; and

one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums, wherein execution of the instructions causes the one or more processors to determine number of paths between a sender and a receiver in a multipath (MP) network;

determine a multipath rate;

determine a total delay of each path of the paths between the sender and the receiver;

determine a coding bucket size based on the multipath rate; and determine a multipath delay for the coding bucket size and the erasure rates.

16. The system of claim 15, wherein the multipath delay is determined using a discrete water filling (DWF) formulation. 17. The system of claim 16, wherein a solution to the DWF formulation specifies an allocation of packets in a coding bucket over the paths that minimizes the multipath delay, wherein the coding bucket is of the coding bucket size. 18. The system of claim 15, wherein the multipath rate is a lower bound to the multipath rate assuming that all packets in a coding bucket are transmitted using a worst path with a highest erasure rate, wherein the coding bucket is of the coding bucket size. 19. The system of claim 17, wherein the multipath rate is a current multipath rate, the coding bucket size is a current coding bucket size, and execution of the instructions further causes the one or more processors to:

update the current multipath rate;

determine an updated coding bucket size based on the updated multipath rate; and

determine a multipath delay for the updated coding bucket size and the erasure rates. 20. The system of claim 19, wherein update the current multipath rate, determine the updated coding bucket size, and determine the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges.

Description:
NETWORK CODED MULTIPATH AND RELATED TECHNIQUES CROSS-REFERENCE TO RELATED APPLICATION

[0001] This application claims the benefit of and priority to U.S. Provisional Patent Application No. 62/712,428, filed on July 31, 2018, which is herein incorporated by reference in its entirety. BACKGROUND

[0002] Retransmission of lost packets is a capacity-achieving strategy in point-to-point communication under the assumption of perfect feedback, such as the case of lightly congested or highly reliable networks. However, feedback-based schemes are not well-suited to lossy wireless networks. Feedback may be unreliable or delayed in the case of satellite or wireless networks or real-time applications. Furthermore, due to packet congestion, end-to-end retransmissions might be preferred. However, in packet networks, if the links are not reliable enough, feedback may hurt more, and as an alternative, link-by-link retransmissions where packets are routed hop-by-hop toward their destinations, and low link-by-link feedback acknowledgment delay can be a better alternative than end-to-end coding with end-to-end acknowledgment.

[0003] In the case of wireless networks, the amount of required feedback will be huge to achieve reliability in a retransmission-based scheme. Furthermore, end- to-end retransmissions are not suited for multicast connections because there may be many requests that places an unnecessary load on the network. Packet-level coding is an efficient alternative to feedback-based schemes in wireless networks. This feedforward method is capacity-achieving and resilient against erasures in wireless links, which alleviates the need of a great deal of feedback in unreliable channel conditions. Coding over packets can also provide cooperation gains because nodes that are not transmitting packets can assist the nodes that are. Network coding for cost optimal multicast have been studied. Capacity-achieving packet-level coding schemes for unicast and multicast have been proposed.

[0004] Mesh networking aims to provide ubiquitous connectivity and Internet access in urban, suburban, and rural environments, and intelligent transportation systems, with few gateway points, with a flexible deployment. A multi-radio unification protocol for multi-hop networks has been developed to optimize local spectrum usage via intelligent channel selection. Recent studies have shown that WiFi routers are a good alternative to long-distance WiFi links that require high-gain directional antennas and expensive base stations. Using multi-hop paths with stronger links for long backhaul connections may provide better data rates, and possibly be a practical and cost-effective alternative for connectivity. To this end, secure, reliable multi-path routing protocols have been devised and energy-aware routing protocol for multi-hop wireless networks have also been developed. It has been also verified that unlike hierarchical cooperation and distributed multiple-input and multiple-output (MIMO) communication in dense networks, multi-hop can achieve better capacity scaling. Multi-path scheduling has been studied in different contexts. Although a low delay scheduling mechanism for a sliding window protocol has been proposed, coding has been implemented only over one channel. A random linear network coding (RLNC) based simulation scheme for low delay 2- path scheme has been developed, however, the effect of recoding has not been studied.

[0005] Although urban areas with high-capacity demands have very high revenue potential, with 60% of global population in rural environments, it is required to explore cheaper alternatives. With the use of low-cost and high-speed WiFi technology, plug-and-play type small cells, flexible and programmable software defined networks, and hardware sharing possibilities of these equipment and functional virtualization, digital divide between urban and rural scenarios can be bridged. Since the main bottleneck in rural areas is connectivity, and the network has to be scalable over large areas and physical links, it makes sense to start from investigating the efficiency of multi-hop line networks in terms of throughput and end-to-end delays. This baseline can pave the way for investigating the performance of lightly congested mesh networks. SUMMARY

[0006] This Summary is provided to introduce a selection of concepts in simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key or essential features or combinations of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.

[0007] The concepts, systems, and techniques described herein are directed toward adaptive coding and scheduling of packets in wireless networks, such as delay constrained wireless networks. In some embodiments, the adaptive coding and scheduling can be achieved by exploiting the delay sensitivity of the receiver, for example, by adaptively adjusting a coding bucket size based on the sensitivity of the receiver. In some such embodiments, the adaptive coding and scheduling can be achieved by utilizing a discrete water filling (DWF) scheme (technique).

[0008] According to one illustrative example embodiment, a computer- implemented method to adaptively code and schedule packets in a wireless network may include determining number of paths between a sender and a receiver in a multipath (MP) network, determining erasure rates for each path of the paths between the sender and the receiver, determining a multipath rate, determining a coding bucket size based on the multipath rate, and determining a multipath delay for the coding bucket size and the erasure rates.

[0009] According to one illustrative example embodiment, a computer- implemented method to adaptively code and schedule packets in a wireless network may include determining an erasure rate for each link of a plurality of links between a sender and a receiver in a multihop multipath (MM) network, the MM network including a plurality of hops between the sender and the receiver. The method may also include determining combinations of links through the hops between the sender and the receiver, determining a multihop multipath rate, determining a coding bucket size based on the multihop multipath rate, and determining a multihop multipath delay for the coding bucket size and the erasure rates.

[0010] According to one illustrative example embodiment, a system to adaptively code and schedule packets in a wireless network includes one or more non-transitory machine-readable mediums configured to store instructions and one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums. Execution of the instructions may cause the one or more processors to determine number of paths between a sender and a receiver in a multipath (MP) network, determine erasure rates for each path of the paths between the sender and the receiver, determine a multipath rate, determine a coding bucket size based on the multipath rate, and determine a multipath delay for the coding bucket size and the erasure rates.

[0011] According to one illustrative example embodiment, a system to adaptively code and schedule packets in a wireless network includes one or more non-transitory machine-readable mediums configured to store instructions and one or more processors configured to execute the instructions stored on the one or more non-transitory machine-readable mediums. Execution of the instructions may cause the one or more processors to determine an erasure rate for each link of a plurality of links between a sender and a receiver in a multihop multipath (MM) network, the MM network including a plurality of hops between the sender and the receiver. Execution of the instructions may also cause the one or more processors to determine combinations of links through the hops between the sender and the receiver, determine a multihop multipath rate, determine a coding bucket size based on the multihop multipath rate, and determining a multihop multipath delay for the coding bucket size and the erasure rates. BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The foregoing and other objects, features and advantages will be apparent from the following more particular description of the embodiments, as illustrated in the accompanying drawings in which like reference characters refer to the same parts throughout the different views. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the embodiments.

[0013] Fig. 1 illustrates an example adaptive coding and scheduling in a multipath (MP) setting, in accordance with an embodiment of the present disclosure.

[0014] Fig.2 illustrates an example operation of a DWF packet scheduler for the multipath (MP) packet allocation of Fig. 1, in accordance with an embodiment of the present disclosure.

[0015] Fig.3 is a flow diagram illustrating an example process to adaptively code and allocate packets in a multipath (MP) setting, in accordance with an embodiment of the present disclosure. [0016] Fig. 4A illustrates an example adaptive coding and scheduling in a multihop multipath (MM) setting with recoding at intermediate nodes, in accordance with an embodiment of the present disclosure.

[0017] Fig. 4B illustrates an example adaptive coding and scheduling in a multihop multipath (MM) setting without recoding at intermediate nodes, in accordance with an embodiment of the present disclosure.

[0018] Fig.5 is a flow diagram illustrating an example process to adaptively code and allocate packets in a multihop multipath (MM) setting, in accordance with an embodiment of the present disclosure.

[0019] Fig. 6 illustrates selected components of an example computing device that may be used to perform any of the techniques as variously described in the present disclosure, in accordance with an embodiment of the present disclosure. DETAILED DESCRIPTION

[0020] Techniques are disclosed for adaptive coding and scheduling of packets in wireless networks, such as delay constrained wireless networks. The adaptive coding and scheduling schemes are particularly suited for optimizing the delay cost of the end user in a wireless network. This can be achieved by exploiting the delay sensitivity of the receiver, for example, by adaptively adjusting a coding bucket size based on the sensitivity of the receiver.

[0021] In accordance with some embodiments, the adaptive coding and scheduling scheme described herein may be implemented by a multipath (MP) packet scheduler for MP networks. The MP packet scheduler is configured to schedule the sending of packets such that the in-order delivery time across the multiple paths available between consecutive hops is minimized or effectively minimized. The minimization (or effective minimization) of the in-order delivery time across the multiple paths is achieved by utilizing a discrete water filling (DWF) scheme (technique) for balanced allocation of packets across the different multiple paths. In this manner, the MP packet scheduler can leverage the multiple logical or physical paths available in a point-to-point link. Thus, the various embodiments of the adaptive coding and scheduling scheme incorporate coding and DWF schemes to minimize in-order delivery time. [0022] In an embodiment, the adaptive coding and scheduling scheme for MP networks can be applied to multihop (MH) networks. An example of a multihop multipath (MM) network is where, for instance, each link (sometimes referred to as a hop) in the network has one or more different paths. In such embodiments, the adaptive coding and scheduling scheme determines the optimal path allocation from a sender (e.g., transmitting node) to a receiver (e.g., receiving node) that maximizes the rate at the receiver. In the case of recoding (i.e., intermediate nodes recode and forward packets), the maximum rate at the receiver is determined from the water filling rate of the bottleneck link (i.e., the link in the MM network with the lowest water filling rate among all hops). These and other advantages and alternative embodiments will be apparent in light of this disclosure.

[0023] The following introductory concepts and terminology are described to facilitate and otherwise assist in understanding the various embodiments of the adaptive coding schemes described in this disclosure. In one example use case, assume that a sender (Tx) and a receiver (Rx) are connected by a point-to-point wireless erasure channel, and the sender wants to transmit a flow f composed of N packets to the receiver. Also assume that all data packets are available at the sender prior to any transmission of the packets by the sender. At the sender, a coding bucket is created that functions as a head of the line (HOL) generation. To encode, the sender can sequentially partition the N packets into generations where M is the number of generations. Note that the generation may have different numbers of packets. Given the bucket size at a time slot ^, the sender can read the HOL generation where h is the generation index

and K is the number of packets in the bucket. In an example embodiment, the sender can generate a coded packet as a linear combination of all packets in

as follows: where is the coding coefficient vector, which is uniformly chosen at random from the space over some finite field

[0024] The receiver collects (e.g., receives) the coded packets over time. If q is large enough, the receiver can decode the K packets with high probability. The receiver can then send an ACK (e.g., an ACK message) via a feedback link to the sender, which is successfully received by the sender after D time slots. Upon receiving the ACK, the sender moves to a new HOL generation by adjusting K adaptively based on the receiver delay constraints.

[0025] In the example use case, the receiver can buffer the packets to ensure in-order final delivery of N packets of flow f. For example, as an illustration, consider a transmission of a bucket of K packets . Once the receiver

obtains K linearly independent coded packets of the bucket, the receiver can decode all K packets together. Upon decoding the K packets, the receiver can send an ACK to the sender, which is always received correctly in D time slots. When informed (e.g., upon receiving the ACK from the receiver), the sender empties the coding bucket and moves K new packets sequentially into the coding bucket.

[0026] In an embodiment, since all packets in ^ are decoded together at the receiver, the final in-order inter-arrival time slot at the sender satisfies D

Here, is the final in-order delivery time slot in which

the ^ original packet is decoded at the receiver, and is the final in-order delivery

time in which the ^ packet in the bucket (i.e., the original data packet) is decoded at the receiver. More specifically, the final in-order inter-arrival time slot ^ is given by the following relation:

[0027] Assuming a packet erasure probability of the forward link, the transmission rate of the coded packets is , and the expected time to receive K linearly independent coded packets is . Hence, the average value of

ordered interarrival time for the packet in bucket can be defined by following

expectation relation: where the expectation is taken over the distribution of packet erasures over the system and all the randomness associated with the coding and scheduling scheme. [0028] As an example, consider the case when the packet injection process is a renewal process where a renewal occurs with probability at time slot . In this case, the time between the final in-order delivery time slots ^ ^^ for in coding bucket are independent and identically

distributed (i.i.d) geometrically distributed random variables with success probability

[0029] In an embodiment, a delay metric is devised to exploit the delay sensitivity of the receiver. In such embodiments, the delay metric can be devised as a function of the in-order delivery time of the flow f. For example, considering the lp-norm of the sequence of i.i.d geometric random variables

the delay cost function can be defined by the relation:

where L is the size of each data packet and ^ models the delay sensitivity of the receiver. It will be appreciated in light of this disclosure that this metric can be determined from the type of applications running on the receiver. For example, if a user is downloading a file, the user (the receiver) may be more concerned about shortening the overall completion time. However, if the user running a real-time application, such as a real-time video application or a real-time gaming application, then the user may be more sensitive to the maximum inter-arrival time between two packets. Applying equation (3), when which is the

average delay per packet, normalized by the total size of the received data ^ Hence, minimizing is equivalent to maximizing the throughput of the

system. When which is the maximum expected

inter-arrival time between any two successive packets or the per-packet delay. Hence, minimizing is equivalent to minimizing per-packet delay. Lower and upper bounds for can be determined since the value of ^[‖^^‖ ^ ] is not known

[0030] In the case of a sequence of i.i.d geometric random variables ^ =

, the expected value of is not known for In such cases, known bounds (such as lower and upper bounds) can be determined and used to approximate ^ For example, when

where (a) is due to the Jensen’s inequality.

[0031] In an embodiment, a bounding technique to approximate assumes a case where the feedback delay is zero and the generation size K is identical for all buckets. In such cases, the inter-arrival times of the original packets in the bucket are i.i.d geometrically distributed random variables with success probability The sum of K i.i.d variables for coding bucket ^

which is a negative Binomial random variable, can be defined by the relation: [0032] In the case where ) is the maximum delay among

all buckets and has the same distribution as ^ the average delay per

coding bucket is for each ^, and is the average value for the maximum of these delays. From convexity of the maximum function, the lower bound for can be defined by the relation: [0033] Applying Holder’s inequality, an upper bound on for approximating ^ can be defined by the relation:

where (a) is due to letting which results in

because

when and (b) follows

from being concave when d . Hence, applying Jensen’s inequality, and inserting

Applying relation (7), an upper bound on ^ ^ can be defined by the relation:

[0034] Note that if X is geometrically distributed with parameter ^, its moments satisfy the condition for Thus, applying

relation (8), the upper bound ^ ^ (¥) can be defined by the relation: It will be appreciated that, unlike relation (8), upper bound relation (9) can be readily computed for

[0035] Consider an example case where the delay cost function is defined by the relation: In delay cost function (10), when , which is the average

delay per packet When ^

, , which is indeed a lower bound to the per packet delay that is due to Jensen’s inequality as

explained above. Using and applying relation (10), the bucket size K can be defined by the relation: [0036] If the adaptive coding scheme selects or otherwise determines a bucket size of K for a flow of N packets, the delay cost in relation (10) can be simplified as: where K is assumed to be in the region where s the maximum bucket

size. Note that the limiting assumption is justifiable through the maximum computation complexity that can be handled by the target system. Applying relations (11) and (12), the trade-off between and can be defined by the

relation: [0037] The optimal block size ^ * that minimizes ^(^) for a point-to-point link model can be defined by the relation: where ( ≜ min(max(

[0038] Note that the tail probability for the delay per bucket satisfies

, where ^ 1 This implies that, when

the bucket size K is large enough, concentrates well around its mean. It

follows then and using the independence of the bucket delays, the maximum delay among all buckets ^ ^ satisfies the relation

where Similar to ^ concentrates around its mean

by choosing a bucket size that is sufficiently large.

Adaptive Coding and Scheduling in a Multipath (MP) Setting [0039] Fig. 1 illustrates an example adaptive coding and scheduling in a multipath (MP) setting, in accordance with an embodiment of the present disclosure. As can be seen, the illustrated example is of a MP point-to-point network between a sender node (Tx) and a receiver node (Rx). In particular, a generation of five packets (K = 5) in the coding bucket sent by the sender to the receiver over this link are transmitted over four paths, where each path is modeled as an erasure channel having distinct packet erasure rates Upon successfully receiving and decoding the generation of five packets transmitted by the sender, the receiver sends an ACK via a feedback link to the sender. For clarity, the feedback link is assumed to be noiseless in that any noise that may be present on the link is negligible because of the cumulative feedback. Note also that the feedback is not erased, and is received by the sender in D time units (i.e., within D feedback delay). As previously explained, the receiver decodes the packets in the generation together (e.g., the five packets in the generation are decoded together). Upon receiving the ACK, the sender empties the coding bucket (e.g., removes the five packets currently in the coding bucket) and moves new packets sequentially into the coding bucket.

[0040] In such embodiments, to transmit the generation of five packets (e.g., the packets in the coding bucket) to the receiver, the sender distributes the packets to the four paths such that the delay until a successful reception of the generation by the receiver is minimized. To this end, in an embodiment, the sender utilizes a DWF optimization scheme to determine the scheduling of the packets in the coding bucket over the available paths to minimize the overall delay over the four paths. The DWF optimization problem provides a solution that defines one possible realization of the allocation of the packets over the available paths. In the illustrative example, as can be seen in Fig. 1, the DWF scheme may have provided a realization whereby the sender transmits packets 1 and 3 (i.e., and over the

path having erasure rate , packet over the path having erasure rate

packet 4 over the path having erasure rate , and packet

over the path having erasure rate Note that, as can be seen, the sender can

transmit a packet multiple times over the same path based on, for example, the erasure rate of the path to ensure successful reception of the packet by the receiver. Also note that each transmitted packet may be a coded packet (e.g., a linear combination of the packets in the generation). Further note that the coded packets may be the same or a different linear combination of the packets in the generation. [0041] In a more general sense, in a MP setting, the packets over a point-to- point link between a sender and a receiver are transmitted over paths defined in the set A generation of K packets (e.g.,

packets in a coding bucket) can be transmitted over the ^ paths. Each path is modeled as a packet erasure channel having different packet erasure rates ^ ^ as defined Here, a matrix can define random variables, where specifies the number of transmissions needed to successfully transmit packet to the receiver over path Ϛ ^ . In an embodiment, the packet transmissions on the different paths are concurrent and independent, wherein The delivery time ^ ^ of the allocated packets over an individual path Ϛ ^ is a sum of geometric random variables ^ ^ =

. Here, binary matrix of packet allocations over the

different paths. Note that, as has a negative binomial

distribution. In embodiments, an objective of the adaptive coding and scheduling scheme disclosed herein is to distribute the packets to the different paths such that the delivery time until a successful reception of a generation is minimized. Note that the path having the maximum total transmissions for its scheduled packets (i.e., the slowest path) determines the delay. That is, the slowest path determines the final in-order MP delivery time of the packets within the

scheduled generation. To this end, in an embodiment, the scheduling of the packets in the generation is done in a manner as to minimize

[0042] Note that the total number of scheduled packets on path Ϛ ^ is ^ ^ =

As K packets in a generation (e.g., K packets in a coding bucket) are

scheduled, it follows tha , and the scheduling of the K packets can be

defined by the following min-max integer optimization problem:

which is a nonlinear optimization problem with 0-1 integer variables and linear constraints. It will be appreciated that this class of problems has been shown to be NP-complete. Hence, there is no known efficient method to solve min-max integer optimization problem (15). Accordingly, the adaptive coding and scheduling scheme disclosed herein uses an approximation for the objective of the MinDelay problem (min-max integer optimization problem (15)).

[0043] In an embodiment, Jensen’s inequality is applied to min-max integer optimization problem (15) to obtain a closed form lower bound of objection function as follows: where the average delivery time over path

[0044] The closed form relation (16) can be applied to the MinDelay optimization problem (15) to generate a discrete water filling (DWF) problem as follows:

where In the DWF formulation (17), the packet allocation balances the total number of transmissions required per path. That is, the packet allocation balances the filling of different paths to achieve an equalized number of transmissions among all paths. Note that, implicitly, the delay of the delay maximizing path is minimized.

[0045] Note that, for a given ^ and bucket size K, a DWF packet scheduler can compute the number of packets allocated for each path, given by ^ and the MP delivery time is the optimal solution of DWF

formulation (17). Stated differently, for a given ^ and bucket size K, the DWF packet scheduler can compute the number of packets allocated for each path, given by ^ and the MP delay is the optimal solution of the

DWF formulation

[0046] The MP receiver rate can be defined by the relation and

the theoretical DWF MP capacity ^ ^ can be defined by the relation

^ . Note that the optimization of DWF formulation (17) can be solved efficiently

(the maximum K for a given delay can be defined by the relation

where Hence, the optimal delivery time for a

given K can be found through a search on the interval ^

[0047] Fig.2 illustrates an example operation of a DWF packet scheduler for the multipath (MP) packet allocation of Fig. 1, in accordance with an embodiment of the present disclosure. The example illustration in Fig. 2 is one solution (realization) of the DWF formulation (17). In particular, Fig. 2 illustrates the mechanism of the DWF packet scheduler for a point-to-point link with ^ = 4 paths. The DWF scheduler determines the number of packets to schedule per path and the average number of transmission slots from or otherwise based on a solution of the DWF formulation .

[0048] In more detail, as can be seen in Fig. 2, path has the indicated erasure probability (which implies a success probability or transmission rate of , path Ϛ has the indicated erasure probability ¤ (which

implies a success probability or transmission rate of path ^ has the indicated erasure probability (which implies a success probability or

transmission rate of ^ ), and path Ϛ ^ has the indicated characteristic erasure probability (which implies a success probability or transmission rate of ^ Based on the respective erasure probabilities of the four paths and the coding bucket size , the solution of the DWF formulation (17) specifies an optimal distribution of the five packets in flow ^ over the four paths. In the illustrated example of Fig.2, the optimization specifies the following scheduling of the transmission of the five packet: packets and to be transmitted over

path packet to be transmitted over path Ϛ ^ , packet ^ to be transmitted over

path Ϛ ^ , and packet o be transmitted over path

[0049] Still referring to the illustrative example of Fig.2, as can be seen, the x-axis denotes the delay ^ in units of time slots. Based on the respective erasure rates of the paths, DWF packet scheduler codes packet and transmits coded

packet two times over path to ensure reception by the receiver. DWF packet scheduler also codes packet and transmits coded packet two times over path

to ensure reception by the receiver. For example, as can be seen in Fig.2, DWF packet scheduler transmits coded packet twice, once at time slot 5 and again at time slot 4, and also transmits coded packet ^ twice, once at time slot 3 and again

at time slot 2. In like manner, DWF packet scheduler transmits coded packet three times (once at time slot 5, once at time slot 4, and again at time slot 3), transmits coded packet four times (once at time slot 5, once at time slot 4, once at time slot 3, and again at time slot 2), and transmits coded packet ^ five times (once at time slot 5, once at time slot 4, once at time slot 3, once at time slot 2, and again at time slot 1). It will be appreciated in light of this disclosure that the solution of the DWF formulation (17) does not specify a distribution of packets over the paths that exceeds the coding bucket size K.

[0050] Note that the solution of the DWF formulation (17) does not explicitly impose a packet delivery order. Also note that, despite the logical sequential packet scheduling as suggested by the indications in Fig. 2, the in-order

delivery of the packets cannot be guaranteed due to actual channel realizations and lack of perfect synchronization, for example. By applying the adaptive coding and scheduling scheme (i.e., coding the K packets and distributing the packets accordingly as specified by the solution of the DWF formulation (17)), the DWF packet scheduler incorporates forward error correction where the receiver acknowledges degrees of freedom of the current generation. Also note that the transmitted coded packets may be the same or a different linear combination of the packets ( of the transmitted generation.

[0051] For delay constrained MP scheduling, since ^ defines the final in-

order delivery of the K coded packets, the rate ^ in expectation relation (2) above can be substituted with which results in the delay cost function

[0052] Fig. 3 is a flow diagram illustrating an example process 300 to adaptively code and allocate packets in a multipath (MP) setting, in accordance with an embodiment of the present disclosure. The operations, functions, or actions illustrated in example process 300 may in some embodiments be performed by an MP packet scheduler to implement adaptive coding and scheduling based on a DWF scheme. The operations, functions, or actions described in the respective blocks of example process 300 may also be stored as computer-executable instructions in a non-transitory computer-readable medium, such as a memory 608 and/or a data storage 610 of a computing device 600, which will be further discussed below. In some instances, process 300 may be implemented as program instructions 612 and executed by components of computing device 600.

[0053] As will be further appreciated in light of this disclosure, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Additionally or alternatively, two or more operations may be performed at the same time or otherwise in an overlapping contemporaneous fashion. Furthermore, the outlined actions and operations are only provided as examples, and some of the actions and operations may be optional, combined into fewer actions and operations, or expanded into additional actions and operations without detracting from the essence of the disclosed embodiments.

[0054] In brief, example process 300 implements an iterative approach to optimize the delay cost defined by relation (12) with the multipath DWF formulation defined by relation (17). In process 300, the optimal coding bucket size ^ is increased during the first iterations. This is because the process is initialized with the best single path solution. Using all available ^ paths to transmit ^ packets can lead to a rate increase. For instance, a higher rate implies that more packets are transmitted under the same delay constraint. Hence, the optimal coding bucket size ^ for a given sensitivity ^ increases. Once all paths are leveraged, the minimum delay for the given sensitivity ^ grows proportionally with . However, the rate remains approximately the same as all paths are optimally leveraged in the water filling sense.

[0055] With reference to example process 300 of Fig.3, at operation 302, a loop index (^) is initialized. The loop index maintains a count of the iterations through process 300 and, in particular, operations 308 through 312, which optimize the size of the coding bucket (^) with respect to a delay sensitivity ^. For example, in some implementations, the value of ^ (the size of the coding bucket) can be iteratively optimized and the DWF formulation (17) solved at each iteration to obtain an optimal distribution for each determined value of ^. It will be appreciated in light of this disclosure that, in the case of a single path, the iterations are not needed (e.g., not performed).

[0056] At operation 304, the number of paths (^) and corresponding erasure rates for each path are determined. The number of paths and

the corresponding erasure rates for each path are used in determining the multipath rate for the MP network.

[0057] At operation 306, a multipath rate is determined to bootstrap the process. The multipath rate can be determined to be a lower bound to the

multipath rate assuming that all the packets in the coding bucket are transmitted using the worst path with the highest erasure rate In one example

implementation, the multipath rate can be the best single path rate. Note that

the multipath rate determined at operation 306 is used one time as an initial rate

to determine a coding bucket size.

[0058] At operation 308, a coding bucket size is determined. The size of the coding bucket can be determined using relation (14) with the multipath rate

[0059] At operation 310, the multipath delay for the current coding bucket size is determined. The multipath delay can be determined by solving the DWF formulation (17). The solution to the DWF formulation (17) specifies a packet allocation over the available paths that minimizes the multipath delay for the given erasure probabilities and coding bucket size That is, for a current coding bucket size ^ and multipath rate the solution of the DWF formulation (17) specifies an optimal distribution of the packets over the available paths that maximizes the multipath rate .

[0060] At operation 312, the multipath rate is updated. The multipath rate

can be updated based on the current coding bucket size and the multipath

delay . The DWF formulation (17) provides an updated multipath delay for the bucket size ^. For example, in some implementations, the multipath delay ^ ^^ can be updated according to the current bucket size ^ / erasure rates. Also, in some cases, the bucket size ^ can be updated according to a given multipath delay ^ ^^ / a specified delay requirement. The updated multipath rate ^ ^^ can then be used to determine an updated coding bucket size ^ in the next iteration of process 300.

[0061] In some embodiments, operations 308-312 can be repeated to optimize the coding bucket size ^ and to determine an optimal allocation of packets over the available paths for a current coding bucket size ^ at each iteration. In such embodiments, operations 308-312 can be iterated until the value of ^ (the size of the coding bucket) converges, which is an indication of the minimization of the worst-case end-to-end delay for a given delay sensitivity ^. Adaptive Coding and Scheduling in a Multihop Multipath (MM) Setting [0062] In general, a multihop (MH) network can be composed of ^ links in tandem, and 1 nodesℎ, wherein node is connected to node through the erasure link. Here, node 0 denotes the sender (Tx) and node ^ denotes the receiver (Rx). The probability of transmission failure (i.e., the erasure rate) on linkℎ is ^

[0063] In one example use case, assume that the erasure rate of each link is independent of the other links. Also assume that the average delay per hop is In this example case, given the number of hops ^, and the delay per hop the total delay of the feedback can be defined by the relation

and its average value can be defined by the relation

The bucket size for each transmitter node is

assumed to be the same and is denoted by Note that MH networks can have different coded transmission and acknowledgement schemes.

[0064] In an MH recoded scheme with end-to-end ACK, the sender codes and each intermediate node recodes and forwards. Since the sender codes and each intermediate node recodes, applying the max-flow min-cut theorem, the rate at which the coded packets is transmitted can be defined by the relation

, , The value of for the MH recoded scheme with end-to-end ACK can be defined by the relation:

[0065] Applying the bucket size relation (11) above, the bucket size for the MH recoded scheme with end-to-end ACK can be defined by the relation:

Applying relations (18) and (19), the maximum per-packet delay for the MH recoded scheme with end-to-end ACK can be defined by the relation: Note that the maximum per-packet delay for the MH recoded scheme with end-to- end ACK scales with the number of hops, and the tradeoff between and ^ is sharper than the tradeoff in the point-to-point case given by relation (13) above.

[0066] In an MH recoded scheme with link-by-link ACK, the sender codes and the intermediate nodes recode and forward. Since the sender codes and the intermediate nodes recode, the rate at the receiver can be defined by the relation Note that in the MH recoded scheme with link-by-link

ACK. The ACK from each hop to the previous hop is always received correctly after D time slots. The total average delay of the feedback is the same as the delay for the MH recoded scheme with end-to-end ACK. Thus, the value of ^(^) for the MH recoded scheme with link-by-link ACK can be computed using relation (18) above.

[0067] In an MH end-to-end coded scheme with end-to-end ACK, the sender codes and no recoding is performed at the intermediate nodes. Therefore, the links can be treated independently of each other. Such an MH network may be considered as a point-to-point link with an effective rate of

which is bounded above by the cut-set bound. Hence, the MH end-to-end coded scheme with end-to-end ACK may not achieve the capacity.

[0068] Applying the bucket size relation (11) above, the bucket size for the MH end-to-end coded scheme with end-to-end ACK can be defined by the relation: Given the total delay of the feedback ^ ^ , and exploiting the tradeoff between ^(1) and ^(¥) in the point-to-point case given by relation (13) above, the maximum per- packet delay for the MH end-to-end coded scheme with end-to-end ACK can be defined by the relation: A comparison of the maximum per-packet delay for the MH end-to-end coded scheme with end-to-end ACK (relation (22)) with the maximum per-packet delay for the MH recoded scheme with end-to-end ACK (relation (20)) shows that the effective rate is relatively smaller (and even much smaller) for the MH end-to-end coded scheme. As a result, the tradeoff between ^ ( ¥ ) and ^ ( 1 ) is sharper for the end-to-end coded model.

[0069] In accordance with some embodiments disclosed herein, the DWF scheme for MP networks disclosed herein is applied to MH networks to provide a DWF scheme for multihop multipath (MM) networks. In one such example embodiment, a H-hop MM network, where each link has Z different paths, can be considered. In this example case, the packet loss probabilities can be represented in a matrix ^. In the matrix, each row represents a link with the corresponding paths represented by the columns. The link-to-link MP rate at the receiver can be defined by the relation: where is the water filling MP rate for linkℎ. The end-to-end MP rate can be

defined as . In the MM DWF scheme, the Z paths over the H links are selected

over all combinatorial possibilities such that the water filling MP rate is maximized.

[0070] By way of an example, consider a MM network with three hops where each link has three different paths, as illustrated in Figs.4A and 4B. In this example, example packet loss probabilities can be as follows: [0071] In the end-to-end coded scheme (e.g., MM end-to-end coded scheme), for a given K, the DWF scheme provides a solution that maximizes the rate at the receiver (Rx). That is, the DWF solution specifies an optimal path allocation from the sender (Tx) to the receiver (Rx) that maximizes the rate at the receiver (Rx). In the recoded scheme (e.g., MM recoded scheme), the water filling rate of the bottleneck link (i.e., the link with the lowest water filling rate among all hops), determines the maximum rate.

[0072] As shown in Fig.4A, in the illustrated example of the recoded scheme, each line style (solid line, fine dashed line, and course dashed line) visualizes a water filling solution for each hop (e.g., the path with The DWF formulation specifies an optimal distribution of the packets in K over each link such that the water filling rate of the bottleneck link is maximized.

[0073] As shown in Fig. 4B, in the illustrated example of the end-to-end coded scheme, based on the packet loss probabilities and K, a first possible path (first possible end-to-end combination) over the three hops is the sequence of links having packet loss probabilities (as visualized by the fine dashed lines),

a second possible path (second possible end-to-end combination) over the three hops is the sequence of links having packet loss probabilities (as

visualized by the solid lines), and a third possible path (third possible end-to-end combination) over the three hops is the sequence of links having packet loss probabilities (as visualized by the course dashed lines). The solution of

the DWF formulation specifies an optimal distribution of the packets in K over the first, second, and third paths that maximizes the rate at the receiver (Rx).

[0074] Fig. 5 is a flow diagram illustrating an example process 500 to adaptively code and allocate packets in a multihop multipath (MM) setting, in accordance with an embodiment of the present disclosure. The operations, functions, or actions illustrated in example process 500 may in some embodiments be performed by a packet scheduler for MM to implement adaptive coding and scheduling based on a DWF scheme. The operations, functions, or actions described in the respective blocks of example process 500 may also be stored as computer-executable instructions in a non-transitory computer-readable medium, such as memory 608 and/or data storage 610 of computing device 600, which will be further discussed below. In some instances, process 500 may be implemented as program instructions 612 and executed by components of computing device 600.

[0075] With reference to example process 500 of Fig.5, at operation 502, a loop index (^) is initialized. The loop index maintains a count of the iterations through process 500 and, in particular, operations 508 through 512, which optimize the size of the coding bucket (^). For example, in some implementations, the value of K (the size of the coding bucket) can be iteratively optimized and the DWF formulation (17) solved at each iteration to obtain an optimal distribution for each determined value of K.

[0076] At operation 504, the erasure rates for each link in the multihop multipath (MM) network is determined. As will be appreciated in light of this disclosure, the MM network may be an end-to-end MM network or a link-by-link MM network.

[0077] At operation 506, a multihop multipath rate is determined to bootstrap the process. For example, in the case of an end-to-end MM network, the multihop multipath rate r mm can be defined using the best single path end-to-end solution. In the case of a link-to-link MM network, the multihop multipath rate ^ ^^ can be defined using the best single path link-to-link solution. Note that the multihop multipath rate r mm determined at operation 506 is used one time as an initial rate to determine a coding bucket size.

[0078] At operation 508, a coding bucket size (^) is determined. The size of the coding bucket K. can be determined using relation (14) with the multihop multipath rate

[0079] At operation 510, the multihop multipath delay for the current coding bucket size is determined. The multi multipath delay can be

determined by solving the DWF formulation (17). For example, in the case of end- to-end MM network, the end-to-end MP rate can be defined as . In the MM DWF scheme, the Z paths over the H links are selected over all combinatorial possibilities such that the water filling MP rate is maximized. In other words, the rate for the best DWF solution of all possible path combinations is used. In the case of recoded and link-to-link MM network, the link-to-link MP rate at the receiver can be defined using relation (23). That is, a local DWF solution is computed or otherwise determined at each hop in the MM network. The maximized rate (or the minimized MM delay - the problems are equivalent) specifies an optimal path allocation of the packets from the sender (Tx) to the receiver (Rx) that maximizes the rate at the receiver (Rx) for the given erasure probabilities and coding bucket size ^ (i.e., the current coding bucket size

[0080] At operation 512, the multihop multipath rate is updated. The

multihop multipath rate can be updated based on the current coding bucket

size and the multihop multipath delay . The updated multihop multipath rate can then be used to determine an updated coding bucket size ^ in the next

iteration of process 500.

[0081] In some embodiments, operations 508-512 can be repeated to optimize the coding bucket size ^ and to determine an optimal allocation of packets from the sender to the receiver for a current coding bucket size ^ at each iteration. In such embodiments, operations 508-512 can be iterated until the value of ^ (the size of the coding bucket) converges, which is an indication of the minimization of the worst-case delay.

[0082] Fig. 6 illustrates selected components of an example computing device 600 that may be used to perform any of the techniques as variously described in the present disclosure, in accordance with an embodiment of the present disclosure. In various implementations, computing device 600 may be a network system or a network node. As shown in Fig. 6, computing device 600 includes a processor 602, an operating system 604, an interface module 606, memory 608, and data store 610. Processor 602, operating system 604, interface module 606, memory 608, and data store 610 may be communicatively coupled. In various embodiments, additional components (not illustrated, such as a display, communication interface, input/output interface, etc.) or a subset of the illustrated components can be employed without deviating from the scope of the present disclosure.

[0083] Processor 602 may be designed to control the operations of the various other components of computing device 600. Processor 602 may include any processing unit suitable for use in computing device 600, such as a single core or multi-core processor. In general, processor 602 may include any suitable special- purpose or general-purpose computer, computing entity, or computing or processing device including various computer hardware, or firmware, and may be configured to execute instructions, such as program instructions, stored on any applicable computer-readable storage media. For example, processor 602 may include a microprocessor, a central processing unit (CPU), a microcontroller, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a Field-Programmable Gate Array (FPGA), Complex Instruction Set Computer (CISC), Reduced Instruction Set Computer (RISC), multi core, or any other digital or analog circuitry configured to interpret and/or to execute program instructions and/or to process data, whether loaded from memory or implemented directly in hardware. Although illustrated as a single processor in Fig.7, processor 602 may include any number of processors and/or processor cores configured to, individually or collectively, perform or direct performance of any number of operations described in the present disclosure.

[0084] Operating system 604 may comprise any suitable operating system, such as UNIX ® , LINUX ® , MICROSOFT ® WINDOWS ® (Microsoft Crop., Redmond, WA), GOOGLE ® ANDROID™ (Google Inc., Mountain View, CA), APPLE ® iOS (Apple Inc., Cupertino, CA), or APPLE ® OS X ® (Apple Inc., Cupertino, CA). As will be appreciated in light of this disclosure, the techniques provided herein can be implemented without regard to the particular operating system provided in conjunction with computing device 600, and therefore may also be implemented using any suitable existing or subsequently developed platform. Computer instructions of operating system 604 may be stored in data store 610. Processor 602 may fetch some or all of computer instructions of operating system 604 from data store 610 and may load the fetched computer instructions in memory 608. Subsequent to loading the fetched computer instructions of operating system 604 into memory 608, processor 602 may execute operating system 604.

[0085] In some embodiments, processor 602 may be configured to interpret and/or execute program instructions and/or process data stored in memory 608, data store 610, or memory 608 and data store 610. In some embodiments, processor 602 may fetch program instructions from data store 610 and load the program instructions in memory 608. After the program instructions are loaded into memory 608, processor 602 may execute the program instructions.

[0086] For example, in some embodiments, program instructions 612 cause computing device 600 to implement functionality (e.g., process 300 and/or process 500) in accordance with the various embodiments and/or examples described herein. Processor 602 may fetch some or all of program instructions 612 from data store 610 and may load the fetched program instructions 612 in memory 608. Subsequent to loading the fetched program instructions 612 into memory 608, processor 602 may execute program instructions 612 such that packets for transmission are adaptively coded and scheduled as variously described herein.

[0087] Communication module 606 can be any appropriate network chip or chipset which allows for wired or wireless communication via a network, such as, by way of example, a local area network (e.g., a home-based or office network), a wide area network (e.g., the Internet), a peer-to-peer network (e.g., a Bluetooth connection), or a combination of such networks, whether public, private, or both. Communication module 606 can also be configured to provide intra-device communications via a bus or an interconnect.

[0088] Memory 608 may include computer-readable storage media configured for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable storage media may include any available media that may be accessed by a general-purpose or special-purpose computer, such as processor 602. By way of example, and not limitation, such computer-readable storage media may include non-transitory computer-readable storage media including Random Access Memory (RAM), Dynamic Random Access Memory (DRAM), Synchronized Dynamic Random Access Memory (SDRAM), Static Random Access Memory (SRAM), non-volatile memory (NVM), or any other suitable storage medium which may be used to carry or store particular program code in the form of computer-executable instructions or data structures and which may be accessed by a general-purpose or special-purpose computer. Combinations of the above may also be included within the scope of computer- readable storage media.

[0089] Data store 610 may include any type of computer-readable storage media configured for short-term or long-term storage of data. By way of example, and not limitation, such computer-readable storage media may include a hard drive, solid-state drive, Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid state memory devices), non-volatile memory (NVM), or any other storage medium, including those provided above in conjunction with memory 608, which may be used to carry or store particular program code in the form of computer-readable and computer-executable instructions, software or data structures for implementing the various embodiments as disclosed herein and which may be accessed by a general-purpose or special-purpose computer. Combinations of the above may also be included within the scope of computer- readable storage media. Computer-executable instructions may include, for example, instructions and data configured to cause processor 602 to perform a certain operation or group of operations. Data store 610 may be provided on computing device 600 or provided separately or remotely from computing device 600.

[0090] The following examples pertain to further embodiments, from which numerous permutations and configurations will be apparent.

[0091] Example 1 includes a computer-implemented method to adaptively code and schedule packets in a wireless network, the method including: determining number of paths between a sender and a receiver in a multipath (MP) network; determining erasure rates for each path of the paths between the sender and the receiver; determining a multipath rate; determining a coding bucket size based on the multipath rate; and determining a multipath delay for the coding bucket size and the erasure rates.

[0092] Example 2 includes the subject matter of Example 1, wherein determining the multipath delay is by solving a discrete water filling (DWF) formulation.

[0093] Example 3 includes the subject matter of Example 2, wherein a solution to the DWF formulation specifies an allocation of packets in a coding bucket over the paths that minimizes the multipath delay, wherein the coding bucket is of the coding bucket size. [0094] Example 4 includes the subject matter of any of Examples 1 through 3, wherein the multipath rate is a lower bound to the multipath rate assuming that all packets in a coding bucket are transmitted using a worst path with a highest erasure rate, wherein the coding bucket is of the coding bucket size.

[0095] Example 5 includes the subject matter of any of Examples 1 through 4, wherein the multipath rate is a current multipath rate, the coding bucket size is a current coding bucket size, and the method further comprising updating the current multipath rate such that the updated current multipath rate is used to optimize the current coding bucket size.

[0096] Example 6 includes the subject matter of Example 5, further including: determining an updated coding bucket size based on the updated multipath rate; and determining a multipath delay for the updated coding bucket size and the erasure rates.

[0097] Example 7 includes the subject matter of Example 6, wherein determining the updated coding bucket size and determining the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges.

[0098] Example 8 includes the subject matter of any of Examples 1 through 7, wherein the method of Example 1 is applied to a multihop multipath (MM) network.

[0099] Example 9 includes a computer-implemented method to adaptively code and schedule packets in a wireless network, the method including: determining an erasure rate for each link of a plurality of links between a sender and a receiver in a multihop multipath (MM) network, the MM network including a plurality of hops between the sender and the receiver; determining combinations of links through the hops between the sender and the receiver; determining a multihop multipath rate; determining a coding bucket size based on the multihop multipath rate; and determining a multihop multipath delay for the coding bucket size and the erasure rates.

[00100] Example 10 includes the subject matter of Example 9, wherein determining the multihop multipath delay is by solving a discrete water filling (DWF) formulation, wherein the DWF formulation specifies an optimal path allocation of packets in a coding bucket from the sender to the receiver that maximizes a rate at the receiver, the coding bucket being of the coding bucket size.

[00101] Example 11 includes the subject matter of any of Examples 9 and 10, wherein the multihop multipath rate is a current multihop multipath rate, the coding bucket size is a current coding bucket size, and the method further including: updating the current multihop multipath rate; determining an updated coding bucket size based on the updated multihop multipath rate; and determining a multihop multipath delay for the updated coding bucket size and the erasure rates.

[00102] Example 12 includes the subject matter of Example 11, wherein updating the current multihop multipath rate, determining the updated coding bucket size, and determining the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges.

[00103] Example 13 includes the subject matter of any of Examples 9 through 12, wherein the MM network includes a recoded scheme with link-by-link ACK.

[00104] Example 14 includes the subject matter of any of Examples 9 through 12, wherein the MM network includes a recoded scheme with end-to-end ACK.

[00105] Example 15 includes the subject matter of any of Examples 9 through 12, wherein the MM network includes an end-to-end coded scheme with end-to-end ACK.

[00106] Example 16 includes a system to adaptively code and schedule packets in a wireless network, the system including one or more non-transitory machine-readable mediums configured to store instructions and one or more processors configured to execute the instructions stored on the one or more non- transitory machine-readable mediums. Execution of the instructions causes the one or more processors to: determine number of paths between a sender and a receiver in a multipath (MP) network; determine erasure rates for each path of the paths between the sender and the receiver; determine a multipath rate; determine a coding bucket size based on the multipath rate; and determine a multipath delay for the coding bucket size and the erasure rates.

[00107] Example 17 includes the subject matter of Example 16, wherein to determine the multipath delay is by solving a discrete water filling (DWF) formulation. [00108] Example 18 includes the subject matter of Example 17, wherein a solution to the DWF formulation specifies an allocation of packets in a coding bucket over the paths that minimizes the multipath delay, wherein the coding bucket is of the coding bucket size.

[00109] Example 19 includes the subject matter of Example 18, wherein a solution to the DWF formulation specifies an allocation of packets in a coding bucket over the paths that minimizes the multipath delay, wherein the coding bucket is of the coding bucket size

[00110] Example 20 includes the subject matter of any of Examples 16 through 18, wherein the multipath rate is a lower bound to the multipath rate assuming that all packets in a coding bucket are transmitted using a worst path with a highest erasure rate, wherein the coding bucket is of the coding bucket size.

[00111] Example 21 includes the subject matter of any of Examples 16 through 20, wherein the multipath rate is a current multipath rate, the coding bucket size is a current coding bucket size, and execution of the instructions causes the one or more processors to update the current multipath rate such that the updated current multipath rate is used to optimize the current coding bucket size.

[00112] Example 22 includes the subject matter of Example 21, wherein execution of the instructions causes the one or more processors to: determine an updated coding bucket size based on the updated multipath rate; and determine a multipath delay for the updated coding bucket size and the erasure rates.

[00113] Example 23 includes the subject matter of Example 22, wherein to determine the updated coding bucket size and determine the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges.

[00114] Example 24 includes a system to adaptively code and schedule packets in a wireless network, the system including one or more non-transitory machine-readable mediums configured to store instructions and one or more processors configured to execute the instructions stored on the one or more non- transitory machine-readable mediums. Execution of the instructions causes the one or more processors to: determine an erasure rate for each link of a plurality of links between a sender and a receiver in a multihop multipath (MM) network, the MM network including a plurality of hops between the sender and the receiver; determine combinations of links through the hops between the sender and the receiver; determine a multihop multipath rate; determine a coding bucket size based on the multihop multipath rate; and determining a multihop multipath delay for the coding bucket size and the erasure rates.

[00115] Example 25 includes the subject matter of Example 24, wherein to determine the multihop multipath delay is by solving a discrete water filling (DWF) formulation, wherein the DWF formulation specifies an optimal path allocation of packets in a coding bucket from the sender to the receiver that maximizes a rate at the receiver, the coding bucket being of the coding bucket size.

[00116] Example 26 includes the subject matter of any of Examples 24 and 25 , wherein the multihop multipath rate is a current multihop multipath rate, the coding bucket size is a current coding bucket size, and execution of the instructions causes the one or more processors to: update the current multihop multipath rate; determine an updated coding bucket size based on the updated multihop multipath rate; and determine a multihop multipath delay for the updated coding bucket size and the erasure rates.

[00117] Example 27 includes the subject matter of Example 26, wherein to update the current multihop multipath rate, determine the updated coding bucket size, and determine the multipath delay for the updated coding bucket size is iterated until the coding bucket size no longer converges.

[00118] Example 28 includes the subject matter of any of Examples 24 through 27, wherein the MM network includes a recoded scheme with link-by-link ACK.

[00119] Example 29 includes the subject matter of any of Examples 24 through 27, wherein the MM network includes a recoded scheme with end-to-end ACK.

[00120] Example 30 includes the subject matter of any of Examples 24 through 27, wherein the MM network includes an end-to-end coded scheme with end-to-end ACK.

[00121] As used in the present disclosure, the terms“engine” or“module” or “component” may refer to specific hardware implementations configured to perform the actions of the engine or module or component and/or software objects or software routines that may be stored on and/or executed by general purpose hardware (e.g., computer-readable media, processing devices, etc.) of the computing system. In some embodiments, the different components, modules, engines, and services described in the present disclosure may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). While some of the system and methods described in the present disclosure are generally described as being implemented in software (stored on and/or executed by general purpose hardware), specific hardware implementations, firmware implements, or any combination thereof are also possible and contemplated. In this description, a“computing entity” may be any computing system as previously described in the present disclosure, or any module or combination of modulates executing on a computing system.

[00122] Terms used in the present disclosure and in the appended claims (e.g., bodies of the appended claims) are generally intended as“open” terms (e.g., the term“including” should be interpreted as“including, but not limited to,” the term “having” should be interpreted as“having at least,” the term“includes” should be interpreted as“includes, but is not limited to,” etc.).

[00123] Additionally, if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to embodiments containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an" (e.g.,“a” and/or “an” should be interpreted to mean“at least one” or“one or more”); the same holds true for the use of definite articles used to introduce claim recitations.

[00124] In addition, even if a specific number of an introduced claim recitation is explicitly recited, such recitation should be interpreted to mean at least the recited number (e.g., the bare recitation of "two widgets," without other modifiers, means at least two widgets, or two or more widgets). Furthermore, in those instances where a convention analogous to“at least one of A, B, and C, etc.” or“one or more of A, B, and C, etc.” is used, in general such a construction is intended to include A alone, B alone, C alone, A and B together, A and C together, B and C together, or A, B, and C together, etc.

[00125] All examples and conditional language recited in the present disclosure are intended for pedagogical examples to aid the reader in understanding the present disclosure, and are to be construed as being without limitation to such specifically recited examples and conditions. Although example embodiments of the present disclosure have been described in detail, various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the present disclosure. Accordingly, it is intended that the scope of the present disclosure be limited not by this detailed description, but rather by the claims appended hereto.