IP Library › Granted Patent US 10,511,542
Granted Patent B2
US 10,511,542 · App. 15/179,856 · Granted Dec 17, 2019

Multi-interface power-aware networking

Inventors: Harish Srinivasan (Sammamish, WA); Javier N. Flores Assad (Bothell, WA); James C. Gray (Redmond, WA); David Richard Powell, Jr. (Sammamish, WA); Benjamin M. Schultz (Bellevue, WA); Ryan Gregory Wood (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
H04L47/808H04L12/10H04L43/0876H04L43/16H04W52/0225
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,511,542
App. No.
15/179,856
Granted
Dec 17, 2019
Kind
B2
Abstract

The techniques described herein monitor, store, and evaluate network information associated with an application to determine a connectivity option to use to communicate data. A connectivity option includes a network interface and a type of network connection. The determination is made based on power consumption information associated with available connectivity options. Consequently, a device on which the application is installed can better manage its power consumption associated with network communications.

Claims (54)

1. A device comprising:

one or more processors;

a plurality of network interfaces; and

memory storing a policy store of the device that maintains application profiles for a plurality of applications stored on the device and instructions executable by the one or more processors to:

receive, from one of the plurality of applications, a request to communicate data over a network;

access a current execution state in an application profile associated with the one of the plurality of applications, the application profile associating the current execution state with network performance requirements that ensure an acceptable level of service for the one of the plurality of applications;

for each network interface of the plurality of network interfaces, obtain a connectivity profile associated with the network interface, the connectivity profile including one or more types of network connections, an expected power consumption associated with an individual type of network connection, an expected network performance associated with an individual type of network connection, and information of a current location of the device;

determine, based at least in part on the connectivity profiles obtained, an order of connectivity options that satisfy the network performance requirements for the one of the plurality of applications, wherein an individual connectivity option comprises a network interface and a type of network connection;

select a connectivity option from the order of connectivity options; and

use the network interface and the type of network connection of the selected connectivity option to communicate the data.

2. The device of claim 1 , wherein the selection of the connectivity option is based at least in part on the expected power consumption of the connectivity option being less than an expected power consumption of another connectivity option in the order of connectivity options.

3. The device of claim 1 , wherein the instructions are further executable by the one or more processors to:

monitor device-specific network traffic patterns for the one of the plurality of applications;

report the device-specific network traffic patterns to a remote monitoring service that aggregates network traffic patterns for the one of the plurality of applications to generate the network performance requirements;

receive, from the remote monitoring service, the network performance requirements for the one of the plurality of applications; and

in response to receipt of the network performance requirements, update the application profile of the one of the plurality of applications.

4. The device of claim 3 , wherein the instructions are further executable to calculate the network performance requirements based on observed network interactions between the one of the plurality of applications and one or more other applications.

5. The device of claim 1 , wherein the current execution state is based at least in part on whether the one of the plurality of applications is actively using a display screen to perform a function.

6. The device of claim 1 , wherein the network performance requirements define, as a threshold to be satisfied, at least one of: a minimum amount of throughput, a maximum amount of latency, a maximum amount of jitter, a maximum packet loss rate, or a maximum packet error rate.

7. The device of claim 1 , further comprising a proxy service, the proxy service to manage application flows and decouple application management from network connection management.

8. The device of claim 1 , wherein the current execution state is based at least in part on real-time data communication associated with video chatting.

9. A device comprising:

one or more processors;

a plurality of network interfaces; and

memory storing a policy store of the device that maintains application profiles for a plurality of applications stored on the device and instructions executable by the one or more processors to:

maintain a first network connection to communicate data for an application executing on the device, the first network connection being associated with a first connectivity option, wherein an individual connectivity option comprises a network interface and a type of network connection;

determine an occurrence of an event that causes an evaluation of network connectivity;

access a current execution state in an application profile associated with the application, the application profile associating the current execution state with network performance requirements that ensure an acceptable level of service for the application based on the current execution state;

obtain a first connectivity profile associated with the first connectivity option, the first connectivity profile describing expected performance and expected power consumption of the first network connection based on a current location of the device;

obtain a second connectivity profile associated with a second connectivity option, the second connectivity profile describing expected performance and expected power consumption of a second network connection based on the current location of the device;

determine that the network performance requirements for the application are satisfied by the expected performance of the second network connection;

determine that the expected power consumption of the second network connection is less than the expected power consumption of the first network connection; and

based on the determination that the network performance requirements are satisfied by the expected performance of the second network connection and the determination that the expected power consumption of the second network connection is less than the expected power consumption of the first network connection, switch from using the first network connection to communicate data for the application to using the second network connection to communicate data for the application.

10. The device of claim 9 , wherein the event comprises movement of the device from a previous location to the current location.

11. The device of claim 9 , wherein the event comprises a state transition of the application from a previous execution state to the current execution state.

12. The device of claim 9 , wherein the event comprises a determination that the first network connection is no longer satisfying previously determined network performance requirements for the application.

13. The device of claim 9 , wherein the event comprises expiration of a predetermined time interval.

14. The device of claim 9 , wherein the event comprises an indication that a current battery level is below a threshold battery level.

15. The device of claim 9 , wherein the first connectivity option and the second connectivity option use different network interfaces.

16. The device of claim 9 , wherein the first connectivity option and the second connectivity option use a same network interface but different types of network connections.

17. A method comprising:

receiving, from one of a plurality of applications stored on a device, a request to communicate data over a network;

accessing a current execution state in an application profile associated with the one of the plurality of applications, the application profile associating the current execution state with network performance requirements that ensure an acceptable level of service for the one of the plurality of applications;

for each of a plurality of network interfaces of the device, obtaining a connectivity profile associated with the network interface, the connectivity profile including one or more types of network connections, an expected power consumption associated with an individual type of network connection, an expected network performance associated with an individual type of network connection, and information of a current location of the device;

determining, based at least in part on the connectivity profiles obtained and the network performance requirements for the one of the plurality of applications, an order of connectivity options, wherein an individual connectivity option comprises a network interface and a type of network connection;

selecting, by one or more processors, a connectivity option from the order of connectivity options; and

using the network interface and the type of network connection of the selected connectivity option to communicate the data.

18. The method of claim 17 , wherein the selection of the connectivity option is based at least in part on the expected power consumption of the connectivity option being less than an expected power consumption of another connectivity option in the order of connectivity options.

19. The method of claim 17 , wherein the request is associated with a communication session, the communication session defined based on at least one of: a user that is logged into a device, global positioning system (GPS) coordinates, or a timestamp.

20. The method of claim 17 , further comprising:

monitoring device-specific network traffic patterns for the one of the plurality of applications;

reporting the device-specific network traffic patterns to a remote monitoring service that aggregates network traffic patterns for the one of the plurality of applications to generate the network performance requirements;

receiving, from the remote monitoring service, the network performance requirements for the one of the plurality of applications; and

in response to receipt of the network performance requirements, updating the application profile of the one of the plurality of applications.

Assignments (2)
CORRECTIVE ASSIGNMENT TO CORRECT THE INVENTORS NAME, CHRIS C. GRAY PREVIOUSLY RECORDED ON REEL 038883 FRAME 0153. ASSIGNOR(S) HEREBY CONFIRMS THE CORRECT INVENTOR NAME IS JAMES C. GRAY. Recorded Jun 2, 2017
From: SRINIVASAN, HARISH; FLORES ASSAD, JAVIER N.; GRAY, JAMES C.; POWELL, DAVID RICHARD, JR.; SCHULTZ, BENJAMIN M.; WOOD, RYAN GREGORY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042671/0242 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2016
From: SRINIVASAN, HARISH; FLORES ASSAD, JAVIER N.; GRAY, CHRIS C.; POWELL, JR., DAVID RICHARD; SCHULTZ, BENJAMIN M.; WOOD, RYAN GREGORY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 038883/0153 →
Continuity (1)
Related Publication 20170359272A1 · Dec 14, 2017