Managing network usage per application via policies

Defining and applying policies to manage data traffic including data transmitted and/or received by each of a plurality of applications executing on a computing device. The data traffic is monitored per application and attributes are defined for the monitored data traffic to enable the user to evaluate the data traffic for each application. Usage patterns are determined based on the monitored data traffic and the attributes to create one or more policies. The policies are applied to prevent each application from exceeding a corresponding data usage limit defined by the policies.

BACKGROUND

The cost of mobile operator data plans is often based on usage. Each data plan has data usage limits, but users have difficulty determining when the data usage limits have been reached or are about to be reached with existing systems. As a result, users can incur excess data charges. Further, with existing systems, users are unable to determine the relative costs incurred by different applications executing on a mobile telephone.

SUMMARY

Embodiments of the disclosure manage data traffic per application. Data transmitted and/or received by each of a plurality of applications executing on a computing device is monitored. One or more attributes associated with the monitored data are defined for each of the plurality of applications. Usage patterns for each of the plurality of applications are determined based at least on the monitored data and the defined attributes associated therewith. The determined usage patterns are provided to a user of the computing device for evaluation of each of the plurality of applications.

DETAILED DESCRIPTION

Referring to the figures, embodiments of the disclosure enable data budgets to be invoked per application110. In some embodiments, data traffic is monitored per application110along with attributes112such as time of day, location, type of network interface, and amount of data during an interval (e.g., month). Sample network interface types include cellular, wireless fidelity (WiFi), and the like. Usage patterns are developed that form the basis of policies114that are used to restrict data traffic per application110over specific networks, locations, times, and the like. The policies114may also be used to reduce battery usage, mobile operator charges, and/or processor usage by restricting data traffic. Further, aspects of the disclosure enable users104to save money on their monthly network operator bill (e.g., wireless bill).

Referring again toFIG. 1, an exemplary block diagram illustrates a computing device102storing policies114for enforcing data usage limits116of applications110. In the example ofFIG. 1, the computing device102associated with the user104represents a system for managing data traffic per application110. The computing device102represents any device executing instructions (e.g., as application programs, operating system functionality, or both) to implement the operations and functionality associated with the computing device102. The computing device102may include a mobile computing device or any other portable device. In some embodiments, the mobile computing device includes a mobile telephone, laptop, netbook, gaming device, and/or portable media player. The computing device102may also include less portable devices such as desktop personal computers, kiosks, and tabletop devices. Additionally, the computing device102may represent a group of processing units or other computing devices.

The computing device102has at least one processor106and a memory area108. The processor106includes 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 processor106or by multiple processors executing within the computing device102, or performed by a processor external to the computing device102. In some embodiments, the processor106is programmed to execute instructions such as those illustrated in the figures (e.g.,FIG. 2andFIG. 3).

The computing device102further has one or more computer-readable media such as the memory area108. The memory area108includes any quantity of media associated with or accessible by the computing device102. The memory area108may be internal to the computing device102(as shown inFIG. 1), external to the computing device102(not shown), or both (not shown).

The memory area108stores, among other data, one or more applications110. The applications110, when executed by the processor106, operate to perform functionality on the computing device102. Exemplary applications110include 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 applications110may communicate with counterpart applications or services such as web services accessible via a network. For example, the applications110may represent downloaded client-side applications that correspond to server-side services executing in a cloud.

The memory area108further stores one or more attributes112, policies114, and data usage limits116. As further described below, the attributes112represent characteristics of, or otherwise describe, data that is transmitted or received by the applications110. Each of the applications110has a set of attributes112corresponding thereto. Exemplary attributes112include, but are not limited to, a transmission time, receipt time, duration, network interface type, port, location of the computing device102, network operator, quantity of data sent, quantity of data received, application name, or permissions.

The policies114represent rules, limitations, qualifications, or other criteria for managing data transmitted and/or received by the applications110. As further described below, the policies114are defined based on a plurality of inputs such as the attributes112and the data transmitted and/or received by the applications110, and may apply to one or more of the applications110.

The data usage limits116place restrictions on the quantity and/or type of data transmitted and/or received by each of the applications110. In some embodiments, each of the applications110has one or more of the data usage limits116corresponding thereto.

The memory area108further stores one or more computer-executable components. Exemplary components include a communications interface component118, a user interface component120, a restrictor component122, and a report component124. The communications interface component118, when executed by the processor106of the computing device102, causes the processor106to provide a profile of the user104of the computing device102(e.g., a first computing device) to another computing device (e.g., a second computing device). The profile describes the user104and/or the first computing device, and may include, for example, a list of installed applications110, operating system version, corporate affiliation (e.g., employment of the user104), explicit preferences of the user104, inferred preferences of the user104, user activity history (e.g., browsing history, interaction with the first computing device), and the like.

