Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
TECHNIQUES FOR MITIGATING ADVERSE EFFECTS OF WIRELESS LINK OUTAGES
Document Type and Number:
WIPO Patent Application WO/2016/190961
Kind Code:
A2
Abstract:
A device communicatively coupled to a network via a wireless link. The device is configured to perform: obtaining a plurality of measurements of the wireless link during a first time period; generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features; determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

Inventors:
TARSA STEPHEN J (US)
KUNG HSIANG-TSUNG (US)
Application Number:
PCT/US2016/025636
Publication Date:
December 01, 2016
Filing Date:
April 01, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HARVARD COLLEGE (US)
International Classes:
H04L12/825; H04L29/10
Attorney, Agent or Firm:
PRITZKER, Randy, J. (Greenfield & Sacks P.C.,600 Atlantic Avenu, Boston MA, US)
Download PDF:
Claims:
CLAIMS

1. A device communicatively coupled to a network via a wireless link, the device comprising:

at least one computer hardware processor; and

at least one non-transitory computer-readable storage medium storing processor- executable instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform:

obtaining a plurality of measurements of the wireless link during a first time period;

generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features;

determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and

when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

2. The device of claim 1, wherein obtaining the plurality of measurements of the wireless link during the first time period comprises:

transmitting a plurality of probes via the wireless link; and

processing information received in response to the transmitting of the plurality of probes.

3. The device of claim 2 or any other preceding claim, wherein the information received in response to the transmitting of the plurality of probes indicates whether at least some of the plurality of probes were successfully received.

4. The device of claim 1 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements comprises identifying a linear representation of the plurality of measurements as a linear combination of the one or more features in the plurality of features.

5. The device of claim 1, wherein determining whether a degraded state of the wireless link will occur in a second time period comprises determining whether an outage of the wireless link will occur during the second time period.

6. The device of claim 1 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements is performed using a matching pursuit technique.

7. The device of claim 1 or any other preceding claim, wherein the predicting comprises:

applying the sparse representation of the plurality of measurements as input to a classifier to obtain classifier output; and

obtaining, based on the classifier output, a prediction of whether the degraded state of the wireless link will occur in the second time period.

8. The device of claim 7 or any other preceding claim, wherein the classifier comprises a support vector machine classifier.

9. The device of claim 1 or any other preceding claim, wherein altering the manner in which data is transmitted during the second time period comprises not sending any data over the wireless link during the second time period.

10. The device of claim 1 or any other preceding claim, wherein altering the manner in which data is transmitted by the device during the second time period comprises: identifying at least some data to not transmit during the second time period; and buffering the at least some data for transmission at a later time.

11. The device of claim 10 or any other preceding claim, wherein the processor- executable instructions further cause the at least one computer hardware processor to perform:

predicting that there will be no degradation of the wireless link during a third time period, the third time period occurring after the second time period; and

transmitting, during the third time period, at least a portion of the at least some data buffered during the second time period.

12. The device of claim 1 or any other preceding claim, wherein a duration of the first time period is at least 10 milliseconds.

13. The device of claim 1 or any other preceding claim, wherein a duration of the first time period is at least 50 milliseconds.

14. The device of claim 1 or any other preceding claim, wherein a duration of the first time period is at least 100 milliseconds.

15. The device of claim 1 or any other preceding claim, wherein a duration of the first time period is in a range of 75-125ms.

16. The device of claim 1 or any other preceding claim, wherein a duration of the second time period is at least 10 milliseconds.

17. The device of claim 1 or any other preceding claim, wherein a duration of the second time period is at least 50 milliseconds.

18. The device of claim 1 or any other preceding claim, wherein a duration of the second time period is at least 100 milliseconds.

19. The device of claim 1 or any other preceding claim, wherein a duration of the second time period is in a range of 75-125ms.

20. A method to be performed by a device communicatively coupled to a network via a wireless link, the method comprising:

using at least one computer hardware processor to perform:

obtaining a plurality of measurements of the wireless link during a first time period;

generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features;

determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and

when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

21. The method of claim 20, wherein obtaining the plurality of measurements of the wireless link during the first time period comprises:

transmitting a plurality of probes via the wireless link; and

processing information received in response to the transmitting of the plurality of probes.

22. The method of claim 21 or any other preceding claim, wherein the information received in response to the transmitting of the plurality of probes indicates whether at least some of the plurality of probes were successfully received.

23. The device of claim 20 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements comprises identifying a linear representation of the plurality of measurements as a linear combination of the one or more features in the plurality of features.

24. The method of claim 23 or any other preceding claim, wherein determining whether a degraded state of the wireless link will occur in a second time period comprises determining whether an outage of the wireless link will occur during the second time period.

25. The method of claim 20 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements is performed using a matching pursuit technique.

26. The method of claim 20 or any other preceding claim, wherein the predicting comprises:

applying the sparse representation of the plurality of measurements as input to a classifier to obtain classifier output; and

obtaining, based on the classifier output, a prediction of whether the degraded state of the wireless link will occur in the second time period.

27. The method of claim 26 or any other preceding claim, wherein the classifier comprises a support vector machine classifier.

28. The method of claim 20 or any other preceding claim, wherein altering the manner in which data is transmitted during the second time period comprises not sending any data over the wireless link during the second time period.

29. The method of claim 20 or any other preceding claim, wherein altering the manner in which data is transmitted by the device during the second time period comprises:

identifying at least some data to not transmit during the second time period; and buffering the at least some data for transmission at a later time.

30. The method of claim 29 or any other preceding claim, further comprising:

predicting that there will be no degradation of the wireless link during a third time period, the third time period occurring after the second time period; and

transmitting, during the third time period, at least a portion of the at least some data buffered during the second time period.

31. The method of claim 20 or any other preceding claim, wherein a duration of the first time period is at least 10 milliseconds.

32. The method of claim 20 or any other preceding claim, wherein a duration of the first time period is at least 50 milliseconds.

33. The method of claim 20 or any other preceding claim, wherein a duration of the first time period is at least 100 milliseconds.

34. The method of claim 20 or any other preceding claim, wherein a duration of the first time period is in a range of 75-125ms.

35. The method of claim 20 or any other preceding claim, wherein a duration of the second time period is at least 10 milliseconds.

36. The method of claim 20 or any other preceding claim, wherein a duration of the second time period is at least 50 milliseconds.

37. The method of claim 20 or any other preceding claim, wherein a duration of the second time period is at least 100 milliseconds.

38. The method of claim 20 or any other preceding claim, wherein a duration of the second time period is in a range of 75-125ms.

39. At least one non-transitory computer-readable storage medium storing processor- executable instructions that, when executed by a device communicatively coupled to a network via a wireless link, cause the device to perform a method comprising:

obtaining a plurality of measurements of the wireless link during a first time period;

generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features;

determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of

measurements; and

when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

40. The at least one non-transitory computer-readable storage medium of claim 39, wherein obtaining the plurality of measurements of the wireless link during the first time period comprises:

transmitting a plurality of probes via the wireless link; and

processing information received in response to the transmitting of the plurality of probes.

41. The at least one non-transitory computer-readable storage medium of claim 40 or any other preceding claim, wherein the information received in response to the transmitting of the plurality of probes indicates whether at least some of the plurality of probes were successfully received.

42. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements comprises identifying a linear representation of the plurality of measurements as a linear combination of the one or more features in the plurality of features.

43. The at least one non-transitory computer-readable storage medium of claim 42 or any other preceding claim, wherein determining whether a degraded state of the wireless link will occur in a second time period comprises determining whether an outage of the wireless link will occur during the second time period.

44. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein generating the sparse representation of the plurality of measurements is performed using a matching pursuit technique.

45. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein the predicting comprises:

applying the sparse representation of the plurality of measurements as input to a classifier to obtain classifier output; and

obtaining, based on the classifier output, a prediction of whether the degraded state of the wireless link will occur in the second time period.

46. The at least one non-transitory computer-readable storage medium of claim 45 or any other preceding claim, wherein the classifier comprises a support vector machine classifier.

47. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein altering the manner in which data is transmitted during the second time period comprises not sending any data over the wireless link during the second time period.

48. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein altering the manner in which data is transmitted by the device during the second time period comprises:

identifying at least some data to not transmit during the second time period; and buffering the at least some data for transmission at a later time.

49. The at least one non-transitory computer-readable storage medium of claim 48 or any other preceding claim, wherein the method further comprises:

predicting that there will be no degradation of the wireless link during a third time period, the third time period occurring after the second time period; and transmitting, during the third time period, at least a portion of the at least some data buffered during the second time period.

50. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the first time period is at least 10 milliseconds.

51. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the first time period is at least 50 milliseconds.

52. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the first time period is at least 100 milliseconds.

53. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the first time period is in a range of 75- 125ms.

54. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the second time period is at least 10 milliseconds.

55. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the second time period is at least 50 milliseconds.

56. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the second time period is at least 100 milliseconds.

57. The at least one non-transitory computer-readable storage medium of claim 39 or any other preceding claim, wherein a duration of the second time period is in a range of 75-125ms.

Description:
TECHNIQUES FOR MITIGATING ADVERSE EFFECTS OF

WIRELESS LINK OUTAGES

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001] This application claims the benefit under 35 U.S.C. § 119(e) of U.S.

Provisional Application Serial No. 62/142,683, entitled "STATE-INFORMED LINK- LAYER QUEUING FOR WIRELESS COMMUNICATION USING SPARSE CODING" filed on April 3, 2015 under Attorney Docket No. H0776.70095WO00, which is herein incorporated by reference in its entirety.

FEDERALLY SPONSORED RESEARCH

[0002] This invention was made with government support under FA8750-10-2-

0180 awarded by the Department of the Air Force. The government has certain rights in this invention.

FIELD OF INVENTION

[0003] Aspects of the technology described herein relate to techniques for mitigating adverse effects of outages of wireless links in a wireless network. Some aspects relate to obtaining measurements of a wireless link, using the obtained measurements to determine whether the wireless link will experience an outage, and controlling transmission over the wireless link based on the determination.

BACKGROUND

[0004] Wireless links frequently experience temporary outages during which devices that use the wireless links either cannot transmit and/or receive data or can do so only at a significantly reduced rate. Any user who has accessed in-flight Wi-Fi, checked a smart phone on an elevator, or browsed the Internet on a train can attest to frustrating pockets of dismal throughput. Such disruptions may result from the changes in signal propagation that occur as users travel through complex environments with varying sources of multi-path reflection, varying distances to base stations, line-of-sight occlusions, and/or interference. SUMMARY

