U.S. patent application number 17/573473 was filed with the patent office on 2022-05-05 for managing data transfers over network connections based on priority and a data usage plan.
The applicant listed for this patent is Microsoft Technology Licensing, LLC. Invention is credited to Shai GUDAY, Yue JIANG, Alec Garvin KWOK, Kenneth Vincent MA, Gregory James SCOTT, Gil ZALMANOVITCH.
Application Number | 20220141110 17/573473 |
Document ID | / |
Family ID | 1000006079110 |
Filed Date | 2022-05-05 |
United States Patent
Application |
20220141110 |
Kind Code |
A1 |
ZALMANOVITCH; Gil ; et
al. |
May 5, 2022 |
MANAGING DATA TRANSFERS OVER NETWORK CONNECTIONS BASED ON PRIORITY
AND A DATA USAGE PLAN
Abstract
Embodiments manage use of different network connections for data
transfer in view of priority information and a data usage plan
identifying threshold limits associated with the different network
connections. A computing device receives data transfer requests
from applications executing on the computing device. The data
transfer requests have priority information associated therewith.
The computing device compares the priority information with
available network connections. One or more of the data transfer
requests are selected for initiation based on the comparison and on
the threshold limits.
Inventors: |
ZALMANOVITCH; Gil; (Seattle,
WA) ; SCOTT; Gregory James; (Seattle, WA) ;
GUDAY; Shai; (Redmond, WA) ; KWOK; Alec Garvin;
(Redmond, WA) ; JIANG; Yue; (Redmond, WA) ;
MA; Kenneth Vincent; (Seattle, WA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Microsoft Technology Licensing, LLC |
Redmond |
WA |
US |
|
|
Family ID: |
1000006079110 |
Appl. No.: |
17/573473 |
Filed: |
January 11, 2022 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
15876094 |
Jan 19, 2018 |
11223549 |
|
|
17573473 |
|
|
|
|
13721066 |
Dec 20, 2012 |
9900231 |
|
|
15876094 |
|
|
|
|
61696472 |
Sep 4, 2012 |
|
|
|
61591503 |
Jan 27, 2012 |
|
|
|
61591509 |
Jan 27, 2012 |
|
|
|
Current U.S.
Class: |
709/224 |
Current CPC
Class: |
H04L 43/062 20130101;
H04L 43/045 20130101; H04W 4/24 20130101; H04W 8/186 20130101; H04L
43/0876 20130101; H04M 15/58 20130101; H04M 15/41 20130101; H04M
15/83 20130101; H04M 15/7652 20130101; H04M 15/60 20130101; H04M
15/854 20130101; H04M 15/846 20130101; H04M 15/8044 20130101; H04M
15/765 20130101; H04M 15/85 20130101; H04L 12/1435 20130101; H04W
4/70 20180201; H04L 43/04 20130101; H04M 15/856 20130101; H04M
15/84 20130101; H04M 15/853 20130101; H04W 8/18 20130101; H04W
88/06 20130101; H04W 4/60 20180201; H04W 24/02 20130101; H04M 15/80
20130101; H04M 1/72403 20210101; H04M 15/86 20130101; H04M 15/775
20130101 |
International
Class: |
H04L 43/0876 20060101
H04L043/0876; H04W 4/60 20060101 H04W004/60; H04L 12/14 20060101
H04L012/14; H04M 15/00 20060101 H04M015/00; H04W 24/02 20060101
H04W024/02; H04L 43/04 20060101 H04L043/04; H04L 43/045 20060101
H04L043/045; H04W 4/24 20060101 H04W004/24; H04L 43/062 20060101
H04L043/062; H04W 8/18 20060101 H04W008/18; H04W 4/70 20060101
H04W004/70 |
Claims
1. A system for managing use of network connections for data
transfer, said system comprising: a memory area associated with a
computing device, said memory area storing a plurality of data
transfer requests received from at least one application of a
plurality of applications executing on the computing device, the
memory area further storing priority information associated with
the plurality of data transfer requests; and a processor programmed
to: compare the priority information stored in the memory area with
a plurality of available network connections; select, from the
received plurality of data transfer requests, a data transfer
request identified as a high priority data transfer request for
initiation over a first network connection of the plurality of
network connections based on the comparison; notify the application
associated with the selected data transfer request, the application
initiating the selected data transfer request; detect an absence of
the first network connection; determine that all other available
network connections have data transfer costs that are greater than
a data transfer cost associated with the first network connection;
based on the determination that all other available network
connections have data transfer costs that are greater than a data
transfer cost associated with the first network connection,
determine that none of the other available network connections
should be used to initiate data transfer requests unless the data
transfer requests are high priority; notify the application
associated with the selected data transfer request of the detected
absence; and based on notifying the application associated with the
selected data transfer request of the detected absence, the
application executes the selected data transfer request over one or
more of the available network connections.
Description
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is a continuation of U.S. Non-Provisional
application Ser. No. 15/876,094, filed Jan. 19, 2018 (now U.S. Pat.
No. 11,223,549, issued on Jan. 11, 2022), which claims the benefit
of U.S. Non-Provisional application Ser. No. 13/721,066 filed Dec.
20, 2012 (now U.S. Pat. No. 9,900,231, issued Feb. 20, 2018), which
claims the benefit of U.S. Provisional Application No. 61/696,472,
filed Sep. 4, 2012, U.S. Provisional Application No. 61/591,503,
filed Jan. 27, 2012, and U.S. Provisional Application No.
61/591,509, filed Jan. 27, 2012. The entireties of these
applications are hereby incorporated by reference herein.
[0002] This application is related to the following applications:
U.S. patent application entitled "Tracking Data Usage Under a
Schematized Data Usage Plan," U.S. patent application entitled
"On-Device Attribution of Network Data Usage," U.S. patent
application entitled "Predicting Network Data Consumption Relative
to Data Usage Patterns," U.S. patent application entitled "Updating
Dynamic Data Usage Plans and Statistics," U.S. patent application
entitled "Data Usage Profiles for Users and Applications," U.S.
patent application entitled "Recommendations for Reducing Data
Consumption Based on Data Usage Profiles," U.S. patent application
entitled "Dynamically Adjusting a Data Usage Plan Based on Data
Usage Statistics," and U.S. patent application entitled "Managing
Network Data Transfers in View of Multiple Data Usage Plans." All
of these applications are incorporated by reference herein in their
entirety.
BACKGROUND
[0003] With the increased popularity of smart telephones, tablets,
and other mobile devices, there has been a similar increase in the
amount of data handled by the networks of mobile operators. To
reduce the strain on network infrastructure and to reduce network
transfer costs, mobile operators are shifting from offering
unlimited mobile data plans to offering capped and metered plans.
With some of the capped and metered plans, the fees for exceeding
the allotted data caps may be significant. While some existing web
browsers attempt to optimize data traffic, the existing systems
generally lack mechanisms for balancing specific needs of each user
with data transfer costs. As a result, with the existing systems,
users can unknowingly exceed the allotted data caps and experience
bandwidth throttling (e.g., a reduction or limit placed upon the
rate of consumption) and/or be presented with a much larger than
normal monthly bill, resulting in "bill shock." Throttling and bill
shock can impact the user experience, leading to dissatisfied
customers, increased customer service calls, and negative
impressions of the mobile operators.
SUMMARY
[0004] Embodiments of the disclosure manage use of network
connections for data transfer. A first computing device receives a
plurality of data transfer requests from one or more applications
executing on the first computing device. Each of the plurality of
data transfer requests has priority information associated
therewith. The priority information is compared with one or more
network connections between the first computing device and a second
computing device. One or more of the received plurality of data
transfer requests are selected for initiation based at least on the
comparison and based on a data usage plan associated with a user of
the first computing device. In other embodiments, the data transfer
requests are selected for initiation based on other factors or
considerations in addition to the priority information.
[0005] This Summary is provided to introduce a selection of
concepts in a simplified form that are further described below in
the Detailed Description. This Summary is not intended to identify
key features or essential features of the claimed subject matter,
nor is it intended to be used as an aid in determining the scope of
the claimed subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
[0006] FIG. 1 is an exemplary block diagram illustrating a
computing device communicating with a plurality of other devices
via one or more network connections.
[0007] FIG. 2 is an exemplary flow chart illustrating operation of
the computing device to map data transfer requests to detected
network connections based on priority information.
[0008] FIG. 3 is an exemplary sequence diagram illustrating
notification of network connection availability for initiation of
data transfer requests.
[0009] FIG. 4 is an exemplary graph illustrating data consumption
compared to a data usage plan.
[0010] Corresponding reference characters indicate corresponding
parts throughout the drawings.
DETAILED DESCRIPTION
[0011] Referring to the figures, embodiments of the disclosure
enable prioritizing of data transfer requests 112 to manage data
consumption. In some embodiments, a service executing on a
computing device 102 allows applications 110 to define priority
information 114 for each of the data transfer requests 112. The
service matches available network connections 132 to the data
transfer requests 112 based on the priority information 114 and, in
some embodiments, on data usage statistics 120 in view of a data
usage plan 116. The data usage statistics 120 are used to determine
whether a user and/or computing device 102 is under track, on
track, or off track for usage compared to allotted usage under the
data usage plan 116. For example, the data usage plan 116 may be
associated with the user 104, computing device 102, a group of
users 104, a group of computing devices 102, or any combination
thereof. In some embodiments, the service notifies the selected
applications 110 when the network connection 132 matching the
requested priority information 114 is no longer available and/or
when the data usage is predicted to exceed a billing period
allotment. In response, the application 110 is able to halt data
transfers to preserve data consumption for tasks with higher
priority.
[0012] Aspects of the disclosure further enable applications 110 to
prioritize and balance data transfers based on user experience
immediacy requirements. For example, the applications 110 may defer
lower-priority operations to non-costed network connections 132.
This enables the computing device 102 to differentiate urgency of
traffic to minimize the amount of data transferred over any
particular network type when the device is on a free Wi-Fi
connection, pay-based Wi-Fi connection, tethered connection,
cellular connection, multi-SIM devices, etc.
[0013] Referring next to FIG. 1, an exemplary block diagram
illustrates the computing device 102 (e.g., a first computing
device) communicating with one or more other devices 130 (e.g.,
second computing devices) via one or more network connections 132.
In the example of FIG. 1, the computing device 102 associated with
the user 104 represents a system for managing use of network
connections 132 for data transfer. The computing device 102
represents any device executing instructions (e.g., as application
programs, operating system functionality, or both) to implement the
operations and functionality associated with the computing device
102. The computing device 102 may include a mobile computing device
or any other portable device. In some embodiments, the mobile
computing device includes a mobile telephone, laptop, tablet,
computing pad, netbook, gaming device, and/or portable media
player. The computing device 102 may also include less portable
devices such as desktop personal computers, kiosks, and tabletop
devices. Additionally, the computing device 102 may represent a
group of processing units or other computing devices.
[0014] In some embodiments, the computing device 102 has at least
one processor 106, a memory area 108, and at least one user
interface (e.g., a touch screen or natural user interface). The
processor 106 includes any quantity of processing units, and is
programmed to execute computer-executable instructions for
implementing aspects of the disclosure. The instructions may be
performed by the processor 106 or by multiple processors executing
within the computing device 102, or performed by a processor
external to the computing device 102. In some embodiments, the
processor 106 is programmed to execute instructions such as those
illustrated in the figures (e.g., FIG. 2).
[0015] In some embodiments, the processor 106 represents an
implementation of analog techniques to perform the operations
described herein. For example, the operations may be performed by
an analog computing device and/or a digital computing device.
[0016] The computing device 102 further has one or more computer
readable media such as the memory area 108. The memory area 108
includes any quantity of media associated with or accessible by the
computing device 102. The memory area 108 may be internal to the
computing device 102 (as shown in FIG. 1), external to the
computing device 102 (not shown), or both (not shown). In some
embodiments, the memory area 108 includes read-only memory and/or
memory wired into an analog computing device.
[0017] The memory area 108 stores, among other data, one or more of
the applications 110. The applications 110, when executed by the
processor 106, operate to perform functionality on the computing
device 102. Exemplary applications 110 include mail application
programs, web browsers, calendar application programs, address book
application programs, messaging programs, media applications,
location-based services, search programs, and the like. The
applications 110 may communicate with counterpart applications or
services such as web services accessible via one or more networks.
For example, the applications 110 may represent downloaded
client-side applications that correspond to server-side services
executing in a cloud.
[0018] As another example, the applications 110 may send and
receive data over one or more network connections 132 to other
devices 130 or services. For example, the network connections 132
may include Wi-Fi, cellular, BLUETOOTH brand communication,
near-field communication (NFC), and other types or configurations
of one or more of the networks.
[0019] The memory area 108 further stores a plurality of data
transfer requests 112 received from one or more of the applications
110. The data transfer requests 112 represent requests by the
applications 110 for use of at least one of the network connections
132. In some embodiments, each data transfer request 112 has
priority information 114 associated therewith. The priority
information 114 indicates a priority for association with the data
transfer request 112, such as a level, degree, type, or other
relative or absolute ordering information in a hierarchy of
priorities.
[0020] The priority information 114 for a particular data transfer
request 112 may be provided by the application 110 providing the
particular data transfer request 112. In other embodiments, the
priority information 114 may be linked to characteristics or type
of data transfer requests 112 or applications 110 providing the
data transfer requests 112. For example, the priority information
114 associated with data transfer requests 112 from a mail
application program may indicate a higher priority than priority
information 114 associated with data transfer requests 112 from a
social networking application program.
[0021] Exemplary priority information 114 includes priorities such
as Explicit, Background, Opportunistic, and Predictive, as
described in Table 1 below. Aspects of the disclosure, however, are
not limited to the following exemplary priorities or
descriptions.
TABLE-US-00001 TABLE 1 Exemplary Priority Information. Priority
Description Priority 1 (P1) Explicit user operation This priority
is associated with a data transfer request resulting from an action
the user has taken, either directly through the user interface or
via a settings page. The action may be a single or recurring
operation that the user expects to be initiated, invoked, and/or
completed based on time or event. The data transfer request is
known or expected to consume data, and the data transfer request
should not be deferred. Priority 2 (P2) Background (e.g., This
priority is associated with a data explicit intent/ transfer
request resulting from a user action implicit core that does not
directly request to consume experience) data. If the data transfer
request is not completed immediately, or at a specified time, the
user experience will not be impacted negatively, but may lead to
visible, noticeable, and/or perceptible differences in the user
experience. Priority 3 (P3) Opportunistic This priority is
associated with a data operation (e.g., transfer request that, if
not completed at a deferred operation) specified time, will not
impact the user experience negatively. The data transfer request
may be scheduled when there is a low or very low risk of exceeding
the threshold values under the data usage plan. Priority 4 (P4)
Predictive operation This priority is associated with a data
transfer request that does not have a specific target completion
time, but should rather be performed upon detecting appropriate
opportunities based on heuristics.
[0022] An example of a P4 data transfer request may be sent by one
of the applications 110 that determines that the user 104 is
leaving for Vancouver soon (e.g., based on an analysis of an
electronic calendar of the user 104). The application 110 generates
the data transfer request with priority P4 to download relevant
navigation map tiles opportunistically before the trip, such as
while on a free or reduced cost connection (e.g., Wi-Fi rather than
cellular). When the trip begins, the computing device 102 may then
already have the navigation map tiles thereby reducing data usage
on a cellular or roaming network connection 132.
[0023] The memory area 108 further stores the data usage plan 116.
The data usage plan 116 represents, for example, the mobile data
plan agreement between the user and the mobile operator. The data
usage plan 116 defines the usage limits associated with data
transfer to/from the computing device 102, and/or usage limits
associated with other devices of the user (e.g., mobile device,
tablet, and laptop). The usage limits may also be associated with a
group of users 104 or group of devices 102 (such as in a shared
plan embodiment). In some embodiments, the data usage plan 116
describes threshold values 118 associated with at least one of the
network connections 132. For example, the data usage plan 116 may
indicate that two megabytes per month of data transfer over a
digital cellular network connection 132 is available, while there
is unlimited data transfer available over a Wi-Fi network
connection 132.
[0024] The computing device 102 monitors data transfer usage by the
applications 110, and generates data usage statistics 120. The data
usage statistics 120 represent an amount of network data consumed
by the computing device 102 under the data usage plan. The data
usage statistics 120 identify, to a granularity of time (e.g., per
minute) or data (e.g., per kilobyte), how much data has been sent
and/or received by the computing device 102, the time and date of
usage (e.g., start and end times), the location of usage, network
interface used (e.g., over which network connections), roaming
state, data usage plan information, the subscriber identity module
(SIM) or other user identity module used for dual SIM scenarios,
the international mobile station equipment identity (IMEI) or other
device identifier for multi-device scenarios, the Internet protocol
(IP) address or other address of the access point used for Wi-Fi
scenarios, the IP address or other address of a target computer
(e.g., for whitelist/blacklists in data usage), the application
responsible for the data transfer, and the like. In a further
example, information relating to text messages, data, voice calls,
minutes used, voice over Internet Protocol (VoIP) usage, and any
other element of usage consumed by, or that impacts, the computing
device 102 is collected to produce the data usage statistics 120.
Other data usage statistics 120 are also contemplated.
[0025] The memory area 108 further stores one or more
computer-executable components. Exemplary components include an
interface component 122, a type component 124, a priority component
126, and a notification component 128. Operation of these
components, when executed, is described below with reference to
FIG. 2.
[0026] Referring next to FIG. 2, an exemplary flow chart
illustrates operation of the computing device 102 to map data
transfer requests 112 to detected network connections 132 based on
priority information 114. While the operations illustrated in FIG.
2 are performed by a mobile computing device in some embodiments,
one or more of the operations may be performed by other devices,
including any computing device local to, or remote from, the user
104. For example, the operations may be performed by a proxy device
in communication with the mobile computing device. Further, in some
embodiments, the operations illustrated in FIG. 2 are performed by
an operating system executing on the mobile computing device.
[0027] At 202, the computing device 102 detects, or is informed of,
available network connections 132 between the computing device 102
(e.g., a first computing device) and one or more other computing
devices (e.g., second computing devices). For example, the
computing device 102 may determine whether the network connection
132 has been established and/or has not expired. As another
example, the computing device 102 may actually send a test packet
(e.g., a ping) over each open network connection 132 to confirm the
availability of each network connection 132. In some embodiments,
the computing device 102 may further classify each of the detected
network connections 132. For example, the network connections 132
may be classified according to type, speed, cost, and/or other
factors or criteria.
[0028] The computing device 102 accesses at least one of the data
transfer requests 112 from the applications 110. For example, the
computing device 102 may access the memory area 108 to retrieve or
obtain the data transfer requests 112 that have been stored there
by the applications 110, or the computing device 102 may receive
the data transfer requests 112 from the applications 110 directly.
The computing device 102 determines the priority information 114
associated with each of the data transfer requests 112. For
example, the priority information 114 for one or more of the data
transfer requests 112 may be specified by the requesting
applications 110 or by a software vendor associated with the
requesting applications 110. For those data transfer requests 112
lacking the priority information 114, the computing device 102 may
assign default priority information 114.
[0029] At 204, the priority information 114 for each of the
accessed data transfer requests 112 is compared with the detected
network connections 132 (and possibly the classifications
associated therewith). In some embodiments, the priority
information for one or more of the data transfer requests 112
includes a quality of service (QoS) requirement or request
associated with the data transfer requests 112. The QoS
requirements may be expressed by the applications 110. In some
embodiments, other factors or considerations are contemplated. The
other factors include a battery level (e.g., power remaining) for
the computing device 102, which may be compared against the amount
of power anticipated to be consumed by initiating the data transfer
requests 112 over the network connections 132.
[0030] At 206, the computing device 102 selects one or more of the
accessed data transfer requests 112 for initiation based on the
comparison, resulting in assignments between the one or more
accessed data transfer requests 112 and the detected network
connections 132. The relationship between the selected data
transfer requests 112 and the network connections 132 may be
stored, for example, in a file, table, database, or other data
structure. In some embodiments, the computing device 102 attempts
to match the requested priority information 114 with the available
network connections 132.
[0031] For example, using the exemplary priority information 114
described above in Table 1, priority P1 data transfer requests may
be matched to any cellular or Wi-Fi network connections 132,
priority P2 data transfer requests may be matched to any cellular
or Wi-Fi network connections 132 when the computing device 102 is
not roaming, priority P3 data transfer requests may be matched to
any Wi-Fi network connections 132, and priority P4 data transfer
requests may be matched only to free or otherwise non-costed Wi-Fi
network connections 132.
[0032] Selection of the accessed data transfer requests 112 may
further include analyzing the data usage plan 116 associated with
the user 104 and/or computing device 102. For example, the
computing device 102 may track a cumulative amount of data
transfers occurring over each of the network connections 132. The
computing device 102 compares the tracked, cumulative amounts to
the corresponding threshold values 118 associated with each of the
network connections 132. Alternatively or in addition, the
computing device 102 compares a projection of the tracked,
cumulative amounts (e.g. associated with the end of the billing
cycle) to the corresponding threshold values 118 associated with
each of the network connections 132. The computing device 102
selects one or more of the data transfer requests 112 based on the
comparison. For example, the computing device 102 determines
whether the tracked, cumulative amounts of the available network
connections 132 are less than the corresponding threshold values
118. If the computing device 102 determines that there is remaining
data consumption available over particular, available network
connections 132 (e.g., the cumulative amounts are less than the
threshold values 118), the computing device 102 proceeds to match
the data transfer requests 112 to those network connections 132.
For the network connections 132 over which no further data
consumption is available, the computing device 102 removes those
network connections 132 from consideration when assignment data
transfer requests 112 to network connections 132. The threshold
values 118 may be obtained from the data usage plan 116.
[0033] For example, the computing device 102 may correlate the
detected network connections 132 with current consumption under the
data usage plan 116 to determine which of the network connections
132 are available to the applications 110 as shown in Table 2
below. Table 2 below continues use of the example priorities
provided in Table 1 above.
TABLE-US-00002 TABLE 2 Exemplary Match Criteria for Relative
Consumption Under Data Usage Plan. Priority Match Criteria Priority
1 (P1) Explicit user operation For a data transfer request having
priority P1, match to any network connection when the user is Off
Track, On Track, or Under Track Priority 2 (P2) Background (e.g.,
For a data transfer request having priority explicit intent/ P2,
match to any network connection only implicit core when the user is
On Track or Under Track, experience) or on an unlimited plan (e.g.,
no threshold values or limits). Priority 3 (P3) Opportunistic For a
data transfer request having priority operation (e.g., P3, match to
any network connection only deferred operation) when the user is
Under Track, or on an unlimited plan (e.g., no threshold values or
limits). Priority 4 (P4) Predictive operation For a data transfer
request having priority P4, match to any network connection only
when the user is on an unlimited plan (e.g., no threshold values or
limits).
[0034] If multiple network connections 132 are available, the
computing device 102 may sort the network connections 132 when
notifying the applications 110. For example, the network
connections 132 may be sorted from free to expensive, and/or fast
to slow.
[0035] The computing device 102 initiates the selected data
transfer requests 112 or may notify, at 208, the associated
applications 110 of the selection to enable those applications 110
to initiate at least one of their corresponding, selected data
transfer requests 112.
[0036] After analyzing the network connections 132 at 202, the
computing device 102 may conclude that one of the network
connections 132 previously detected is no longer available, or is
about to be no longer available. If the computing device 102
detects such an absence or anticipated absence of one or more of
the previously detected network connections 132 at 210, the
computing device 102 identifies the application(s) 110 that may be
attempting to perform data transfers with the now-absent network
connection 132. For example, the computing device 102 may analyze
the previous mappings or assignments between data transfer requests
112 and network connections 132. At 212, the computing device 102
notifies those applications 110 of the detected absence of the
network connections 132.
[0037] In response, the notified applications 110 may suspend or
postpone performance of their data transfer requests 112 over the
now-absent, or soon-to-be-absent, network connections 132. The
notified applications 110 may then initiate one or more of the
suspended or postponed data transfers over a different network
connection 132 that is available. For example, if the computing
device 102 detects that a first network connection 132 is no longer
available, the applications 110 may suspend performance over the
first network connection 132 and resume or initiate performance
over a second network connection 132. In embodiments in which a
data transfer cost associated with the second network connection
132 is greater (or more expensive) than a data transfer cost
associated with the first network connection 132, or based on the
data usage statistics 120, the applications 110 (and/or the
priority component 126) may choose to not use the second network
connection 132. Instead, the applications 110 may attempt to
prevent performance of the data transfer requests 112 over the
second network connection 132 to prevent incurring higher network
transfer costs for the user 104.
[0038] In some embodiments, one or more of the operations
illustrated in FIG. 2 are performed by the computer-executable
components illustrated in FIG. 1. For example, the interface
component 122, when executed by the processor 106 of the computing
device 102, causes the processor 106 to receive a plurality of the
data transfer requests 112 from one or more of the applications 110
executing on the computing device 102. The type component 124, when
executed by the processor 106 of the computing device 102, causes
the processor 106 to classify one or more of the network
connections 132 detected between the computing device 102 and at
least one other computing device. The priority component 126, when
executed by the processor 106 of the computing device 102, causes
the processor 106 to assign one or more of the data transfer
requests 112 to the classified network connections 132 based on the
priority information 114 and remaining bandwidth (e.g., remaining
data consumption) associated with the classified network
connections 132. The data consumption remaining may be determined
from the data usage plan 116 and/or the data usage statistics 120.
In some embodiments, the priority component 126 sorts the network
connections 132 based on the classifications from the type
component 124. The notification component 128, when executed by the
processor 106 of the computing device 102, causes the processor 106
to notify the applications 110 of the assigned data transfer
requests 112.
[0039] Referring next to FIG. 3, an exemplary sequence diagram
illustrates notification of network connection 132 availability for
initiation of the data transfer requests 112. One or more of the
applications 110 register with an event scheduler 302, or other
component executing on the computing device 102 for assignments
between the data transfer requests 112 and the network connections
132. One or more of the registered applications 110 requests use of
at least one of the network connections 132 to initiate a data
transfer (e.g., send or receive). Those applications 110 may also
provide the priority information 114 associated with the data
transfer requests 112.
[0040] A core networking component 304 executes on the computing
device 102 to detect the network connections 132 available to the
computing device 102. The core networking component 304 may analyze
each of the network connections 132 continuously (e.g., without
interruption) or continually (e.g., periodically), such as every
minute. In other embodiments, the core networking component 304
analyzes each of the network connections 132 upon receiving a
request for use of at least one of the network connections 132 from
at least one of the applications 110. Further, the core networking
component 304 may have different schedules for checking different
network connections 132. For example, the core networking component
304 may check the availability of a Wi-Fi connection less
frequently than the availability of a roaming cellular
connection.
[0041] In addition to checking the presence or absence of the
networking connections, the core networking component 304 (or
another component executing on the computing device 102) may check
the data usage statistics 120 when determining whether a particular
networking connection is available for use by the applications 110.
If the user 104 and/or device has exceeded, or is about to exceed,
the threshold values 118 for a particular network connection 132,
the core networking component 304 may determine that the particular
network connection 132 is not "available" to avoid incurring extra
charges under the data usage plan 116.
[0042] The core networking component 304 notifies the event
scheduler 302 of the presence and/or absence of the network
connections 132. Upon receipt of this notification, the event
scheduler 302 maps or matches the queued data transfer requests 112
to the available network connections 132. For example, if the
notification from the core networking component 304 indicates that
a network connection 132 with priority X is available, the event
scheduler 302 identifies the registered applications 110 that have
sent or queued data transfer requests 112 having priority
information 114 specifying priority X.
[0043] Referring next to FIG. 4, an exemplary graph illustrates
data consumption compared to an exemplary data usage plan 116. In
the example of FIG. 4, the exemplary data usage plan 116 indicates
that 200 megabytes (MB) is the threshold values 118 for a
particular network connection 132 type (e.g., cellular) each month.
Other threshold values 118 (e.g., other than 200 MB) and other
billing periods (e.g., other than one month) are contemplated. The
line in the graph in FIG. 4 reflects the linear usage of the 200 MB
over the course of the month. However, other data usage patterns
such as non-linear patterns are also contemplated. In general, the
shape of the usage curve is fit to, or otherwise dependent on, the
pattern of the usage (e.g., the data usage pattern). For example,
the data usage patterns may be based on the historical network data
consumption of the user 104 and/or other users 104.
[0044] The computing device 102 and/or the mobile operator track
the data consumption by the user 104 and/or computing device 102 to
generate the data usage statistics 120. The circles in the graph
indicate the approximate areas where the user 104 and/or computing
device 102 is Off Track (e.g., usage greater than the data usage
pattern, the user 104 is on track to exceed 200 MB of data
consumption before the end of the month), On Track (e.g., usage
approximately equal to the data usage pattern, the user 104 is on
track to consume 200 MB around the end of the month), and Under
Track (e.g., usage less than the data usage pattern, the user 104
is not on track to consume the full 200 MB before the end of the
month).
[0045] In some embodiments, Off Track may be defined as the user
104 being on or above the projected limit (e.g., the value of the
curve) given the day of the billing cycle and the current or
up-to-date data consumption for the billing period. For example,
given the day of the billing cycle and the current or up-to-date
data consumption for the billing period, an extrapolation or
projection is performed to predict the consumption associated with
the end of the billing cycle. Similarly, On Track may be defined as
the user 104 being at least 5% below the projected limit given the
day of the billing cycle and the current or up-to-date data
consumption for the billing period. Under Track may be defined as
the user 104 being at least 20% below the projected limit given the
day of the billing cycle and the current or up-to-date data
consumption for the billing period. In some further embodiments, a
notification is sent to the user 104 and/or applications 110 if the
data usage is within 10% of the limit for a particular network
connection 132 at any point during the billing period. The
computing device 102 may then halt priority P3 data transfer
requests using that network connection 132.
[0046] Some embodiments contemplate an "Over Limit" category that
allows users to opt out of data consumption by background transfers
unless the background transfer are user-initiated or deemed
critical.
Additional Examples
[0047] At least a portion of the functionality of the various
elements in FIG. 1 may be performed by other elements in FIG. 1, or
an entity (e.g., processor, web service, server, application
program, computing device, etc.) not shown in FIG. 1.
[0048] In some embodiments, the operations illustrated in FIG. 2
and FIG. 3 may be implemented as software instructions encoded on a
computer readable medium, in hardware programmed or designed to
perform the operations, or both. For example, aspects of the
disclosure may be implemented as a system on a chip or other
circuitry including a plurality of interconnected, electrically
conductive elements.
[0049] The term "roaming" as used herein refers, in some
embodiments, to connectivity provided outside a subscriber's home
zone that may be subject to additional tariffs, fees, or
constraints. Roaming service may or may not be provided by the same
mobile operator 111. The term "tethered" as used herein refers, in
some embodiments, to situations where one device acts as an access
point for another device for network access. A tethered connection
may occur over a wired connection or a wireless connection. The
term "Wi-Fi" as used herein refers, in some embodiments, to a
wireless local area network using high frequency radio signals for
the transmission of data. The term "BLUETOOTH" as used herein
refers, in some embodiments, to a wireless technology standard for
exchanging data over short distances using short wavelength radio
transmission. The term "cellular" as used herein refers, in some
embodiments, to a wireless communication system using short-range
radio stations that, when joined together, enable the transmission
of data over a wide geographic area. The term "NFC" as used herein
refers, in some embodiments, to a short-range high frequency
wireless communication technology for the exchange of data over
short distances.
[0050] Embodiments have been described with reference to data
monitored and/or collected from users 104. In some embodiments,
notice may be provided to the users 104 of the collection of the
data (e.g., via a dialog box or preference setting) and users 104
are given the opportunity to give or deny consent for the
monitoring and/or collection. The consent may take the form of
opt-in consent or opt-out consent.
Exemplary Operating Environment
[0051] Aspects of the disclosure are capable of operation and/or
display on any computing device or screen. For example, the user
104 may move between a mobile device, a gaming console, an
in-vehicle computing system (e.g., entertainment and/or
navigation), a portable media player, and a laptop.
[0052] Exemplary computer readable media include flash memory
drives, digital versatile discs (DVDs), compact discs (CDs), floppy
disks, and tape cassettes. By way of example and not limitation,
computer readable media comprise computer storage media and
communication media. Computer storage media include volatile and
nonvolatile, removable and non-removable media implemented in any
method or technology for storage of information such as computer
readable instructions, data structures, program modules or other
data. Computer storage media are tangible and are mutually
exclusive to communication media. In some embodiments, computer
storage media are implemented in hardware. Exemplary computer
storage media include hard disks, flash drives, and other
solid-state memory. In contrast, communication media typically
embody computer readable instructions, data structures, program
modules, or other data in a modulated data signal such as a carrier
wave or other transport mechanism and include any information
delivery media.
[0053] Although described in connection with an exemplary computing
system environment, embodiments of the disclosure are capable of
implementation with numerous other general purpose or special
purpose computing system environments, configurations, or
devices.
[0054] Examples of well-known computing systems, environments,
and/or configurations that may be suitable for use with aspects of
the invention include, but are not limited to, mobile computing
devices, personal computers, server computers, hand-held or laptop
devices, multiprocessor systems, gaming consoles,
microprocessor-based systems, set top boxes, programmable consumer
electronics, mobile telephones, network PCs, minicomputers,
mainframe computers, distributed computing environments that
include any of the above systems or devices, and the like. Such
systems or devices may accept input from the user 104 in any way,
including from input devices such as a keyboard or pointing device,
via gesture input, and/or via voice input.
[0055] Embodiments of the invention may be described in the general
context of computer-executable instructions, such as program
modules, executed by one or more computers or other devices. The
computer-executable instructions may be organized into one or more
computer-executable components or modules. Generally, program
modules include, but are not limited to, routines, programs,
objects, components, and data structures that perform particular
tasks or implement particular abstract data types. Aspects of the
invention may be implemented with any number and organization of
such components or modules. For example, aspects of the invention
are not limited to the specific computer-executable instructions or
the specific components or modules illustrated in the figures and
described herein. Other embodiments of the invention may include
different computer-executable instructions or components having
more or less functionality than illustrated and described
herein.
[0056] Aspects of the invention transform a general-purpose
computer into a special-purpose computing device when configured to
execute the instructions described herein.
[0057] The embodiments illustrated and described herein as well as
embodiments not specifically described herein but within the scope
of aspects of the invention constitute exemplary means for reducing
data transfer costs by opportunistic use of the network connections
132 based on the priority information 114.
[0058] The order of execution or performance of the operations in
embodiments of the invention illustrated and described herein is
not essential, unless otherwise specified. That is, the operations
may be performed in any order, unless otherwise specified, and
embodiments of the invention may include additional or fewer
operations than those disclosed herein. For example, it is
contemplated that executing or performing a particular operation
before, contemporaneously with, or after another operation is
within the scope of aspects of the invention.
[0059] When introducing elements of aspects of the invention or the
embodiments thereof, the articles "a," "an," "the," and "said" are
intended to mean that there are one or more of the elements. The
terms "comprising," "including," and "having" are intended to be
inclusive and mean that there may be additional elements other than
the listed elements. The term "exemplary" is intended to mean "an
example of" The phrase "one or more of the following: A, B, and C"
means "at least one of A and/or at least one of B and/or at least
one of C."
[0060] Having described aspects of the invention in detail, it will
be apparent that modifications and variations are possible without
departing from the scope of aspects of the invention as defined in
the appended claims. As various changes could be made in the above
constructions, products, and methods without departing from the
scope of aspects of the invention, it is intended that all matter
contained in the above description and shown in the accompanying
drawings shall be interpreted as illustrative and not in a limiting
sense.
* * * * *