The second computing device represents, for example, a server or other remote device that communicates with a plurality of first computing devices (such as computing device102). The second computing device maintains, or has access to, a plurality of policies114such as data usage policies. In some embodiments, the second computing device collects the data usage policies (or usage patterns) from the plurality of first computing devices, and acts as a central repository to aggregate the data usage policies (or usage patterns). For example, the first computing devices create and share the data usage policies with the second computing device. In some embodiments, based on the received profile of the user104, the second computing device selects one or more data usage policies. In this manner, users104with similar usage habits share the same data usage policies. Each of the data usage policies includes data usage limits116. Each of the data usage limits116corresponds to at least one of the applications110executing on the first computing device. Alternatively or in addition, the data usage limits116correspond to application types (e.g., browser, email, search, location, etc.).

The communications interface component118further executes on the first computing device to receive the selected data usage policies from the second computing device. In some embodiments, the communications interface component118includes a network interface card and/or computer-executable instructions (e.g., a driver) for operating the network interface card.

The user interface component120, when executed by the processor106, causes the processor106to provide the data usage policies received by the communications interface component118to the user104. For example, a list of the received data usage policies may be displayed to the user104. The user interface component120further executes to receive from the user104a selection of at least one of the provided data usage policies. In some embodiments, the user104selects multiple data usage policies, and assigns each selected data usage policy to one or more of the applications110. The user104may also identify applications110to which none of the data usage policies applies. In such embodiments, the identified applications110represent an exception list.

In some embodiments, the user interface component120includes a graphics card for displaying data to the user104and receiving data from the user104. The user interface component120may also include computer-executable instructions (e.g., a driver) for operating the graphics card. Further, the user interface component120may include a display (e.g., a touch screen display) and/or computer-executable instructions (e.g., a driver) for operating the display. The user interface component120may also include one or more of the following to provide data to the user104or receive data from the user104: speakers, a sound card, a camera, a microphone, a vibration motor, and one or more accelerometers. For example, the user104may input commands or manipulate data by moving the computing device102in a particular way.

The restrictor component122, when executed by the processor106, causes the processor106to apply the data usage policy selected by the user104via the user interface component120to one or more of the applications110executing on the first computing device. Applying the data usage policy prevents the applications110from transmitting and/or receiving data in excess of the data usage limits116associated with the applied data usage policy. Applying the data usage policy includes determining whether any of the criteria in the data usage policy has been violated. For example, the restrictor component122monitors the data transmitted and/or received by the applications110and determines whether the data usage limits116corresponding to each of the applications110have been exceeded or are about to be exceeded (e.g., within a percentage such as 80% of the maximum or absolute threshold). In some embodiments, the restrictor component122monitors the data by receiving or accessing the attributes112or other statistics describing the data transmitted and/or received by each of the applications110.

The report component124, when executed by the processor106, causes the processor106to provide the user104with a data cost associated with each of the applications110. The data cost is derived by correlating the amount and/or type of data traffic with a cost for handling the data traffic. The cost may be a financial cost that is set, for example, by a network operator (e.g., a mobile operator). Other costs are contemplated and include, for example, a resource cost corresponding to an amount of battery power consumed when handling the data traffic. In some embodiments, the report component124produces data (e.g., in chart form) that shows the data cost per application110.

Referring next toFIG. 2, an exemplary flow chart illustrates operation of the computing device102to monitor data transmitted and/or received by applications110executing on the computing device102and to develop usage patterns based thereon. At202, data is transmitted and/or received by the applications110. At204, aspects of the disclosure monitor the data to define, at206, one or more of the attributes112. Exemplary attributes112include, but are not limited to, a transmission time, receipt time, duration, network interface type, network destination, device battery status, port, location of the computing device102, network operator, quantity of data sent, quantity of data received, application name, or permissions. In some embodiments, each of the applications110has a corresponding set of attribute values. At208, usage patterns are determined for each of the applications110. The usage patterns are determined based at least on the monitored data and the defined attributes112. For example, the usage patterns may identify patterns in the volume and type of data transmitted and/or received, the type of network interface used, times during the day for heavy and light volume, and the like. At210, the determined usage patterns are provided to the user104of the computing device102. The user104analyzes or evaluates each application110based on the usage pattern corresponding to that application110. For example, the usage patterns may be grouped per application110such that the user104is able to evaluate each of the applications110based on the associated usage pattern. In another example, the usage patterns are grouped per attribute112such that the user104is able to compare each of the applications110based on the attribute112(e.g., which application110uses the cellular radio the most, which application110uses a WiFi network adapter the most, etc.).

Aspects of the disclosure may further operate to receive, from the user104, the data usage limits116associated with each of the applications110. For example, the user104may specify a maximum quantity of data to be transmitted and/or received by a particular application110. The user104may also specify the quantity per other attributes112such as per time interval (e.g., during peak or business hours versus off-peak or weekend and night hours), per network interface type, or per location of the computing device102.

In some embodiments, the policies114are created based on the defined attributes112, the received data usage limits116, user preferences, system preferences, and/or other criteria. Aspects of the disclosure apply the policies114to prevent the applications110from violating the data usage limits116(e.g., exceeding a maximum data usage). The policies114apply to one or more of the applications110. In some embodiments, the policies114prioritize a first one of the applications110over a second one of the applications110such that if remaining data usage is limited, the first application is given priority over the second application to use the remaining data usage. In such embodiments, the data traffic of the second application is restricted, as described below with reference toFIG. 3.