[0005] Some embodiments are directed to a device communicatively coupled to a network via a wireless link. The device comprises at least one computer hardware processor; and at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform: obtaining a plurality of measurements of the wireless link during a first time period; generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features; determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

[0006] Some embodiments are directed to a method to be performed by a device communicatively coupled to a network via a wireless link. The method comprises using at least one computer hardware processor to perform: obtaining a plurality of

measurements of the wireless link during a first time period; generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features; determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

[0007] At least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by a device communicatively coupled to a network via a wireless link, cause the device to perform a method comprising: obtaining a plurality of measurements of the wireless link during a first time period; generating a sparse representation of the plurality of measurements using one or more features in a dictionary including a plurality of features; determining whether a degraded state of the wireless link will occur in a second time period, the determining comprising predicting whether the degraded state of the wireless link will occur using the sparse representation of the plurality of measurements; and when it is determined that the degraded state of the wireless link will occur in the second time period, altering a manner in which data is transmitted by the device over the wireless link during the second time period.

[0008] The foregoing is a non-limiting summary of the invention, which is defined by the attached claims.

BRIEF DESCRIPTION OF DRAWINGS

[0009] Various aspects and embodiments of the application will be described with reference to the following figures. Items appearing in multiple figures are indicated by the same or a similar reference number in all the figures in which they appear.

[0010] Fig. 1A is a diagram of an illustrative environment in which some embodiments of the technology described herein may operate.

[0011] Fig. IB is a diagram illustrating time periods during which measurements of a wireless link are obtained and for which predictions of wireless link degradation may be made, in accordance with some embodiments of the technology described herein.

[0012] Fig. 2 is a flow chart of an illustrative process for controlling transmission of data over a wireless link at least in part by determining whether a degraded state of the wireless link will occur, in accordance with some embodiments of the technology described herein.

[0013] Fig. 3 is a block diagram of illustrative components of a computing device configured to execute the illustrative process of Fig. 2, in accordance with some embodiments of the technology described herein.

[0014] Fig. 4 is a block diagram of an illustrative computer system that may be used in implementing some embodiments of the technology described herein.

[0015] Figs. 5A-5C illustrate some environments in which embodiments of the technology described herein may operate.

[0016] Fig. 6 illustrates features in a dictionary of features, in accordance with some embodiments of the technology described herein. [0017] Fig. 7 illustrates a template of a wireless link state, in accordance with some embodiments of the technology described herein.

[0018] Fig. 8 is a diagram illustrating a relationship between gap detection sensitivity and realized TCP throughput, in accordance with some embodiments of the technology described herein.

[0019] Fig. 9 is a diagram illustrating a receiver operating characteristic (ROC) curve as a function of sparsity, in accordance with some embodiments of the technology described herein.

[0020] Fig. 10 is a diagram illustrating applicability of wireless link primitives learned in one environment to predicting outage of wireless links in another

environment, in accordance with some embodiments of the technology described herein.

[0021] Fig. 11 is a diagram showing an illustrative link measurement protocol, in accordance with some embodiments of the technology described herein.

[0022] Fig. 12 is a diagram of an illustrative software architecture according to which some embodiments of the technology described herein may be implemented.

[0023] Fig. 13 is a diagram illustrating performance of some embodiments of the technology described herein.

[0024] Fig. 14 is a diagram illustrating the effect of increasing the probe interval on TCP throughput, in accordance with some embodiments of the technology described herein.

[0025] Fig. 15 is another diagram illustrating performance of some embodiments of the technology described herein.

[0026] Fig. 16 is a diagram illustrating the effect of utilizing some embodiments of the technology described herein on power consumption.

DETAILED DESCRIPTION

[0027] The inventors have recognized and appreciated that conventional techniques for mitigating adverse effects of temporary degradations in the state of wireless links are expensive, do not scale, and can be improved upon. Examples of a temporary degradation of a state of a wireless link include, but are not limited to, a temporary outage of the wireless link, a temporary decrease in the signal-to-noise ratio signals transmitted over the wireless link, a temporary increase in distortion of one or multiple signals received over the wireless link, and/or a temporary decrease in the power of signals received over the wireless link.

[0028] Conventional techniques for dealing with temporary wireless link degradations involve creating a map of signal strength in an environment and deploying additional network hardware in the environment based on the created map to increase signal strength in areas where the map indicates the signal is weak. However, the cost of human labor to generate a map of signal strength and the cost of purchasing and installing additional network hardware make such a conventional approach prohibitively expensive. When faced with improving quality for wireless networks with increased expanse or density of network infrastructure, such as those that operate using millimeter- wave frequencies, across a diverse set of environments, such a conventional approach does not scale - a carrier simply does not have the resources to manually map out the signal strength in these networks, purchase, install, and operate (e.g., due to electricity costs) additional network hardware. Even if it were possible to map out the signal strength for a particular environment, changes in that environment (e.g., the opening and closing of doors and/or windows in an indoor environment) can change the signal strength such that the generated map is no longer accurate.

[0029] Some embodiments of the technology described herein address some of the above-discussed drawbacks of conventional techniques for mitigating adverse effects of temporary wireless link degradations. However, not every embodiment addresses every one of these drawbacks, and some embodiments may not address any of them. As such, it should be appreciated that aspects of the technology described herein are not limited to addressing all or any of the above-discussed drawbacks of conventional techniques for mitigating adverse effects of temporary wireless link degradations.

[0030] Accordingly, some embodiments provide for online (e.g., real-time) techniques for mitigating adverse effects of temporary wireless network link

degradations. In some embodiments, measurements of a wireless link are obtained and subsequently used to predict whether the wireless link will experience a degradation (e.g., an outage, increased distortion, and reduced power of received signals). The manner in which data is transmitted and/or received may be controlled based on such a prediction. [0031] In some embodiments, for example, when it is predicted that a wireless link will experience a degraded state (e.g., an outage, a reduction in the signal to noise ratio due to increased distortion and/or reduced power of received signals) during a particular time period, the manner in which data is transmitted during the particular time period may be changed. In some embodiments, the amount of data transmitted during the particular time period may be reduced or no data may be transmitted at all during the particular time period. The data not transmitted may be buffered and may be transmitted, subsequently, when the wireless link is predicted to not experience an outage.

Accordingly, in some embodiments, temporary wireless link outages may be handled at the link layer by pre-empting transmissions that are unlikely to succeed. In some embodiments, redundant data, which in some instances may be associated with error- correcting coding techniques, may be transmitted to mitigate degraded wireless link quality. In some embodiments, data may be transmitted using a higher transmission power to mitigate degraded wireless link quality. In this way, the techniques described herein reduce performance degradation caused when higher layer protocols react adversely to missing data as may be the case, for example, when the transmission control protocol (TCP) times out in a subway tunnel.

[0032] In some embodiments, a wireless link may be actively probed to obtain measurements of the wireless link during a first time period. The measurements may be processed to obtain a representation of the measurements, which representation may be sparse, in some embodiments. The representation of the measurements may be provided as input to a classifier to produce classifier output that may include a prediction of whether the wireless link will experience a degraded state (e.g., an outage or a period of low signal-to-noise ratio) during a subsequent second time period. When it is determined that the degraded state of the wireless link will occur in the second time period, the manner in which data is transmitted over the wireless link during the second time period may be altered.

[0033] It should be appreciated that the embodiments described herein may be implemented in any of numerous ways. Examples of specific implementations are provided below for illustrative purposes only. It should be appreciated that these embodiments and the features/capabilities provided may be used individually, all together, or in any combination of two or more, as aspects of the technology described herein are not limited in this respect.

[0034] Fig. 1A is a diagram of an illustrative environment 100 in which some embodiments of the technology described herein may operate. As shown in Fig. 1A, illustrative environment 100 includes a computing device 102 coupled to network 106 via a wireless link 104a over which computing device 102 may be configured to transmit and/or receive data. Illustrative environment further includes computing device 108 coupled to network 106 via a wired link 104b over which computing device 108 may be configured to transmit and/or receive data.

[0035] In some embodiments, computing device 102 may be a portable computing device such as, for example, a laptop computer, a smart phone, a PDA, a tablet device, a gaming console, sensor, and/or any other portable device that may be configured to transmit data to and/or receive data from a network. In other embodiments, computing device 102 may a fixed computing device such as, for example, a desktop, a server, a rack-mounted computing device and/or any other fixed computing device that may be configured to transmit data to and/or receive data from a network. Computing device 108 may be any suitable computing device (e.g., a portable or a fixed device) that may be configured to transmit data to and/or received data from a network.

[0036] In the illustrated embodiment, computing device 102 is shown as being connected via wireless link 104a to network 106, but in other embodiments, computing device may be connected to network 106 via a series of multiple links at least one of which is wireless. Still, in other embodiments, the technology described herein may be applied to mitigating effects of wired link degradations and, in such embodiments, computing device 102 may be connected to network 106 via (e.g., only) one or multiple wired links. Although computing device 108 is shown as being connected to network 106 via wired link 104b in the illustrated embodiment, in other embodiments, computing device 108 may be connected to network 106 via a wireless link or any suitable combination of wired and wireless links, as aspects of the technology described herein are not limited in this respect.

[0037] Network 106 may be a local area network, a wide area network, a corporate Intranet, the Internet, a computer network, a cellular network, a telephone network, a circuit-switched network, a messaged- switched network, a packet- switched network, any/or any other suitable type of communication network.

[0038] Computing devices 102 may transmit and/or receive data over wireless link 104a using any suitable protocol(s). For example, in some embodiments, computing device 102 may be configured to transmit and/or receive data over wireless link 104a in accordance with the transmission control protocol (TCP), sometimes termed the TCP/IP protocol. Additionally or alternatively, computing device 102 may be configured to transmit and/or receive data over wireless link 104a in accordance with a user datagram protocol (UDP). Additionally or alternatively, computing device 102 may be configured to transmit and/or receive data over wireless link 104a in accordance with any application layer protocol, transport layer protocol, internet layer protocol, and/or link layer protocol. Additionally or alternatively, computing device 102 may be configured to transmit and/or receive data over wireless link 104a in accordance with any suitable specifications for wireless communication including, but not limited to, any specification in the 802.11 family of specifications.

[0039] In some embodiments, wireless link 104a may experience one or more temporary degradations (e.g., outages, reduced signal to noise ratio, etc.) and computing device 102 may perform processing to mitigate the effects of such degradations on the transmission and/or reception of data over wireless link 104a.

[0040] In some embodiments, computing device 102 may obtain one or multiple measurements of the wireless link 104a during a first time period and determine, based on the obtained measurement(s), whether there will be a degradation of the wireless link in a second time period. Techniques for obtaining measurements of a wireless link and predicting whether there will be an outage of the wireless link based on the obtained measurements are described herein including with reference to Fig. 2.

