Abstract:
The subject disclosure is directed towards protecting against malware, by classifying a user&#39;s risk level, which corresponds to a likelihood of malware being activated. To make the classification, data is collected that represents a probability of encountering malware, a probability of a user activating that malware, and the impact to the machine is activated. The classification maps to a protection level, which may be dynamically adjustable, e.g., based upon current risk conditions. The protection level determines a way to mitigate possible damage, such as by running a program as a virtualized program, running a virtualized operating system, or sandboxing a process.

Description:
BACKGROUND 
       [0001]    Via the Internet, individuals and organizations with malicious intent develop software that damage computer systems and/or are used to steal the personal information of users (including individual users or entities such as companies). Such malicious software, or malware, often exploits code vulnerabilities and/or gets installed onto users&#39; computer systems by tricking users into taking some action. 
         [0002]    One way to protect against malware is via anti-malware software. Contemporary anti-malware software uses a variety of mechanisms to catch and quarantine malware. In most instances, signatures, behavior monitoring, and filter drivers are used to protect users from software that would otherwise damage the computer. 
         [0003]    Contemporary anti-malware technology has led to a cycle in which the malware authors try to outsmart the anti-malware developers, and vice-versa. Sometimes the malware authors win, at least for awhile, because protection against an exploit has not yet been discovered. There are also cases where the user simply has not updated his or her machine to detect the latest malware, sometimes because the user is careless or not computer-savvy. 
         [0004]    Other times users prefer to not burden their machines by running an antimalware product, at least not to its full capability. More particularly, many end-users complain that any anti-malware application is intrusive, creates performance bottlenecks, takes up application CPU cycles, and sometimes locks up certain files from use. As a result, it is a well-known fact that end-users end up excluding certain processes, folders, and/or file types from real-time anti-malware scanning. 
         [0005]    What is needed is another way to protect users from malware. This includes users who are intentionally not fully compliant from a security standpoint, as well as users who naïvely click on or otherwise take action to install infected executables without realizing the consequences of their actions. 
       SUMMARY 
       [0006]    This Summary is provided to introduce a selection of representative 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 in any way that would limit the scope of the claimed subject matter. 
         [0007]    Briefly, various aspects of the subject matter described herein are directed towards a technology by which a score (e.g., a probability value) is computed that represents the risk/likelihood of malware being activated on a computing device. Based on the score, protective action may be taken to mitigate damage that otherwise may result if the malware is activated. For example, users may be classified into a risk category corresponding to the score, with high risk users protected more, e.g., by having a program that can activate malware (e.g., a browser) run as a virtualized program, or to run an operating system as a virtualized operating system. Other times, the action taken to mitigate damage may be to run a process in a sandbox. The protection level is dynamically variable, such as based upon current threat conditions and/or what the user is attempting to do. 
         [0008]    In one aspect, the score is computed based at least in part on past user behavior data, machine state data, and/or a likelihood of encountering malware. For example, the malware-related input may be based upon file type data (e.g., files in the internet cache) associated with the user, URL data (e.g., visited sites such as with bad reputations) associated with a user, malware previously detected for a user, and/or behavior data associated with a user (e.g., clicks on email links and runs internet programs). The malware-related input may be based upon machine state, such as machine update data, patch data, user-privilege data (e.g., administrator or not) on the machine, and/or antimalware scan data (e.g., when last scanned, how thoroughly and so forth). The malware-related input also may indicate a likelihood of encountering malware, such as based upon data collected from an industry source, update data, diagnostic data submitted by users, and/or malware data submitted by users. 
         [0009]    In one aspect, the protection level is dynamically variable based upon current threat conditions. A risk may be mitigated at a network layer within a managed environment, such as by increasing protection on a destination host, increasing auditing, and/or decreasing network access for the user and/or machine. 
         [0010]    Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0011]    The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which: 
           [0012]      FIG. 1  is a block diagram/dataflow diagram representing components that classify a user based upon various input data, and determine and apply a protection level for the user based upon the classification. 
           [0013]      FIG. 2  is a diagram representing data collected from various sources that provide information as to the probability of a user/machine encountering malware. 
           [0014]      FIG. 3  is a diagram representing machine state data that provide information as to the probability of a machine being affected by malware. 
           [0015]      FIG. 4  is a diagram representing user behavior and other user-related data that provide information as to the probability of a user activating malware. 
           [0016]      FIG. 5  is a block diagram representing exemplary non-limiting networked environments in which various embodiments described herein can be implemented. 
           [0017]      FIG. 6  is a block diagram representing an exemplary non-limiting computing system or operating environment in which one or more aspects of various embodiments described herein can be implemented. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]    Various aspects of the technology described herein are generally directed towards providing varying levels of protection against malware based on the profile and/or historical behavior of a user. As will be understood, such varying levels of protection allow for dynamic strength adjustment of an antimalware product to protect against malware based on the tendencies of a user, which improves overall protection from threats, even when not fully compliant from a security standpoint. 
         [0019]    As also will be understood, the technology described herein profiles user habits and machine vulnerabilities based on various data, which may include telemetry, business intelligence, data collected from system anomalies, and data collected from artificially induced abnormalities. Each user may then be classified according to the profile based on mathematical models and patterns, from which (at runtime) a vulnerability score and protection mechanism may be computed. Also described is the ability to prescribe threshold levels for heuristic signatures used by antimalware scanners, and the ability to mitigate threats at the network layer based on user classification and/or machine classification. 
         [0020]    It should be understood that any of the examples herein are non-limiting. For one, various probability models are described as examples, however other such models may be alternatively developed and used. As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used various ways that provide benefits and advantages in protection against malware in general. 
         [0021]      FIG. 1  shows example components of a system for predictive malware threat mitigation, which may be run on a user&#39;s computer, in a cloud service, in a distributed computing environment, and so forth, or in some combination thereof. In general, malware-related input data  102  are received at a profiling and classification engine  104 , which, based on this data  102 , computes a class for a user and also provides attributes  106 , as described below. Various types of data are feasible for input, including data as to what malware is currently causing problems, data about the state of a user&#39;s machine, and data about the user. More specific examples of input data are described below with reference to  FIGS. 2-4 , and in general provide information that may be used to determine the probability of a user encountering malware ( FIG. 2 ), the probability of the user&#39;s machine being affected by the malware ( FIG. 3 ), and the probability of the user activating malware ( FIG. 4 ). 
         [0022]    In one implementation, based on the data  102 , the classification engine  104  computes a risk level, or predictive score, which indicates how vulnerable the user&#39;s computer is to being infected with malware, relative to other computers/users. As can be readily appreciated, telemetry, business intelligence, and mathematical models to calculate the probability of a random occurrence may be used in the computations. 
         [0023]    The classification may be regularly updated, such as whenever the user performs some action that may change the users&#39; score. Moreover, even if the score does not change, the class attributes may change, and thus the protective action with respect to that classification. For example, if a particularly bad virus is spreading, a score that normally makes a user a low-risk user may map the user into a different category, whereby different mitigation actions may be taken (described below) until the threat diminishes. Note that any such information and/or component updates described herein may be pushed and/or pulled from a network connection, such as a cloud service, so that the latest protection is available; any component such as the engines  104  and  108  may similarly reside locally or remotely, or partially locally and remotely. 
         [0024]    Based upon this score and the other available information, a decision engine  108  operates to protect the user&#39;s computer. More particularly, in one implementation the decision engine  108  makes use of the risk, class, and attribute information and decides an appropriate way to extend the protection of the user based on the action that the user wants to perform. This may be determined through conditional probability defined as 
         [0000]    
       
         
           
             
               
                 P 
                  
                 
                   ( 
                   
                     X 
                      
                     Y 
                   
                   ) 
                 
               
               = 
               
                 
                   P 
                    
                   
                     ( 
                     
                       X 
                       ⋂ 
                       Y 
                     
                     ) 
                   
                 
                 
                   P 
                    
                   
                     ( 
                     Y 
                     ) 
                   
                 
               
             
             , 
           
         
       
     
         [0000]    where the probability of an occurrence of X is altered with a known occurrence of Y. 
         [0025]      FIG. 2  presents an example flow of information in a model for calculating the probability P ε  of a user encountering malware via website, email, or embedded in a file. The value of P ε  is determined from collected data of various sources, and may provide information/statistics such as the number of known active malware websites, email viruses and scams, and also files and file formats that are vulnerable to embedded malicious content. Example sources  221 - 226  of such data include industry malware data, Windows® update data, diagnostic (e.g., Dr. Watson) data of many users, user-submitted antivirus data and SpyNet data; block  226  represents other sources of such information that may be used. Note that various organizations may collect such data, which they may share. 
         [0026]    With this information, including the associated rate of growth of a threat, the system can compute a score indicative of the possible exposure to a threat, whether threats in general or a specific threat. In one implementation, a computation mechanism  228 , such as trained based upon known data to determine relative weights for each source, may output the score as a malware encounter probability P ε  value  230 . Further training data may be collected in an ongoing manner and regularly used to retune the weights, for example. 
         [0027]      FIG. 3  provides an example data flow for determining the user&#39;s machine vulnerability. This model takes into consideration attributes and other state data about the user&#39;s machine that may make it more or less susceptible to exploit or infection. A machine evaluation mechanism  330  reads various machine-related state data to obtain information such as the last Windows update (on a Windows® machine)  331 , the patch level of a machine  332 , whether the user is an administrator  333  (which may be a value representing a privilege level indicative of how much harm the user can do to the machine), and data regarding the last malware scan  333  that was performed. The freshness of this data also may be a factor. Block  335  represents other internal machine sources that may be used, e.g., the last time a system restore was performed, whether the machine is a shared or personal machine, and so on. In addition to this data, other external and/or internal information  336  may be used, such as regarding the configuration of the user&#39;s particular machine compared to that of other like machines, (which may be obtained from telemetry data in databases such as Dr. Watson). 
         [0028]    A computation mechanism  338 , e.g., trained on known data to determine relative weights for each source  331 - 336 , computes a score as to the machine&#39;s vulnerability. In one implementation, the score comprises a machine vulnerability probability P ν  value  340  indicative of how much the user&#39;s machine is deemed vulnerable. Note that from this process, certain attributes about the machine also may be obtained, which can be forwarded and used by the decision engine  108  ( FIG. 1 ) as described above, in addition to the vulnerability score. 
         [0029]    Another set of inputs that facilitate the overall predictive malware protection model is exemplified in  FIG. 4 , namely input directed towards user behavioral modeling. Examples of sources that provide insight on the user&#39;s computing/behavior patterns include the types of files executed (e.g., as maintained in the internet cache)  441 , the types of websites visited (e.g., the reputation/categorization of the maintained URLs)  442 , typical actions of the user, such as email interactions (e.g., clicks on links in the message body or not, runs downloaded executables or not), and so on. The freshness of this data also may be a factor. Other internal and external information sources are represented by blocks  444  and  445 . Examples include how the user was previously classified, so that the user does not go from previously being a high-risk user to suddenly being a low-risk user (because the user did something like clean out the internet cache and history, for example), and so forth. Other examples may include what malware has been previously remediated (cleaned, removed, quarantined) in the past for this user, how this user matches up with other users who have had malware problems, and so on. 
         [0030]    This user vulnerability model, e.g., corresponding to a trained computation mechanism  448 , provides a score reflecting how likely the user will activate a piece of malware. In one implementation, the score comprises a probability value P α  (block  450 ). 
         [0031]    Returning to  FIG. 1 , these computed data points  230 ,  340  and  450  (and possibly others) provide a foundation for an overall risk computation, e.g., R=P ν *P ε *P α * . . . P n , as to the likelihood of a user having his or her machine affected by a piece of malware. Note that these values may be separately weighted, such as by machine learning, so that each factor need not give equal weight to the risk computation. 
         [0032]    It should be noted that  FIGS. 1 through 4  describe only one example of risk determination, which divides available data into malware-related data, machine related data and user-related data for computing the respective probabilities. It is feasible to have other divisions of data, or no divisions at all, e.g., all of the available data may be input as feature data into a trained model, such as with learned feature weights, that provides a single model (rather than combining probabilities computed by multiple models). 
         [0033]    Regardless of how computed and/or classified, a computer system may use the risk determination in various ways. For example, the decision engine  108  may examine the action that the user wishes to take, and apply an amount of protection corresponding to the computed risk; for a high-risk user, more care may be taken to prevent the user from causing harm to the computer and/or to prevent confidential information from being compromised. Examples of some real time strategies for mitigation of potential threats based on the outcome of the decision engine  108  include known ways to prevent harm, such as running a program as a virtualized program (block  110 ), running a virtualized operating system (block  111 ) that can be reverted if damaged, running a process in a sandbox (block  112 ) or other restricted way, and so forth. Another type of mitigation may be to change a program&#39;s (e.g., the browser&#39;s) security settings. Depending on the classification, some users may be warned about a pending action, while others are prevented from taking the action, e.g., with no override capabilities. The risk level may be compared with threshold levels for heuristic signatures, so that the burden on the machine of scanning every incoming and outgoing file may be avoided in many instances. Moreover, thresholds in the definition rules in antivirus/antimalware scanning engines can be adjusted based on the computed results, e.g., heuristic thresholds may be increased for higher risk users, and/or more rules may be used to change the threshold so that more files are deemed to be suspicious in unsafe environments and be scanned more thoroughly. 
         [0034]    By way of example, consider a first user that sometimes accidentally navigates to random URLs that may be malicious, has previously clicked on random pop-ups, has had a malware infection, and uses a machine that does not have the latest security fixes. The profiling and classification engine  104  rates this user “high risk” and uses this rating to decide how to provide appropriate protection to avoid further trouble. Based on the high risk determination, the decision engine virtualizes the web browser program (e.g., operating system component) when browsing the Web, whereby a browser helper object or some other exploit is contained to the virtualized instance of the program. Any downloaded software increases suspicion levels to make them more likely to be flagged as malicious, in need of scanning and/or sent to a web service for further examination. 
         [0035]    Consider a second, experienced computer user who typically keeps her machine updated with the latest security patches and signatures. The user may be determined to be something less than a high risk, although not necessarily a low risk, such as because of sometimes having downloaded movies or audio from untrusted sites. A movie downloaded from such a site may launched in a Media Player instance that has been sandboxed, in order to prevent any potential malicious content from causing an issue. 
         [0036]    Consider an experienced (third) computer user whose personal computer is fully updated and protected in such a way that the profiling and classification engine  104  provides a “low-risk” rating that allows freedom to browse, download, and execute files. If the user receives an email from a friend who has been hacked, e.g., the email has an attachment which is a JPG file containing a new JPG exploit variant, such that the file may be downloaded without the signatures being detected. However, while this will infect the machine, the telemetry is sent to the data warehouse so that other users&#39; of the same anti-malware software can be protected until a full analysis and signature can be produced. 
         [0037]    As a fourth example, consider a user who receives email from vendors on his IT-managed desktop. The user is rated a “low-risk” because he does not use his computer for anything but work, and it is a managed desktop. If he receives a document containing a virus from a sender he thinks is trusted, but in actuality that sender&#39;s email has been spoofed, there is a potential problem because his rating allows the document to be opened. However, because the file came from a spoofed email address, suspicion levels are elevated, whereby this document is scanned, and the virus is recognized by its signature. Not only is the threat detected, but the data learned from this event may be used to catch the threat at a higher layer the next time. 
         [0038]    The scoring methodologies described herein also may be used to mitigate risk at the network layer within a managed environment, where a network management system can monitor the activity of a user and/or machine across enterprise systems. A machine may be suspected as compromised if it attempts to infect other machines, attempts to attack the enterprise network, and/or exhibits some irregular behavior. A user may be suspected as being compromised if the user attempts to send infected email, attempts to access restricted resources, or attempts to transmit sensitive data out of the network. In such an event, there will be a higher probability of discovering malware contributing to a higher risk score. As a result, the network management system may use this input to further mitigate the threat, e.g., by increasing protection on a destination host, increasing auditing, or decreasing network access for the user and/or machine. 
         [0039]    Anti-malware products leveraging the technology described herein thus add to the defense-in-depth strategy for users, and reduce the spread of malware. This may help reduce the attempts to author malware, as via telemetry feedback, malware identification and mitigation can be accomplished rapidly, making it less successful. 
         [0040]    As can be seen, there is provided a technology that uses various information to provide software that is able to protect users by dynamically and predictively mitigating risks through various mechanisms. The technology uses industry data about known threats to understand the risks that exist on the Internet, along with data about the user&#39;s machine, knowledge of like machines, and information about the user. The model classifies the user and assigns attributes to the user based on this information, which in turn allow a decision to make predictive actions that protect the user. This may be for users who do not have traditional malware protection, or have limited it in some way, as well as for users who have full traditional malware protection, with an additional layer of security thereby improving overall user protection. 
       Exemplary Networked and Distributed Environments 
       [0041]    One of ordinary skill in the art can appreciate that the various embodiments and methods described herein can be implemented in connection with any computer or other client or server device, which can be deployed as part of a computer network or in a distributed computing environment, and can be connected to any kind of data store or stores. In this regard, the various embodiments described herein can be implemented in any computer system or environment having any number of memory or storage units, and any number of applications and processes occurring across any number of storage units. This includes, but is not limited to, an environment with server computers and client computers deployed in a network environment or a distributed computing environment, having remote or local storage. 
         [0042]    Distributed computing provides sharing of computer resources and services by communicative exchange among computing devices and systems. These resources and services include the exchange of information, cache storage and disk storage for objects, such as files. These resources and services also include the sharing of processing power across multiple processing units for load balancing, expansion of resources, specialization of processing, and the like. Distributed computing takes advantage of network connectivity, allowing clients to leverage their collective power to benefit the entire enterprise. In this regard, a variety of devices may have applications, objects or resources that may participate in the resource management mechanisms as described for various embodiments of the subject disclosure. 
         [0043]      FIG. 5  provides a schematic diagram of an exemplary networked or distributed computing environment. The distributed computing environment comprises computing objects  510 ,  512 , etc., and computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc., which may include programs, methods, data stores, programmable logic, etc. as represented by example applications  530 ,  532 ,  534 ,  536 ,  538 . It can be appreciated that computing objects  510 ,  512 , etc. and computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc. may comprise different devices, such as personal digital assistants (PDAs), audio/video devices, mobile phones, MP3 players, personal computers, laptops, etc. 
         [0044]    Each computing object  510 ,  512 , etc. and computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc. can communicate with one or more other computing objects  510 ,  512 , etc. and computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc. by way of the communications network  540 , either directly or indirectly. Even though illustrated as a single element in  FIG. 5 , communications network  540  may comprise other computing objects and computing devices that provide services to the system of  FIG. 5 , and/or may represent multiple interconnected networks, which are not shown. Each computing object  510 ,  512 , etc. or computing object or device  520 ,  522 ,  524 ,  526 ,  528 , etc. can also contain an application, such as applications  530 ,  532 ,  534 ,  536 ,  538 , that might make use of an API, or other object, software, firmware and/or hardware, suitable for communication with or implementation of the application provided in accordance with various embodiments of the subject disclosure. 
         [0045]    There are a variety of systems, components, and network configurations that support distributed computing environments. For example, computing systems can be connected together by wired or wireless systems, by local networks or widely distributed networks. Currently, many networks are coupled to the Internet, which provides an infrastructure for widely distributed computing and encompasses many different networks, though any network infrastructure can be used for exemplary communications made incident to the systems as described in various embodiments. 
         [0046]    Thus, a host of network topologies and network infrastructures, such as client/server, peer-to-peer, or hybrid architectures, can be utilized. The “client” is a member of a class or group that uses the services of another class or group to which it is not related. A client can be a process, e.g., roughly a set of instructions or tasks, that requests a service provided by another program or process. The client process utilizes the requested service without having to “know” any working details about the other program or the service itself. 
         [0047]    In a client/server architecture, particularly a networked system, a client is usually a computer that accesses shared network resources provided by another computer, e.g., a server. In the illustration of  FIG. 5 , as a non-limiting example, computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc. can be thought of as clients and computing objects  510 ,  512 , etc. can be thought of as servers where computing objects  510 ,  512 , etc., acting as servers provide data services, such as receiving data from client computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc., storing of data, processing of data, transmitting data to client computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc., although any computer can be considered a client, a server, or both, depending on the circumstances. 
         [0048]    A server is typically a remote computer system accessible over a remote or local network, such as the Internet or wireless network infrastructures. The client process may be active in a first computer system, and the server process may be active in a second computer system, communicating with one another over a communications medium, thus providing distributed functionality and allowing multiple clients to take advantage of the information-gathering capabilities of the server. 
         [0049]    In a network environment in which the communications network  540  or bus is the Internet, for example, the computing objects  510 ,  512 , etc. can be Web servers with which other computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc. communicate via any of a number of known protocols, such as the hypertext transfer protocol (HTTP). Computing objects  510 ,  512 , etc. acting as servers may also serve as clients, e.g., computing objects or devices  520 ,  522 ,  524 ,  526 ,  528 , etc., as may be characteristic of a distributed computing environment. 
       Exemplary Computing Device 
       [0050]    As mentioned, advantageously, the techniques described herein can be applied to any device. It can be understood, therefore, that handheld, portable and other computing devices and computing objects of all kinds are contemplated for use in connection with the various embodiments. Accordingly, the below general purpose remote computer described below in  FIG. 6  is but one example of a computing device. 
         [0051]    Embodiments can partly be implemented via an operating system, for use by a developer of services for a device or object, and/or included within application software that operates to perform one or more functional aspects of the various embodiments described herein. Software may be described in the general context of computer executable instructions, such as program modules, being executed by one or more computers, such as client workstations, servers or other devices. Those skilled in the art will appreciate that computer systems have a variety of configurations and protocols that can be used to communicate data, and thus, no particular configuration or protocol is considered limiting. 
         [0052]      FIG. 6  thus illustrates an example of a suitable computing system environment  600  in which one or aspects of the embodiments described herein can be implemented, although as made clear above, the computing system environment  600  is only one example of a suitable computing environment and is not intended to suggest any limitation as to scope of use or functionality. In addition, the computing system environment  600  is not intended to be interpreted as having any dependency relating to any one or combination of components illustrated in the exemplary computing system environment  600 . 
         [0053]    With reference to  FIG. 6 , an exemplary remote device for implementing one or more embodiments includes a general purpose computing device in the form of a computer  610 . Components of computer  610  may include, but are not limited to, a processing unit  620 , a system memory  630 , and a system bus  622  that couples various system components including the system memory to the processing unit  620 . 
         [0054]    Computer  610  typically includes a variety of computer readable media and can be any available media that can be accessed by computer  610 . The system memory  630  may include computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) and/or random access memory (RAM). By way of example, and not limitation, system memory  630  may also include an operating system, application programs, other program modules, and program data. 
         [0055]    A user can enter commands and information into the computer  610  through input devices  640 . A monitor or other type of display device is also connected to the system bus  622  via an interface, such as output interface  650 . In addition to a monitor, computers can also include other peripheral output devices such as speakers and a printer, which may be connected through output interface  650 . 
         [0056]    The computer  610  may operate in a networked or distributed environment using logical connections to one or more other remote computers, such as remote computer  670 . The remote computer  670  may be a personal computer, a server, a router, a network PC, a peer device or other common network node, or any other remote media consumption or transmission device, and may include any or all of the elements described above relative to the computer  610 . The logical connections depicted in  FIG. 6  include a network  672 , such local area network (LAN) or a wide area network (WAN), but may also include other networks/buses. Such networking environments are commonplace in homes, offices, enterprise-wide computer networks, intranets and the Internet. 
         [0057]    As mentioned above, while exemplary embodiments have been described in connection with various computing devices and network architectures, the underlying concepts may be applied to any network system and any computing device or system in which it is desirable to improve efficiency of resource usage. 
         [0058]    Also, there are multiple ways to implement the same or similar functionality, e.g., an appropriate API, tool kit, driver code, operating system, control, standalone or downloadable software object, etc. which enables applications and services to take advantage of the techniques provided herein. Thus, embodiments herein are contemplated from the standpoint of an API (or other software object), as well as from a software or hardware object that implements one or more embodiments as described herein. Thus, various embodiments described herein can have aspects that are wholly in hardware, partly in hardware and partly in software, as well as in software. 
         [0059]    The word “exemplary” is used herein to mean serving as an example, instance, or illustration. For the avoidance of doubt, the subject matter disclosed herein is not limited by such examples. In addition, any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs, nor is it meant to preclude equivalent exemplary structures and techniques known to those of ordinary skill in the art. Furthermore, to the extent that the terms “includes,” “has,” “contains,” and other similar words are used, for the avoidance of doubt, such terms are intended to be inclusive in a manner similar to the term “comprising” as an open transition word without precluding any additional or other elements when employed in a claim. 
         [0060]    As mentioned, the various techniques described herein may be implemented in connection with hardware or software or, where appropriate, with a combination of both. As used herein, the terms “component,” “module,” “system” and the like are likewise intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program, and/or a computer. By way of illustration, both an application running on computer and the computer can be a component. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. 
         [0061]    The aforementioned systems have been described with respect to interaction between several components. It can be appreciated that such systems and components can include those components or specified sub-components, some of the specified components or sub-components, and/or additional components, and according to various permutations and combinations of the foregoing. Sub-components can also be implemented as components communicatively coupled to other components rather than included within parent components (hierarchical). Additionally, it can be noted that one or more components may be combined into a single component providing aggregate functionality or divided into several separate sub-components, and that any one or more middle layers, such as a management layer, may be provided to communicatively couple to such sub-components in order to provide integrated functionality. Any components described herein may also interact with one or more other components not specifically described herein but generally known by those of skill in the art. 
         [0062]    In view of the exemplary systems described herein, methodologies that may be implemented in accordance with the described subject matter can also be appreciated with reference to the flowcharts of the various figures. While for purposes of simplicity of explanation, the methodologies are shown and described as a series of blocks, it is to be understood and appreciated that the various embodiments are not limited by the order of the blocks, as some blocks may occur in different orders and/or concurrently with other blocks from what is depicted and described herein. Where non-sequential, or branched, flow is illustrated via flowchart, it can be appreciated that various other branches, flow paths, and orders of the blocks, may be implemented which achieve the same or a similar result. Moreover, some illustrated blocks are optional in implementing the methodologies described hereinafter. 
       CONCLUSION 
       [0063]    While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents falling within the spirit and scope of the invention. 
         [0064]    In addition to the various embodiments described herein, it is to be understood that other similar embodiments can be used or modifications and additions can be made to the described embodiment(s) for performing the same or equivalent function of the corresponding embodiment(s) without deviating therefrom. Still further, multiple processing chips or multiple devices can share the performance of one or more functions described herein, and similarly, storage can be effected across a plurality of devices. Accordingly, the invention is not to be limited to any single embodiment, but rather is to be construed in breadth, spirit and scope in accordance with the appended claims.