Aspects of the disclosure may further receive, from the user104, an assignment of at least one of the applications110to at least one of a plurality of categories. Example categories include business, leisure, recreation, personal, and private. For example, the business category may include electronic mail programs and calendar programs, while the leisure category may include social networking applications and games. In such embodiments, the usage patterns may be grouped by category such that the user104is able to evaluate the data traffic used by each category of the applications110.

In some embodiments, recommendations may be given based on the determined usage patterns. The recommendation may be provided to the user104along with the usage patterns. For example, if aspects of the disclosure determine that a particular program or category of programs is generated an excessive amount of data traffic, that program or category may be identified for deletion. The user104is prompted to accept or reject the recommendation.

Referring next toFIG. 3, an exemplary flow chart illustrates operation of the computing device102to restrict data transmitted and/or received by applications110executing on the computing device102. At302, data is transmitted and/or received by the applications110. At304, aspects of the disclosure monitor the transmitted and/or received data per application110. At306, the monitored data of each application110is compared with the corresponding data usage limits116for that application110to determine whether the data usage limits116have been violated (or are about to be violated). If no violation or trigger has occurred, the data continues to be monitored at304. If a violation or trigger has occurred, the application110associated with the violation is restricted from transmitting and/or receiving additional data. For example, limits may be placed on how much data may be transmitted and/or received during certain periods of the day (e.g., during peak hours). In another example, the application110may be automatically blocked from transmitting and/or receiving any data (e.g., download of a web page may be halted when the threshold is reached). In still another example, the user104is prompted to manually consent to or reject a recommendation to restrict the data traffic of a particular application110.

While the restriction at308affects the application110deemed to be in violation of the data usage limits116, other applications110may continue to transmit and/or receive data. As such, the monitoring continues at304.

Referring next toFIG. 4, an exemplary diagram illustrates data transmitted and received per application type. The values represented by the diagram are generated by aspects of the disclosure (e.g., the report component124). In the example ofFIG. 4, the vertical axis lists the application types including email/social networking applications, multimedia applications, operating system applications, digital rights management applications, browsers, applications using location-based services, text messaging applications, and search engines. The horizontal axis represents the total quantity of data traffic sent and/or received by each type or category of application110. The cross-hatching indicates the division between the amount of data sent versus the amount of data received by each type of application110.

Additional Examples

Listed below is an example policy designed for users in a corporate environment. The example policy considers applications in use, roaming status, byte budgets (e.g., by percentage and absolute), and network interface types. The example policy also provides criteria for prompting the user to override restrictions as budgets are approached.

In an example scenario, an employee is provided with an employer-sponsored mobile telephone. At the time of configuration, a corporate usage policy may be installed to ensure that the mobile operator costs will be in line with employer policy. There may be different policies114for different employees based on the level of the employee, type of mobile telephone, and level of sponsorship. The data usage limits116may appear as reminders to the employee or may be more automatically restrictive based on allowable budget.

In another example, the user is about to visit another country but is concerned about roaming network charges. A policy may be generated based on her home mobile operator, employer, peer group, or other context. The policy is based on financial amounts and applications or types of applications the user plans to use while roaming. For example, web search engines and location-based service may be able to send and/or receive data without data usage limits116up to a pre-defined maximum financial amount (e.g., $50). In contrast, social networking applications are only able to send and/or receive data using a WiFi network connection to ensure that costs are not accidentally incurred while roaming.

In still another example, a salesperson on commission wants to track the business-related costs of using a mobile telephone. Using aspects of the disclosure, the salesperson can identify the quantity of data sent and/or received by business applications. The salesperson is then able to bill an employer for that identified quantity. The salesperson is also able to identify which personal or leisure applications are incurring costs during working hours. On the employer side, the employer can access aspects of the invention to confirm the identified quantity of data based on centralized monitoring of the data traffic.

At least a portion of the functionality of the various elements inFIG. 1may be performed by other elements inFIG. 1, or an entity (e.g., processor, web service, server, application program, computing device, etc.) not shown inFIG. 1.

In some embodiments, the operations illustrated inFIG. 2andFIG. 3may 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.

While no personally identifiable information is tracked by aspects of the disclosure, embodiments have been described with reference to data monitored and/or collected from users104. In such embodiments, notice is provided to the users104of the collection of the data (e.g., via a dialog box or preference setting) and users104are 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

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 store information such as computer readable instructions, data structures, program modules or other data. 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. Combinations of any of the above are also included within the scope of computer readable media.

Although described in connection with an exemplary computing system environment, embodiments of the invention are operational with numerous other general purpose or special purpose computing system environments or configurations. 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.

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.

Aspects of the invention transform a general-purpose computer into a special-purpose computing device when configured to execute the instructions described herein.

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 determining a quantity of data transmitted and/or received by each of the plurality of applications110, and exemplary means for defining and applying a policy114for managing data traffic per application110.