[0041] When the computing device 102 determines (e.g., predicts with at least a threshold certainty) that there will be a degradation of the wireless link 104a in the second time period, computing device 102 may control the way in which it transmits and/or receives data over the wireless link 104a to mitigate adverse effects of the predicted degradation. For example, computing device 102 may reduce the amount of data transmitted during the second time period (e.g., relative to the amount of data that would have been transmitted during the second time period had no outage of the link during the second time period been predicted). As another example, computing device 102 may not transmit any data during the second time period. As another example, computing device 102 may repeatedly transmit at least some data to ensure their receipt. As another example, computing device 102 may use more power transmit data during the second time period. When computing device 102 does not transmit at least some transmit data during the second time period (e.g., due to a determination that wireless link 104a may experience a degradation during the second time period), the data not transmitted may be buffered and may be transmitted at a later time (e.g., during a time period for which it is determined that the wireless link 104a is not likely to experience a

degradation).

[0042] In some embodiments, computing device 102 may obtain the

measurement(s) of wireless link 104a by transmitting one or more probes (e.g., one or more transmissions, each transmission comprising one or more packets or other suitable units of data) and processing information received in response to the transmitting. For example, computing device 102 may transmit multiple probes to computing device 108, and computing device 108 may transmit acknowledgements of their receipt to computing device 102. If computing device 102 receives an acknowledgement for each of the probes transmitted, then the computing device 102 may determine that all the transmitted probes have been received by computing device 108. On the other hand, when the computing device 102 does not receive acknowledgement for some of the probes, the computing device may determine which probes were received and which probes were not received and, on the basis of this information, determine if it is likely that a degraded state in the wireless link may occur. For example, computing device 102 may transmit a sequence of w probes to computing device 108 during a first time period and, during the same first time period, receive information from computing device 108 acknowledging receipt of at least some (e.g., all) of the w probes. Based on which of the w probes in the sequence were received by computing device 108 and which were not, computing device 102 may determine whether wireless link 104a may experience a degradation during an upcoming second time period.

[0043] In some embodiments, computing device 102 may obtain one or more measurements of wireless link 104a during a first time period and predict, based on these measurements, whether the wireless link 104a will experience a degradation during the second time period. For example, as shown in Fig. IB, computing device 102 may obtain measurements of wireless link 104a during first time period 120 of duration di and use the obtained measurements to predict whether there will be a link degradation during the second time period 122 of duration d 2 . As another example, computing device 102 may obtain measurements of wireless link 104a during the second time period 122 and use the obtained measurements to predict whether there will be a link degradation during the third time period 124 of duration d 3 .

[0044] The duration of the time interval during which measurements of wireless link 104a are obtained may be of any suitable duration. For example, the duration of the first time period may be at least 10 milliseconds (ms) in some embodiments, at least 25 ms in some embodiments, at least 50ms in some embodiments, at least 100ms in some embodiments, between 10 and 200ms in some embodiments, between 50 and 150ms in some embodiments, between 75 and 125ms in some embodiments, or between any values or range of values within such ranges.

[0045] The measurements of wireless link 104a obtained during a first time period may be used to predict whether the link will experience a degradation (e.g., an outage, a reduction in signal to noise ratio, etc.), during a second time period, which second period may be of any suitable duration. For example, the duration of the second time period may be at least 10 milliseconds (ms) in some embodiments, at least 25 ms in some embodiments, at least 50ms in some embodiments, at least 100ms in some embodiments, between 10 and 200ms in some embodiments, between 50 and 150ms in some embodiments, between 75 and 125ms in some embodiments, or between any values or range of values within such ranges.

[0046] In some embodiments, the duration of the first time period during which measurements of a wireless link 104a are obtained may be substantially the same as the duration of the second time period for which a prediction of link degradation is made based on the measurements during the first time period. Two time periods may have substantially the same durations when the duration of the first time period differs from the duration of the second time period by less than a threshold percentage of the second time period (e.g., by less than 30% in some embodiments, by less than 25% in some embodiments, by less than 20% in some embodiments, by less than 15% in some embodiments, by less than 10% in some embodiments, by less than 5% in some embodiments, by less than 1% in some embodiments, by less than 0.05% in some embodiments, etc.). In some embodiments, the duration of the second time period may be the same as the duration of the second time period (e.g., both the first and second time periods may be 100ms, in some embodiments).

[0047] The first time period and the second time period may be non-overlapping.

For example, as shown in Fig. IB, the first time period 120 and the second time period 122 may be separated by a short time interval 126, which may be of any suitable length. For example, short time interval 126 may be no more than a threshold percentage of the duration of the second time interval (e.g., no more than 10%, no more than 5%, no more than 1 percent). As another example, short time interval 126 may have a duration of 0- 5ms, 5- 10ms, 0-lOms, l-20ms, or between any values or range of values within such ranges. In some embodiments, the first and second time intervals may be adjacent such that the short time interval 126 has length 0ms.

[0048] Fig. 2 is a flow chart of an illustrative process 200 for controlling transmission of data over a wireless link at least in part by determining whether a degradation of the wireless link will occur, in accordance with some embodiments of the technology described herein. Process 200 may be performed by any suitable computing device connected to a network using at least one wireless link. For example, process 200 may be performed by computing device 102 described above with reference to Fig. 1A.

[0049] Process 200 begins at act 202, where multiple measurements of a wireless link are obtained during a first time period. The first time period may be of any suitable length, as described herein. The number of measurements obtained during the first time period is configurable and may be set to any suitable number. For example, the number of measurements may be at least five, at least 10, at least 20, at least 50, between 10 and 100, between 5 and 200, between 10 and 30, between 10 and 50, or between any values or range of values within such ranges.

[0050] In some embodiments, the number of measurements of the wireless link obtained at act 202 may be depend, at least in part, on the duration of the first time period. For example, the measurements may be made sequentially during the first time period and may be spaced apart from one another by a predetermined amount. For example, a measurement of the wireless link may be obtained for each period (e.g., 1ms period, 2ms period, 5ms period, 10ms period, etc.) during the first time period. Thus, if the first time period is, for example, 100ms, a measurement may be obtained every 5ms, on average, for a total of approximately 20 measurements.

[0051] The inventors have appreciated that measuring a wireless link may consume computing resources such as power of the device performing process 200 and/or bandwidth of the wireless link used by the device performing process 200 to transmit and/or receive data. Accordingly, strategies for reducing the number of measurements may be employed. For example, fewer measurements may be made of a wireless link that has not experienced a degradation for a threshold amount of time. As another example, fewer measurement may be made of a wireless link that has been "down" for a long period of time - only a few measurements may be made to determine whether any information may be received over the wireless link. These embodiments are described further below including in Section 5.1.1.

[0052] In some embodiments, obtaining a measurement during act 202 may comprise transmitting a probe to another device by using the wireless link and determining whether the other device received the transmitted probe. The device performing process 200 (e.g., computing device 102) may determine whether another device (e.g., computing device 108) received the probe when the device performing process 200 receives an acknowledgement of receipt from the other device, for example, within a specified window of time. The acknowledgement may be in any suitable format, as aspects of the technology described herein are not limited in this respect. Conversely, the device performing process 200 may determine that the other device did not receive the probe when the device performing process 200 does not receive an acknowledgement of receipt from the other device, for example, within a specified window of time.

Accordingly, the measurement may comprise information indicating whether or not the other device received the probe. For example, the measurement may take on one value (e.g., 1 or any other suitable value) when the other device received the probe and a different value (e.g., 0 or any other suitable value) when the other device did not receive the probe. A device may send a probe by transmitting one or more packets or other suitable units of data.

[0053] Accordingly, in some embodiments, obtaining measurements of a wireless link during act 202 may comprise transmitting multiple probes over the wireless link and determining which of the transmitted probes were received. Making this determination may include processing information received, by the device performing process 200, from one or more other devices acknowledging that the other device(s) received at least some of the transmitted probes. Accordingly, the measurements may comprise information indicating which of the transmitted probes were received and which were not received. For example, the obtained sequence of measurements may be organized in a binary vector having an entry for each of the transmitted probes. The entries in the binary vector that correspond to transmitted probes whose receipt was acknowledged may take one value (e.g., 1 or any other suitable value), and entries in the binary vector that correspond transmitted probes whose receipt was not acknowledged may take on a different value (e.g., 0 or any other suitable value). For example, the measurement vector "1101111101" may indicate that of the ten transmitted probes, all but the third and ninth probes were received. A single sequence of measurements of a wireless link may be called a "trace."

[0054] It should be appreciated that the measurements obtained during act 202 are not limited to taking on binary values. For example, a measurement could take on a value indicating the strength and/or phase of a signal (e.g., a signal indicating an acknowledgement of receipt of a transmitted probe) transmitted to the device performing process 200 by another device. As another example, a measurement may be any of the types of measurements made in multiple input multiple output (MIMO) systems.

Although, in some embodiments, the measurements may be obtained by actively probing the wireless link (e.g. ,via sending out one or multiple probes), in other embodiments, the measurements may be obtained passively based on information, received over the wireless link, that is not provided in response to any probe(s) sent by the device performing process 200.

[0055] Based on the measurements of a wireless link made during act 202 during a first time period, the computing device performing process 200 may determine whether the wireless link may experience a degraded state during a second time period. This determination is made in two steps. First, a sparse representation of the obtained measurements is generated at act 204, as described below. Second, at act 206, parameters of the sparse representation are used as inputs to a classifier to generate output indicating whether the wireless link is to experience a degradation during the second time period. [0056] Accordingly, after obtaining measurements of a wireless link at act 204, process 200 proceeds to act 204, where the obtained measurements of the wireless link are processed to obtain a representation of the measurements. The representation of the measurements may be a sparse representation.

[0057] In some embodiments, obtaining a representation of the measurements may include identifying a linear representation of the measurements as a linear combination of one or multiple features in a dictionary of features. Identifying the linear representation of the measurements may include identifying a linear combination of features in the dictionary that (e.g., most) closely represents the measurements according to a suitable objective function. Identifying the linear combination of features may include determining a weight for each of one or more of the dictionary features in the linear combination.

[0058] In some embodiments, the linear combination of dictionary features identified at act 204 does not include all of the dictionary features. Equivalently, some of the dictionary features may be associated with a weight of zero in the linear combination. For example, a dictionary may include m features, where m is an integer, and the linear combination of dictionary features may include only k features having a non-zero weight, where k is an integer smaller than m. As a specific non-limiting example, a dictionary may include m = 200 features and the linear combination of dictionary features used to represent the measurements may include k = 5 dictionary features having a non-zero weight. It is in this sense that the linear representation obtained at act 204 may be considered to be sparse - only a small number of dictionary features may be used to represent the measurements obtained at act 202.

[0059] In some embodiments, the number of dictionary features used in a linear representation of the measurements obtained at act 202 is smaller than or equal to a specified percentage of features in the dictionary of features. For example, the number of dictionary of features may be smaller than or equal to 20% of features in the dictionary of features. As another example, the number of dictionary of features may be smaller than or equal to 15% of features in the dictionary of features. As another example, the number of dictionary of features may be smaller than or equal to 10% of features in the dictionary of features. As another example, the number of dictionary of features may be smaller than or equal to 5% of features in the dictionary of features. As another example, the number of dictionary of features may be smaller than or equal to 1% of features in the dictionary of features. As another example, the number of dictionary of features may be smaller than or equal to 0.5% of features in the dictionary of features. In some embodiments, the number of dictionary of features may be set to be smaller than or equal to a fixed number of features. For example, the number of dictionary features may be set to be smaller than or equal to any number in the range of 1-25 features. In some embodiments, a single dictionary feature may be used.

[0060] It should be appreciated that while a set of measurements may be represented as a linear combination of a small number of dictionary features, the particular dictionary features used in the linear representation are determined based on the measurements themselves. For example, two different sets of measurements may each be represented by a respective linear combination of five dictionary features but the dictionary features used in these linear combinations may be different from each other.

[0061] In some embodiments, identifying the linear representation of

measurements may include determining weights for one or multiple dictionary features at least in part by solving a convex optimization problem, or approximating the solution to a non-convex optimization problem. For example, identifying the linear representation may involve identifying a set of weights that minimize a quadratic objective function subject to a sparsity constraint on the weights themselves. As a specific non-limiting example, given a wX m dictionary D containing m features of length w, and x a normalized binary measurement vector representing the outcomes of w back-to-back probe transmissions performed during act 202, the m x 1 vector of weights a may be found by approximating the following non-convex optimization problem:

[0062] min II x - Da \\ 2 2 s.t. ll \\ 0 ≤k ,

a

[0063] where k a hard sparsity threshold contraining the number of features used in the linear represntation of the measurements x to be smaller than or equal to k. The unary operators II · ll 2 and II · Ho represent the £ 2 and to norms, respectively. This optimization problem may be solved using any of a variety of techniques and, in some embodiments, may be solved using a Matching Pursuit technique using a series of inner- product tests that iteratively (and greedly) select k features to reduce a residual. The computational complexity of such a matching pursuit technique is O(mw), which is sufficiently small that it may be performed in real-time on a mobile device (e.g., a mobile device performing process 200). The resulting weights a constitute a sparse

representation of the measurements obtainted at act 202, and may be used as inputs to a classifier to determine whether the wireless link will expeirence an outage during the second time period, as described in further detail below.

[0064] In some embodiments, the dictionary of features D may be obtained by analyzing previously-obtained sets measurements of one or multiple wireless links. Multiple sequences of measurements (traces) may be obtained for each of one or multiple wireless links and processed to identify dictionary features. For example, the dictionary of features may be obtained by processing M traces of one or multiple wireless links to identify m dictionary features, where m is smaller than M. The measurements may be of any suitable type including, for example, any of the types of measurements described above with reference to act 202 of proces 200. The dictionary features may represent the most prominent and/or frequently occuring patterns of wireless link states captured by the traces. The process of using traces of one or multiple links to identify dictionary features may be called "dictionary training."

[0065] In some embodiments, the traces used for dictionary training may be obtained from one or multiple links. In some embodiments, the dictionary training may be performed at least in part by using traces obtained using the wireless link for which measurements were obtained at act 202, but this is not a limitation of the techniques described herein. For example, in some embodiments, the dictionary training may be performed without using any traces obtained using the wireless link for which

measurements were obtained at act 202 and, instead, be performed using traces performed for one or more other wireless links. Indeed, the inventors have recognized and appreciated that traces of one set of one or more wireless links may be used to effectively represent prominent and/or frequently occuring patterns of wireless link states for other wireless links not in the set. For example, traces of wireless links in one environment (e.g., an urban environment) may be used to represent prominent and/or frequently occuring patterns of wireless link states of wireless links in another enviornment (e.g., an indoor environment). This is described in further detail below including in Section 4.3.

[0066] Accordingly, in some embodiments, a single dictionary D may be obtained for use as part of process 200 (specifically, as part of act 204 of process 200) for controlling transmission of data over any suitable wireless link. In other embodiments, different dictionaries may be obtained for wireless links occurring in different environments. For example, one dictionary of features may be used for predicting outages of wireless links in indoor environments and another dictionary of features may be used for predicting outages of wireless links in rural outdoor environments.

[0067] In some embodiments, the dictionary of features used as part of process

200 may be obtained prior to process 200 being performed. In other embodiments, the dictionary of features may be obtained during performance of process 200, but prior to completion of performance of act 204 during which the dictionary is used to obtain a sparse representation of the wireless link measurements obtained at act 202.

[0068] In some embodiments, a dictionary D of w x m features may be learned from a set of traces using an optimization technique called the Least Absolute Shrinkage and Selection Operator (LASSO) technique. As a specific non-limiting example, given T traces {xi; i = 1...T}, each trace being a wxl vector of of w measurements of some wireless link, the following convex optimization problem may be solved to identify a wxm dictionary D:

[0069] min ∑- II x. - Da t +λ II a t II, where the unary operators II · Hi represents the i \ norm, each ο¾ being an mxi vector of weights, and λ is a tunable positive value for controlling the impact of the sparsitity penalty on the overall optimization problem. The above optimization problem may be solved using any suitable convex optimization algorithm to solve for the dictionary D. The columns of such a w x m dictionary are the dictionary features.

[0070] In some embodiments, the parameters m (i.e., the number of dictionary features) and λ may be used to control the type of dictionary obtained. For example, when training a dictionary with many features and a small penalty parameter (e.g., m ~ 200 and λ ~ 0.1), then resulting dictionary may capture templates of frequently occurring link states. New link measurements may then be matched to the closest template by setting k = 1, in some embodiments. However, when the number of dictionary features is chosen to be small and λ is chosen to be large (e.g., m ~ 20 and λ ~ 4), then training may extract a small number of the most prominent patterns in each training example. This may produce a set of more-general features that can be combined to enumerate observed link states, for example by encoding with k=8, in some embodiments. As discussed in Section 4 below, these linear models generalize well across networks and environments, addressing a key limitation of conventional wireless link models.

[0071] Regardless of the manner in which the dictionary of features is obtained, after the dictionary is used, at act 204, to obtain a sparse representation of the wireless link measurements obtained at act 202 during a first time period, process 200 proceeds to act 206, where the obtained sparse representation is used to determine whether the wireless link will experience a degradation during a second time period at act 206.

Examples of first and second time periods are provided herein.

[0072] In some embodiments, the sparse representation of the wireless link measurements obtained at act 202 may be applied as input to a classifier (or multiple classifiers) to obtain classifier output and obtaining, based on the classifier output, a prediction of whether a degradation of the wireless link will occur in the second time period. The classifier may be a binary classifier configured to produce one of two posisble outputs in response to input - one output indicating that, based on the input, a degradation is predicted in the second time period, and another ouput indicating that, based on the input, a degradation is not predicted in the second time period. Though, it should be appreciated that the classifier need not be a binary classifier and may be a multi-class classifier or may constitute one or multiple one-class classifiers (e.g., one or more one-class classifiers).

[0073] In some embodiments, a classifier's output may be associated with a confidence value. For example, applying the sparse representation (e.g., the vector of weights a) obtained at act 204 to a classifier may produce classifier output including a prediction that a degradation of the wireless link will occur during the second time period will occur during the second time period and a confidence value associated with that prediction.

[0074] In some embodiments, the classifier's prediction of whether a degradation will occur may be used to determine (e.g., make a decision for purposes of processing) whether a degradation of the wireless link will take place during the second time period. For example, in some embodiments, it may be determined that a degradation will occur during the second time period when the classifier predicts such a degradation to occur. As another example, in some embodiments, it may be determined that a degradation will occur during the second time period when the classifier predicts such a degradation will occur with at least a threshold confidence value. In this way, the predictions of the classifier will be used only if they are made with a sufficient confidence.

[0075] In some embodiments, the classifier used at act 206 may be a support vector machine (SVM) classifier. In some embodiments, the classifier may comprise a linear classifier (e.g., the naive Bayes classifier, a perceptron classifier, a logistic regression classifer). In some embodiments, the classifier may be a decision tree classifier. In some embodiments, the classifier may be a neural network classifier. These examples of classifiers are non-limiting examples and the classifier used act 206 may be any other suitable type of classifier, as aspects of the technology described herein are not limited in this respect.

[0076] In some embodiments, the classifier used at act 206 may be trained to predict whether a degradation will occur during a second time period based on input consisting of a sparse representation of wireless link measurements obtained during a first time period. The classifier may be trained to predict occurrence of any suitable type of degradation during the second time period based on the input. For example, the classifier may be trained to predict whether the number of transmission failures during the second time period exceeds a specified number of failures (e.g., more than zero failures, more than one failure, more than two failures, more than five failures, more than ten failures, etc.). As another example, the classifier may be trained to predict whether the number of consecutive transmission failures during the second period exceeds a specified number of failures. For example, since most TCP implementations can recover quickly from a single packet drop using fast-retransmit, detecting instances where two or more consecutive packets are dropped may be valuable in improving performance of the TCP protocol. As yet another example, the classifier may be trained to predict whether the number of failures (e.g., consecutive failures) may fall in a specified range (e.g., between one and five failures, between five and 15 failure, between 1 and 30 failures, or any other range within such ranges). As yet another example, the classifier may be trained to predict whether the signal to noise ratio will fall below a threshold for at least a portion of the second time period.

[0077] In some embodiments, the classifier used at act 206 may be trained using previously obtained traces of one or multiple wireless links. The classifier may be trained using a supervised training technique. The classifier may be trained using a set of all previously obtained traces or a subset of the previously obtained traces. For example, in some embodiments, a classifier may be trained using traces obtained in a particular environment. As another example, the classifier may be trained using traces obtained using traces obtained by a particular device. As yet another example, the classifier may be trained using only traces previousy obtained for the wireless link that was measured at act 202. Alternatively, the classifier may be trained using traces obtained for the wireless link that was measured at act 202 and one or more other wireless links. In some instances, the classifier may be trained using only those traces that were obtained for wireless links other than the link measured at act 202 of process 200. Aspects of how to train a classifer used at act 206 are desribed below including in Section 4.2.

[0078] Next, process 200 proceeds to decision block 208, where different processing may be performed based on the determination made at act 206. As shown in Fig. 2, when it is determined that a degradation of the wireless link will occur during the second time period, process 200 proceeds to act 210, where the amount of data transmitted during the second time period is reduced. This may be done in any suitable way. For example, a smaller amount of data may be sent than would have been sent during the second time period had no degradation been predicted for the second time period. As another example, no data may be transmitted during the second time period (though the device performing process 200 may, in some embodiments, continue to measure the wireless link even if no other data is being transmitted). The data not transmitted during the second time period (e.g., as a result of reducing the data rate or stopping transmission) may be buffered and may be transmitted at a later time (e.g., during a time period for which it is determined that the wireless link will not experience an outage).

[0079] In other embodiments, rather than reducing the amount of data sent over the wireless link during the second period, one or more alternative actions may be taken. For example, in some embodiments, a greater amount of power may be used to transmit data during the second time period. As another example, in some embodiments, data may be transmitted with a greater amount of redundancy than would have been used had no degradation been predicted for the second time period. This may be done in any suitable way, for example, by using an error correcting code, as aspects of the technology described herein are not limited in this respect.

[0080] On the other hand, when it is determined that a degradation of the wireless link will not occur during the second time period, process 200 proceeds to act 212, where the device performing process 200 continues to transmit and/or receive data during the second time period. Additionally or alternatively, in some embodiments, data buffered during one or more earlier time periods (e.g., during which a degradation of the wireless link was predicted) may be transmitted at act 212.

[0081] After performance of act 210 or act 212, process 200 returns to act 202 and continues monitoring the wireless link by obtaining measurements of the link and using those measurements to determine whether there will be a degraded state in the wireless link during another period of time.

[0082] Fig. 3 is a block diagram of illustrative components of a computing device

300 (which may be computing device 102), in some embodiments, configured to execute the illustrative process 200 of Fig. 2, in accordance with some embodiments of the technology described herein. Each of the components illustrated in Fig. 3 is configured to perform one or more functions, which are described below, and may include processor- executable instructions that, when executed by at least one computer hardware processor, cause the at least one computer hardware processor to perform the function(s). It should be appreciated that the components shown in Fig. 3 are illustrative and that, in other embodiments, computing device may include one or more other components in addition to or instead of the components illustrated in Fig. 3.

[0083] As shown in Fig. 3, computing device 300 includes one or more network applications 302, which may include one or multiple software application programs and/or operating systems configured to transmit and/or receive data via a network. For example, network applications 302 may include one or more application programs configured to communicate with one or more other external devices external to device 300 via the TCP/IP protocol and/or any other suitable protocol(s).

[0084] In some embodiments, transmission of data by a network application 302 and/or receipt of data by the network application 302 may be controlled by data controller 304. Data controller 304 may determine whether data from network application 302 may be transmitted during a particular time period. Data controller 304 may make such a determination based on information indicating whether a degradation is predicted to occur during the particular time period in a wireless link via which device 300 is communicatively coupled to the network. When the data controller 304 determines that data from the network application is to be transmitted during a particular time period, data controller transmits the data to a network via network interface 308. On the other hand, when the data controller 304 determines that at least some (e.g., all) of the data from the network application is not to be transmitted during a particular time period, the data not transmitted may be buffered using data buffer 306 instead of being transmitted.

[0085] In some embodiments, data controller 304 may obtain information indicating whether a degradation is predicted to occur during the particular time period from controller 310. Controller 310 may include a link measurement module 312 and a link state prediction module 314. Link measurement module 312 may be configured to obtain, during a first time period, one or more measurements of a wireless link via which device 300 is communicatively coupled to a network and link state prediction module 314 may be configured to predict, based on measurements obtained by link measurement module 312, whether a degradation will occur in the wireless link during a second time period. Controller 310 may then provide this prediction to data controller 304, which may determine, based on the provided prediction, whether to reduce the amount of data being transmitted in the second time period over the wireless link, transmit data a higher power during the second time period, transmit data with a greater redundancy during the time period, not transmit data during the second time period over the wireless link, or continue transmitting data during the second time period.

[0086] In some embodiments, link measurement module 312 may obtain measurements of the wireless link during a first time period in any suitable way including in any of the ways described herein with reference to act 202 of process 200. For example, link measurement module 312 may transmit one or more probes via network interface 308 and receive information acknowledging receipt of the transmitted probe(s) via the network interface. Based on such measurements, link state prediction module 314 may predict whether the wireless link will experience a degradation during the second time period. The link state prediction module 314 may make this prediction in any suitable way including in any of the ways described with reference to acts 204 and 206 of process 200. For example, link state prediction module 314 may generate a sparse representation of measurements obtained by link measurement module 312, provide the sparse representation as input to a classifier and to obtain output from the classifier that may provide a prediction (and, optionally, a confidence value associated with the prediction) of whether the wireless link will experience a degradation during the second time period. The prediction and, optionally, confidence value may be provided in turn to data controller 304, which may determine whether the wireless link will experience a degradation based on the provided information.

[0087] An illustrative implementation of a computer system 400 that may be used in connection with any of the embodiments of the disclosure provided herein is shown in Fig. 4. The computer system 400 may include one or more computer hardware processors 410 and one or more articles of manufacture that comprise non-transitory computer-readable storage media (e.g., memory 420 and one or more non- volatile storage devices 430). The processor 410(s) may control writing data to and reading data from the memory 420 and the non-volatile storage device(s) 430 in any suitable manner. To perform any of the functionality described herein, the processor(s) 410 may execute one or more processor-executable instructions stored in one or more non-transitory computer-readable storage media (e.g., the memory 420), which may serve as non- transitory computer-readable storage media storing processor-executable instructions for execution by the processor(s) 410.

[0088] Some aspects of the technology described herein may be understood further based on the non-limiting illustrative embodiments described below in Sections 1-6. Any limitations of the embodiments described below in Sections 1-6 are limitations only of the embodiments described in Sections 1-6, and are not limitations of any other embodiments described herein.

[0089] 1. Discussion

[0090] Some embodiments provide for a State- Informed Link-Layer Queuing

(SILQ) system, a system that uses data-driven learning to mitigate the destabilizing effects of wireless link loss. SILQ predicts link state at, for example, the 100ms time- scale to anticipate temporary outages and buffer packets accordingly. Real-time predictions may be made by actively probing links, matching the resulting measurement sequences to an (e.g., overcomplete) dictionary of prominent patterns learned offline, and then classifying these sparse feature vectors to determine if they precede an outage. By preempting transmissions that are unlikely to succeed, SILQ reduces performance degradation caused when higher layers of the network stack react adversely to missing packets, for instance when TCP times out in a subway tunnel. Unlike conventional cross- layer approaches to this problem, SILQ does not break connections in the middle of the network or modify transport protocols.

[0091] SILQ's prediction model represents the state of a wireless link as a linear combination of a few canonical packet-loss patterns, called features. This sparse linear model cuts away noise and restores missing data to improve statistical accuracy in the face of real-world data variations. More-stable feature vectors can then be classified with a linear Support Vector Machine (SVM) or any other suitable classifier to identify outages. This technique produces stable predictions looking further ahead in time than standard techniques like regression. We demonstrate that this noise-, variation-, and deletion-tolerant model is computationally simple to allow for real-time operation on mobile devices, and also supports the design flexibility to trade prediction accuracy for bandwidth and power improvements.

[0092] We build our predictive link model by first learning a dictionary of link- state features offline. Training data consists of UDP packet receptions recorded in three scenarios:

1. An Unmanned Aerial Vehicle (UAV) flying over rural farmland

2. Users walking throughout an active office building and riding an elevator

3. Users traveling through a city on the subway

[0093] Features captured by the sparse coding techniques described herein, reflect the effects of line-of-sight occlusions, radio range limitations, and interference. Furthermore, we show that features are often universal across rural, urban, indoor, outdoor, high mobility, and low mobility links. In contrast, we find that our supervised SVM outage -predictors are specific to an environment, though predictions remain accurate over days, weeks, and months.

[0094] Performance of the sparse-coding link model is compared below to conventional modeling approaches based on loss-rate and heuristics in terms of both statistical accuracy and network throughput under predictive queuing. Ultimately, it is shown that SILQ boosts throughput in an indoor office by 2x when used with Linux TCP, while achieving 4x lower variation. SILQ further improves throughput by 4x on the Boston subway where 3G coverage is spotty. It is also demonstrated that the power overhead of our approach can be reduced to only 4-5% above a baseline data connection by updating predictions less frequently when the link is in a steady state.

[0095] 2. Test Scenarios

[0096] We begin by describing our UAV, indoor office, and urban subway environments. In each environment, we collect initial link measurements by transmitting 66-byte (66B) UDP probe packets every 1ms from a mobile node to a nearby base station that logs sequence numbers. We detect lost probes from non-sequential receptions and construct contiguous streams of probe deliveries, called "traces." These high-granularity traces are used to build a link model in Section 4, though we introduce an adaptive probing mechanism in Section 5.1 to reduce SILQ's runtime probing overheads.

[0097] In our experiments, transmitters and receivers are all off-the-shelf mobile devices. For 802.11 measurements in the UAV and indoor office scenarios, we use an array of laptops, Mobile Internet Devices (MIDs), and BeagleBone Blacks depending on weight, power, and portability restrictions. Each accesses the wireless medium using a T- Link TL-WN727 USB dongle, and we disable hardware retransmissions by sending packets in broadcast mode. For subway experiments, we access the 3G cellular network with an Android smartphone or by tethering nodes to an Apple iPhone 6. In this case, we cannot disable ARQ with cell towers, though the effect is constant throughout data.

[0098] Given the speed and range of our UAV links, we transmit at 1Mbps modulation for best symbol resilience. In order to compare results across environments, we rate-limit links in the office and subway to 1Mbps. In practice, SILQ has been scaled to 20Mbps and deployed on commercial 802.11, 3G, and LTE cellular networks.

[0099] 2.1 UAV Air -to -Ground Communication

[00100] Our UAV scenario consists of a fixed- wing SIG Rascal 110 flying a dumbell shaped pattern over an airfield in upstate New York on precipitation-free days, as shown in Figure 5A. Figure 5A shows a UAV's flight path over fields and farmland in upstate New York. Ground receivers are placed in three locations to capture the link characteristics of an open field, dense forest, and parking lot with surrounding ground structures. Autopilot maintains a consistent flight path to within 15m across laps, while keeping altitude steady at 100m and velocity at 20m/s. The property spans forest and farmland, contains fewer than 50 ground structures or cars at any time, and is free of 802.11 interference. Data collection is conducted over 802.11b with a single broadcast transmitter attached face-down to the UAV's wing.

[00101] Ground receivers are placed in identical orientations in three groups throughout the property to capture different signal-propagation characteristics:

[00102] 1. Field nodes at the end of the runway have clean line-of-sight to the

UAV during most of the flight. For them, packet loss is driven primarily by radio range.

[00103] 2. Ground structure nodes are placed in a parking lot partially surrounded by several 5m-tall metal buildings. Between 4 and 6 cars are parked within 10m of nodes, and vehicle positions change across flights. These structures create line-of-sight occlusions and multipath reflections that affect packet delivery depending on geometry and UAV position.

[00104] 3. Forest nodes are placed in a grove of fir trees at the end of the runway.

They capture similar link conditions to field nodes, though uneven ground, trees, branches, and leaves affect line-of-sight transmission.

[00105] This UAV scenario is of both experimental and operational interest. First, the simple interference-free environment is ideal for conducting controlled wireless experiments to serve as building blocks for more complicated scenarios. Second, UAV wireless communication has commercial applications in bridge and crop inspection, rural Internet relay, package delivery, and a myriad of military scenarios.

[00106] 2.2 Indoor Office

[00107] Our indoor office scenario is shown in Figure 5B, which shows a walking tour throughout an active office. Links are attenuated by concrete and brick, and obstructed by fire-proof doors and an elevator car.

[00108] A user carries a laptop throughout an office building while transmitting data to an 802.11 access point in a second-floor office. For each experiment, the user repeats a walking tour that crosses a footbridge to a nearby building and then returns for an elevator ride down three floors to the basement.

[00109] All experiments are conducted during high-traffic daytime hours when the building is used by several hundred students and faculty. We observe strong fluctuations in link quality due to signal attenuation through brick and concrete, as well as blockages from fire-proof doors and the elevator car. We also observe that signals are powerful enough to reach several floors to the basement, but that links can be blocked at ranges as short as 15m should fire doors occlude transmission. For this scenario, our data includes cross-channel interference from the building's 802.11 network.

[00110] 2.3 Subway

[00111] Our subway scenario is shown in Figure 5C, which shows packet loss rates over a 3G cellular network are shown on the subway in Boston, MA. Temporary dead zones in tunnels cause connection timeouts that leave links under-utilized, even when the train comes above-ground.

[00112] A user travels between Cambridge and Boston, MA in a train car that passes both below and above ground. Train speed varies depending on track conditions, and precise positioning is unknown within tunnels. The user transmits data from a mobile device to a server accessed via a first-hop 3G cellular connection and subsequent hops over wired Internet. We observe that round trip delays average 150ms and fluctuate within a manageable distribution. Queuing delays cause UDP probe packets to arrive in bursts of roughly consistent length and spacing.

[00113] As illustrated in Figure 5C we observe many regions of poor reception, but also extended regions of excellent reception when 3G repeaters are nearby or the subway crosses an above-ground bridge. This scenario is completely uncontrolled and is used to validate SILQ's methodology in an everyday situation of particular complexity.

[00114] 3. Predictive Link-State Modeling

[00115] In order to implement predictive queueing, we first build a model of wireless packet delivery for our three scenarios. In the literature, link models typically reflect two approaches: physical models that use signal propagation to explain packet loss, and data-driven models that mathematically capture those effects with statistics like correlation between packet receptions. Though physics-driven methods are intuitive, they require detailed environment- specific information as inputs. On the other hand, generic data-driven models can require training datasets that grow exponentially with temporal scale.

[00116] These two extremes are sometimes blended by location-based statistical models. However, we find that location information is generally a poor predictor of individual packet losses. For example, we observe in our UAV experiments that slight changes to antenna orientation drive major swings in link loss. We also see that the location of a single car close to ground-structure nodes causes drastic changes in packet loss behavior due to multipath reflection. Indoors, we see that loss characteristics change when doors are closed or metal objects are moved within offices. And in the subway, location information is not even available once the train descends underground. For these reasons, we eschew location information, in some embodiments, in pursuit of a more accurate, general packet loss model.

[00117] 3.1 A Sparse Coding Link Model

[00118] Sparse coding is an unsupervised clustering method that solves for an overcomplete matrix of recurring patterns in training data. We call that matrix a dictionary and its column vectors features. Under this framework, a data vector may be approximated as a linear combination of features in the dictionary. By constraining the number of features used, approximations are represented by sparse coefficient vectors with only a few non-zero entries. For data with noise or non-Gaussian variations like deletions, sparse approximations latch measurements to exemplar patterns, truncating weakly expressed information and restoring missing values. This process improves variation-tolerance in subsequent statistical analysis.

[00119] 3.1.1 Offline Dictionary Training

[00120] We learn dictionaries offline from a large set of link traces, effectively exploiting past data to improve statistical accuracy for future data. To this end we employ an optimization technique based on the Least Absolute Shrinkage and Selection Operator (LASSO) technique, which relaxes sparse coding's constraint on the number of non-zero feature coefficients b instead penalizing the sum of coefficient magnitudes

[00122] where D is a wX m dictionary containing m features of length w , x a normalized binary measurement vector representing the outcomes of w back-to-back probe transmissions, its sparse feature representation, and λ a tunable positive value. To implement dictionary training, we segment field traces into T windows of w measurements X ' for t = \..T objective produces qualitatively similar results to sparse coding but is convex, yielding stable, accurate solutions for D .

[00123] 3.1.2 Online Measurement Encoding [00124] While LASSO is effective for offline dictionary learning, it may be too computationally intensive to compute sparse codes in real-time on mobile devices.

Therefore, we use a D found by LASSO and solve for online (e.g., in real-time) according to:

min \\ x- Da\\ 2 2 s.t. \\ a\L≤k

[00125] aJ} (2)

[00126] with k a hard sparsity threshold. This alternative formulation can be greedily solved by Matching Pursuit (MP) technique using a series of inner-product tests that iteratively select k features to reduce a residual. MP has 0( mw ) complexity and we show in Section 6.4 that feature encoding is a negligible part of SILQ's running time.

[00127] The process of learning a dictionary by clustering may be thought of as a data-driven method for reducing the space of possible states in the model. For example, if we train a dictionary with many features and a small penalty parameter (e.g. m ~ 200 and λ ~ 0.1 ^ men D captures templates of frequently occurring link states. New link measurements are then matched to the closest template by setting ^ = 1. However, if the number of dictionary features is chosen to be small and lambda is chosen to be large (e.g. m ~ 20 an( j λ ~ 4 ^ men training will extract a small number of the most prominent patterns in each training example. This produces a set of more-general features that can be combined to enumerate observed link states, for example by encoding with k = 8 We call these features primitives. In Section 4, we will show that these latter linear- combinational models generalize well across networks and environments, addressing a key limitation of conventional wireless link models.

[00128] 3.2 Outage Prediction With Support Vector Machines

[00129] Using learned link primitives, we can build a predictive statistical model for all sorts of link-layer events that affect network performance. In this work, we use bulk data transport via TCP as an application vehicle to demonstrate SILQ's gains and define the prediction target to be any upcoming sequence of 192 probe measurements containing a single delivery failure. This represents back-to-back transmission failures of 1500B MTU data packets sent at 1Mbps with the Linux default 7 ARQ retries, assuming a round- trip time less than 100ms. Since most TCP implementations can recover quickly from a single packet drop using fast-retransmit, we instead try to detect these two-packet outages. We note that video streaming and transaction processing are other candidate applications for SILQ with potentially different prediction targets.

[00130] To implement binary event prediction, we use a linear SVM classifier, which finds a separating plane between training data belonging to two classes, designated by class labels; later, new data vectors are compared to the separating plane using an inner-product and threshold test to predict their class membership. Since SVM training data in our application requires both sparse feature vectors and corresponding labels, it is considered a supervised technique. To derive labels for our data, we annotate a subset of traces from each environment, setting ~ ^ when an outage followed the measurement vector in the trace and ~ ^ otherwise. In Section 4.2, we discuss approaches for optimizing over SVM configuration parameters.

[00131] 4. Training Models

[00132] 4.1 Learned Link Primitives

[00133] We first train dictionaries on field-collected traces using LASSO and examine the link primitives discovered in each of our scenarios. We learn separate dictionaries of size w = 20 w j m λ = 4 f rom eac h type of receiver: UAV field nodes, UAV forest nodes, UAV ground- structure nodes, indoor office nodes, and subway nodes. Figure 6 shows several features found often in each trace, with dips reflecting patterns of delivery failure and peaks capturing delivery successes.

[00134] We see that primitives learned across UAV ground receiver types are similar. Taken together, they capture examples of abrupt changes to the link, gradual transitions, intermittent packet drops, and temporary outages lasting 10' s of milliseconds. When we examine the distributions of nonzero coefficients in each trace's sparse representations, we find that field and forest nodes more often map to long runs of delivery successes or smooth gradual changes in link quality. This aligns with our experiment configuration, in which these nodes have the best connectivity, are far from any structures that can suddenly occlude line-of-sight transmission, and are affected mostly by radio range limitations. In contrast, the coefficients computed for ground- structure nodes more-often map to abrupt transitions as buildings block line-of-sight until the UAV is immediately overhead. [00135] Primitives learned in the office environment bear a striking resemblance to those learned from UAV receivers. We see a mixture of temporary outages affecting strong links, as well as abrupt on-to-off and off-to-on transitions. These links exhibit a greater degree of noisy variation than UAV nodes, possibly due to 802.11 cross-channel interference from the building's wireless network.

[00136] Subway atoms reflect the same general shapes, but prominently exhibit regular lOms-long oscillations in delivery. According to log files, average probe inter- arrival times over the 3G network display 10ms bursts of back-to-back deliveries, likely due to queueing delays. This means that unsupervised learning captures primitives reflecting both wireless-link and network effects.

[00137] 4.1.1 Separating Network Effects

[00138] As discussed in Section 3.1, sparse feature models may be configured either to match link states to a single template, or to express them as linear combinations of primitives. The practical result of this choice can be seen by comparing the primitives in Figure 6 to the template in Figure 7 learned from subway data using m = 200 and λ = 0.1 Figure 6 illustrates common link primitives learned from different environments using LASSO with w = 20 an( j λ = 4 -p^g i m ^ primitives capture fast and slow link transitions as well as bursts of delivery successes. Figure 7 illustrates a link-state templated learned from subway data. The effects of link loss and bursts due to network delays are captured together, contrasting with Figure 6, where they are separated into different primitives.

[00139] We see that templates simultaneously represent the concurrent effects of wireless link loss and network queuing delays. This contrasts with models based on linear combinations of primitives that automatically separate these effects.

[00140] This observation highlights the power of applying sparse coding to link modeling: our approach naturally expresses complicated network measurements in a simple, well- separated vector of high-level information - statistics can then be computed relative to this meta-information. In addition to supporting stable, intuitive statistical models, our method uses data-driven learning to identify link states that generalize beyond just their training data, reducing the need for extensive data collection in new scenarios.

[00141] 4.2 Tuning an SVM Predictor for Temporary Link Outages [00142] We next show how to tune a linear SVM to predict outages from sparse- coded link measurements. Fundamentally, SVMs separate classes of data by solving for a max-margin separator between training examples of each class. When used for detection, this allows us to obtain a tradeoff between true positive and false positive rates by shifting the SVM separator toward one class or another.

[00143] Within SILQ, a predictor's sensitivity ultimately affects realized network performance. Figure 8 illustrates this relationship in the context of an outage predictor and TCP throughput. In particular, Figure 8 illustrates the effect of outage detection sensitivity on TCP. Detectors that forward data aggressively run a high risk of timeout. Those that forward conservatively rarely time out, but often under-utilize the link.

[00144] Predictors tuned to forward packets aggressively raise few alarms, achieving low false positives but also low true positives. The result is a fast sending rate but a high risk of TCP timeout when outages are not well-predicted. At the other end of the spectrum are predictors tuned to forward data conservatively by raising many alarms, leading to a high true positive rate but also many false positives. These detectors rarely let timeouts happen, but severely underutilize links in good conditions.

[00145] In Figure 9, we show the empirical effect that prediction sensitivity has on throughput, measured in our indoor office scenario with the methodology of Section 6.2. In particular, Figure 9 shows throhgouput at various points on the outage detector's receiver operating characteristic (ROC) profile, empirically demonstrating the relationship described in Fig. 8 in our indoor office scenario. We also see that training paramters such as encoding sparsity k affect the ROC profile of the outage detector. We see that aggressive models achieve poor average throughput with a high standard deviation - while they opportunistically grab all available sending opportunities, they also often time out and cause throughput to drop to zero for a long period of time.

However, overly conservative models end up realizing lower throughput since they fail to send often enough when the link is usable.

[00146] We also see in Figure 9 that optimizing over sparse coding parameters like m , A 5 an( i k changes the resulting SVM predictor's ROC profile. For example, if we set m = 20 , but k = 2 ^ men me de ector is strictly worse than setting k = 4

[00147] Guided by these results, we reason that the best link model in terms of

TCP throughput should maximize correct outage predictions while ensuring plenty of sending opportunities. We implement this by choosing the model that maximizes outage recall, provided non-outage (i.e. sending opportunity) recall is above a threshold of 0.75.

Varying m , ^ , ^ , and the SVM's test threshold, we train dictionaries and SVMs while holding out a subset of traces for evaluation to obtain m = 20 , λ = 4 ^ an( j k = 4 as our best configuration. Examining our optimized link model, we notice that the SVM heavily weights three particular dictionary primitives, suggesting that TCP throughput is highly sensitive to a small number of link states.

[00148] 4.3 Transferring Features

[00149] While some link-state primitives may be unique to a particular

environment, Section 4.1 showed that similar features are found among scenarios.

Intuitively, these should represent common drivers of link loss like range effects in large open environments or abrupt transitions due to occlusions. We next empirically verify that learning captures canonical link characteristics that are common across diverse environments.

[00150] For Figure 10, we learn primitives from a single scenario and use them to compute sparse feature representations and train outage predictors in a different scenario. Figure 10 illustrates that outage-prediction recall is reported when dictionary primitives are learned in one scenario and applied in another. This establishes that learned link primitives are often universal across environments and networks.

[00151] We not only see that primitives generalize well across environments, but that some amount of data diversity actually improves outage recall, possibly serving as a defense against overfitting. We note that this trend does not hold when we use a template model - for example, we find that templates from the office scenario do not accurately characterize the queuing effects of the subway, hurting recall.

[00152] We also found that SVM separators do not port as well as dictionaries across scenarios, since the precise relationships between link states over time are environment-dependent. For example, a fast subway train may produce shorter temporal correlation between a degrading link and an upcoming outage than in the office scenario. However, we saw that SVMs trained on months-old data still provided good performance in the field, suggesting that such relationships are fundamentally stable. Since SVM training is less computationally intensive and requires less data than dictionary training, SILQ implements this function on-device to allow fast adaptation to new environments. [00153] 5. SILQ Architecture

[00154] To demonstrate throughput gains from the predictions of our sparse- coding link model, we implement SILQ for Linux and Android devices. At runtime, SILQ nodes each measure their outgoing links by transmitting UDP probes at a regular interval. Reception reports are then bounced back to senders, piggybacked on probes traveling in the opposite direction. After a regular measurement interval (100ms for all results in this document), each SILQ node computes a link prediction using the prior w measurements. If an outage is predicted, SILQ holds all data packets at the link layer until a new prediction indicates otherwise.

[00155] 5.1 Measurement Protocol

[00156] SILQ's measurement protocol is shown in Figure 11. SILQ's

measurement protocol piggybacks reception reports containing a bitmap of incoming probe receptions on outgoing probes. Senders use estimated round- trip-time ^ RTT to detect lost reception reports.

[00157] Nodes maintain a bitmap marking the last w incoming probes relative to the most recent, denoted ^ e ^ in . An arriving probe's sequence number is compared against ^ e Q < » to detect delivery failures before updating ^ n t an( j ^ e( l m Qur UDP probes use 69B to carry a reception report consisting of as a 3B bitmap and

^ e y as a 2B unsigned short.

d RTT

[00158] Nodes also maintain a round-trip-time estimate to detect lost reception reports. For example, if ^ out ~ probes are sent and only the first report successfully bounces back, the sender must compute how many reports should have

Seq out - d RTT^— = 19

arrived: 100ms . T is means that bi-directional probing captures asymmetric link effects, except when all reception reports are lost at the end of an interval. In this case, we make the conservative assumption that the link is off in both d RTT

directions. In practice, we find that disruptions due to fluctuation resolve after one or two missed 100ms windows, even on a crowded carrier network.

[00159] 5.1.1 Managing Probing Overheads [00160] Probing consumes both power and network bandwidth, resources that must be balanced against measurement fidelity. For example, in Section 6, Figures 14 and 15 show us that sending 20 probes per 100ms consumes 22% of bandwidth for a 1Mbps link and 9% additional battery for a laptop with a power-hungry USB radio.

[00161] Beyond simply reducing probe rate, we introduce a strategy for managing overhead by updating predictions less-frequently when the link is in a stable steady-state. This steady- state sleep mode detects sustained strong-connectivity or sustained outage by 3 consecutive all-1 or all-0/missing link reports, respectively. In this mode, SILQ updates predictions every isieep ms using a single round of probing. We set isieep so that regular prediction will resume in two cases:

[00162] Case 1: Good-to-Bad Transition When a good link degrades, outgoing data will be vulnerable to loss due to a stale state prediction. We therefore compute the portion of SILQ's sending ueue at risk and set isieep to ensure tolerable loss:

[00163] t ep = d x * - P Min ) ' - d RTT

[00164] where Min is the minimum number of packets that must be delivered to maintain the connection, ^ SIL< 3 is the current send-queue size, ^ TX is the transmission time of an MTU data packet, and ^ RTT is the time needed for a full link report to bounce back. For example, TCP uses a triple-duplicate- ACK to trigger fast recovery, so we set

^Min = 3 wjfh ^ = 1 10 ms, ^τχ = 12 ms, and a sending queue of ^ SILQ ~~ 50 packets, we can se ♦t ^s s l l e e e e p p = 454 ms.

[00165] Case 2: Bad-to-Good Transition When the link is unavailable, we can save power by turning the wireless radio off and waking periodically to check link status.

In this case, a large isleep risks underutilizing the link by slowing SILQ's reaction time. We tune this quantity empirically - for example we see an average 3 s delay between restored connectivity and SILQ's first predicted sending opportunity in our office scenario and conservatively set isieep ms to ensure that the link is checked every Is.

[00166] 5.2 Software Architecture & Implementation

[00167] SILQ's software architecture is shown in Figure 12. As shown, in this illustrative embodiment, the SILQ architecture includes of logically separated data and control channels that isolate link measurement protocols from data forwarding protocols. In our testbed, both access the same wireless medium using the same interface.

[00168] The example system used to demonstrate these results is implemented in user space for Linux and Android devices using netfilter_queue to administer packets within the kernel. Each node runs both data channel and control channel controllers - the data channel controller holds or forwards packets based on the current predicted link state, while the control channel controller is responsible for probing and providing measurements to a module, which may be termed a "finite-state machine (FSM) link- model" module. The logical separation between channels simplifies probing and data- delivery protocols, however both access the same wireless medium using the same wireless interface for all results in this paper. SILQ's FSMs are modular, allowing us to compare sparse coding to conventional modeling approaches in the field. We implement NO_OP (i.e. always-forward), Loss Rate Threshold, Heuristic Hold, and Sparse Coding FSMs. For all but the NO_OP FSM, trivial all-0 measurement vectors always predict outage, and trivial all-1 measurement vectors predict no-outage. For Loss Rate Threshold and Heuristic Hold, we use a "conservative" parameter to require back-to-back no-outage predictions before turning a bad link back on. This stabilization procedure is needed for loss-rate and heuristic predictors to achieve any throughput gains in the field. In contrast, we optimize the sparse coding FSM for stable prediction using the statistical methods of Section 4.2.

[00169] 6. System Evaluation

[00170] We evaluate SILQ in the UAV, office, and subway scenarios by measuring TCP throughput, power consumption, and CPU utilization. For these experiments, we train dictionaries and SVMs as in Section 4 and then transfer a large file from a mobile device to a remote server via TCP. We compare raw TCP to SILQ using predictions from sparse coding, loss-rate threshold, and heuristic models. Our heuristic holds data packets if all probes in a previous window are lost, representing the simplest method of coping with the long out-of-range regions in our UAV and subway tests. We empirically tune a loss-rate threshold and "conservative" parameters for comparison methods to maximize throughput.

[00171] We demonstrate gains in this document by comparing performance under a baseline TCP protocol - the Linux default TCP Cubic. We enable SACK-enhanced F- RTO for resilience over wireless links, use 9 keep alive probes, and allow 15 back- to- back timeouts before terminating a connection. Our wireless adapters use 7 ARQ retries for data packets, while we disable ARQ for probes over 802.11 links.

[00172] To control for differences in link quality, we compare overall throughput for different experiments using total data transferred divided by the total number of transmission opportunities for data packets. To illustrate the effect of small changes in experiment parameters like walking speed, Figure 13(a) and 13(b) shows plots of loss rate for two runs in our office scenario using faint green, yellow, and red bars. We see that the durations of both outages and regions with strong connectivity differ, biasing total throughput by affording more transmission opportunities during the run shown in Figure 13(a) independent of network protocol. Our comparison metric corrects for this effect in post-processing by counting only stable regions with back-to-back probe deliveries in our throughput denominator. In Figure 13 TCP throughput is plotted against the left axis in our indoor office scenario. For reference, link loss is plotted against the right axis. Link-state predictions are represented by markers at the top of each plot.

SILQ's optimal, aggressive, and conservative forwarders behave as anticipated, and TCP connections wake up quickly with SILQ.

[00173] 6.1 UAV Throughput in Emulation

[00174] Due to logistical barriers related to personnel, budget, and weather, we validate throughput in the UAV scenario using a lightweight link emulator. During emulated flights, SILQ runs on our UAV payload and ground nodes, while probe and data packets are sent over wired interfaces to a central controller that replays field traces. The emulation controller forwards packets to their destination only if a packet reception was recorded in the field trace. We emulate a 1Mbps link and compare 1500B MTU data packets against 12 back-to-back 1ms probes to reflect a 12ms transmission time. An error in any probe causes the data packet to be dropped. The controller simulates both ARQ and CSMA. Emulated traces are held out of the training datasets used for dictionary and SVM training.

[00175] We find that SILQ boosts throughput by 22% over a raw TCP connection for links to ground- structure nodes. This improvement from 529 kbps to 644kbps is attributed to the high-quality predictions of our sparse coding link model, as heuristic and loss-rate predictions hurt throughput by 5% and 10%, respectively. For field and forest nodes, SILQ produces little benefit to average throughput, but yields an extremely low throughput deviation of 19kbps across flights.

[00176] Examining UAV links by type, we find that SILQ's sparse-coding prediction to help most when link conditions vary often. Our learning approach successfully captures measurement sequences with strong predictive power caused by the complex geometry of nearby buildings and cars. In contrast, when loss is intermittent at radio range extremes, ARQ is enough to fix isolated losses. In all cases, we found that loss-rate and heuristic predictors underperform sparse coding - our heuristic only captures coarse outages lasting hundreds of milliseconds, while loss-rate predictions map both outages and intermittent losses to a single metric.

[00177] 6.2 Indoor Elevator/Office Environment

[00178] Next, we deploy SILQ in our indoor office environment. For these experiments, wireless links are stable when users are close to an access point, but exhibit both abrupt outages due to fire doors and gradual degradation caused by an elevator car.

[00179] Averaging five runs, SILQ improves throughput by 2x over a raw TCP connection, while reducing throughput variation by 4x. Predictions from our sparse coding model produce 15% higher throughput than the heuristic and 50% higher throughput than loss-rate predictions. We found it difficult to tune either comparison prediction-method to perform well over the entire walking tour - unlike sparse-coding, neither could cope with both abrupt link transitions and gradual link degradation using a single configuration. Average throughput in our indoor office scenario is shown in Figure 14, as the probe rate is reduced. Predictions from a sparse coding model are more resilient to low probe rates than heuristic or loss rate models. In Section 6.4, we show that this allows us to better match SILQ's power consumption to available resources.

[00180] Figure 13 shows a closer look at SILQ's performance over example runs in the indoor office. For reference, we plot link loss against the right axis. When appropriate, SILQ's link state predictions are shown at the top of a plot, with pink marker indicating that the link is predicted to be on, and whitespace showing a predicted outage. TCP throughput is plotted against the left axis.

[00181] In Figure 13(a), we see that TCP times out as soon as link conditions degrade and does not wake up until several minutes later. This causes the mobile device to miss sending opportunities during nearly 40% of the tour. In contrast, Figure 13(b) shows SILQ running with our best-tuned sparse-coding model, which predicts impending outages well and causes TCP to wake up rapidly. We also show SILQ's performance when our SVM outage predictor is tuned according to the True Positive/False Positive tradeoffs discussed in Section 4. We see how the more aggressive forwarder in Figure 13(c) sends often, but times out due to its optimism about link state. In contrast, the conservative forwarder in Figure 13(d) misses large portions of sending opportunities in an effort to avoid timeouts.

[00182] 6.3 Real-World Subway Environment

[00183] Our subway scenario validates SILQ "in the wild". This scenario exhibits a great deal of uncontrolled complexity - mobile nodes experience fast changes in velocity, sudden occlusions from tunnels, spotty connectivity to 3G repeaters, and competing wireless traffic. This scenario serves to demonstrate the strength of SILQ's end-to-end design since no code alterations or network configuration changes were needed for the system to function.

[00184] Figure 15 compares raw TCP to SILQ with a sparse coding predictor over subway rides between the Harvard Square and Charles-MGH stops. Note that Figure 15(a) represents an inbound trip from Harvard to Charles-MGH, and Figure 15(b) represents an outbound trip between the two stops in the opposite order. While a raw TCP connection times out for minutes at a time, SILQ utilizes nearly every available sending window and improves throughput by 4x over a six minute train ride. Figure 15 shows a comparison of a raw TCP connection to TCP atop SILQ using predictions from a sparse-coding link model during inbound and outbound subway rides. Over a 3G cellular network, raw TCP times out quickly and misses many sending opportunities. With SILQ, timeout is avoided and throughput increases by 4x.

[00185] 6.4 Profiling CPU & Battery Overheads

[00186] Finally, we profile SILQ's performance on two of our experimental devices: a Lenovo X200 laptop running a 1.86GHz Intel Core 2 Duo processor with a T- Link TL-WN722N USB wireless radio, and an HTC One (M8) smartphone running a 2.36GHz Qualcomm Snapdragon 801 ARM processor with onboard Wi-Fi. We run SILQ on each device with only baseline background-process activity. Throughout, screens are kept at their default brightness. On the laptop, we create network data traffic by transferring a large file via TCP to a remote server. On the phone, we have a user request popular web pages at a rate of roughly one site per 4 seconds. For both devices, we measure CPU utilization and battery consumption by averaging over 30 seconds.

[00187] We observe that SILQ uses only 2% CPU on the Intel chip, and 4% on the smartphone. Less than 1% of SILQ's runtime is spent computing predictions, with most time spent servicing packets. Using a dictionary of 30 atoms for w = 20 p ro bes per interval, SILQ's memory footprint is 972KB.

[00188] Figure 16 shows SILQ's power consumption for each device. In our office environment, our steady- state sleep mode reduces power consumption to 4% and 5% above an active data connection, depending on device. This method forgoes predictions when the link is in a steady-state. We see that lower probe rates reduce SILQ's power overhead significantly - for example, by 14% on the laptop and 6% on the phone when we drop from 20 to 14 probes per 100ms. We also report savings from our steady- state sleep mode in the indoor office environment. Since our devices prevent us from easily powering radios on and off without re-associating with access points, this savings is calculated in post-processing from SILQ's logs, based on recorded steady-state regions. When we compare SILQ's battery consumption overhead using the steady-state sleep mode to the power consumed by an active data connection, we see that our method only costs an additional 4% and 5% per device, utltimately for a 2-4x boost in throughput.

[00189] The terms "program" or "software" are used herein in a generic sense to refer to any type of computer code or set of processor-executable instructions that can be employed to program a computer or other processor (physical or virtual) to implement various aspects of embodiments as discussed above. Additionally, according to one aspect, one or more computer programs that when executed perform methods of the disclosure provided herein need not reside on a single computer or processor, but may be distributed in a modular fashion among different computers or processors to implement various aspects of the disclosure provided herein.

[00190] Processor-executable instructions may be in many forms, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed. [00191] Also, data structures may be stored in one or more non-transitory computer-readable storage media in any suitable form. For simplicity of illustration, data structures may be shown to have fields that are related through location in the data structure. Such relationships may likewise be achieved by assigning storage for the fields with locations in a non-transitory computer-readable medium that convey relationship between the fields. However, any suitable mechanism may be used to establish relationships among information in fields of a data structure, including through the use of pointers, tags or other mechanisms that establish relationships among data elements.

[00192] Various inventive concepts may be embodied as one or more processes, of which examples have been provided. The acts performed as part of each process may be ordered in any suitable way. Thus, embodiments may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative embodiments.

[00193] As used herein in the specification and in the claims, the phrase "at least one," in reference to a list of one or more elements, should be understood to mean at least one element selected from any one or more of the elements in the list of elements, but not necessarily including at least one of each and every element specifically listed within the list of elements and not excluding any combinations of elements in the list of elements. This definition also allows that elements may optionally be present other than the elements specifically identified within the list of elements to which the phrase "at least one" refers, whether related or unrelated to those elements specifically identified. Thus, for example, "at least one of A and B" (or, equivalently, "at least one of A or B," or, equivalently "at least one of A and/or B") can refer, in one embodiment, to at least one, optionally including more than one, A, with no B present (and optionally including elements other than B); in another embodiment, to at least one, optionally including more than one, B, with no A present (and optionally including elements other than A); in yet another embodiment, to at least one, optionally including more than one, A, and at least one, optionally including more than one, B (and optionally including other elements) ;etc.

[00194] The phrase "and/or," as used herein in the specification and in the claims, should be understood to mean "either or both" of the elements so conjoined, i.e., elements that are conjunctively present in some cases and disjunctively present in other cases. Multiple elements listed with "and/or" should be construed in the same fashion, i.e., "one or more" of the elements so conjoined. Other elements may optionally be present other than the elements specifically identified by the "and/or" clause, whether related or unrelated to those elements specifically identified. Thus, as a non-limiting example, a reference to "A and/or B", when used in conjunction with open-ended language such as "comprising" can refer, in one embodiment, to A only (optionally including elements other than B); in another embodiment, to B only (optionally including elements other than A); in yet another embodiment, to both A and B (optionally including other elements); etc.

[00195] Use of ordinal terms such as "first," "second," "third," etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed. Such terms are used merely as labels to distinguish one claim element having a certain name from another element having a same name (but for use of the ordinal term). The phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. The use of "including,"

"comprising," "having," "containing", "involving", and variations thereof, is meant to encompass the items listed thereafter and additional items.

[00196] Having described several embodiments of the techniques described herein in detail, various modifications, and improvements will readily occur to those skilled in the art. Such modifications and improvements are intended to be within the spirit and scope of the disclosure. Accordingly, the foregoing description is by way of example only, and is not intended as limiting. The techniques are limited only as defined by the following claims and the equivalents thereto.