Abstract:
Systems and methods for managing software appliances using a broadcast mechanism, embodiments of which incorporate a centralized appliance monitor that collects software appliance state information from a community of clients having software appliance installations. Software appliances can include a reduced-component operating system combined with pre-configured application(s), for instance distributed via optical disc or Web download. When a software appliance instantiates on a client in the network or at other times, the identity and execution state of the application is broadcast to an appliance monitor. The appliance monitor aggregates the appliance state information for all clients in the network, and manages their deployment and execution on the network. The appliance monitor can for example transmit an appliance control instruction to a client to terminate or otherwise manage an uncertified or unapproved appliance, or take other network management action.

Description:
FIELD 
     The present teachings relate to techniques for managing software appliances distributed on a network, and more particularly to systems and methods for monitoring software appliance usage using a broadcast mechanism that communicates the state of software appliances installed in a network to an administrative monitor. 
     BACKGROUND OF RELATED ART 
     Software appliances generally involve the encapsulation of a pre-defined application or applications with a reduced version of an operating system (OS), such as the Linux™ operating system. Software appliances in one regard thereby represent a relatively compact, ready-to-install application solution and can be distributed via media such as CD-ROM discs, or downloaded for installation. Software appliances can be distributed and installed in a variety of environments, including stand-alone and networked environments. 
     Due in part to their compactness and ease of installation and configuration, software appliances are readily installed by a variety of users. However in a networked environment, that ease of installation can lead users to freely obtain and install a range of unapproved software appliances. In a controlled network environment, such as a large-scale corporate or government network or site, users can for example install unauthorized, incompatible, or uncertified types or versions of software appliances. For example, users may install software appliances of differing or incompatible versions, or software appliances that are not validated for security purposes. 
     Software appliances can be distributed with integral management tools that permit a user of a specific installation of that appliance to manage the operation of that appliance directly on that client or other host. However, it may be desirable to provide methods and systems to manage an entire population of software appliances on a network from a centralized monitor or host, including to track and prevent uncertified appliance installations on the network. 
    
    
     
       DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate embodiments of the present teachings and together with the description serve to explain the principles of the present teachings. In the figures: 
         FIG. 1  illustrates an overall system for software appliance management using a broadcast mechanism, according to various embodiments; 
         FIG. 2  illustrates an exemplary hardware configuration for a client, according to various embodiments; 
         FIG. 3  illustrates an exemplary configuration of an appliance monitor and associated data store, according to various embodiments; and 
         FIG. 4  illustrates a flow diagram of overall software appliance management using a broadcast mechanism, according to various embodiments. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     Embodiments relate to systems and methods for software appliance management using a broadcast mechanism, in which a set of networked clients host sets of installed software appliances. Each client in the set of networked clients contains a broadcast module which communicates state information about the set of software appliances locally installed on that client, such as the identity of the one or more appliances an execution state of those appliances, version numbers for those appliances, a client ID of the host client, an input/output (I/O) state of the appliance and/or client such as a list of active ports, or other metadata capturing the configuration or execution state of the installed appliances. The broadcast module in each client can transmit the appliance state information on a periodic or other basis to other clients in the network, as well as to a centralized appliance monitor communicating with the network. The appliance monitor can comprise a server or other workstation configured to listen on the network for the stream of appliance state data broadcast by clients populating the set of clients, and aggregate the states of appliances on individual clients to an aggregate state table representing the collective state of all software appliances executing on the network. 
     The software appliances themselves can comprise one or more applications combined with “minimum amount of an operating system” (MiniOS) to allow the embedded application(s) to run on a computing platform or in a virtual machine executing on a computing platform. The incorporated MiniOS can comprise a subset of the components of a complete OS that contains enough resources to support the application(s) intended to be encapsulated with a MiniOS in an appliance. A software appliance can therefore occupy less space than regular or self-standing applications and independent OSes. 
     A software appliance can be pre-configured for a specific client or computing platform on which it will be placed. Specifically, during creation of a software appliance, the embedded MiniOS and application(s) can be pre-configured with the settings and parameters of the client or computing platform on which it will be placed. For example, if software appliance includes a server OS and email server application, the server OS and email server application can be pre-configured to operate with the network settings of the computing platform it be placed and the network it will serve. Accordingly, a software appliance needs only to be placed on the target client or computing platform without additional configuration. In embodiments, a software appliance can be installed to a variety of clients, servers or other target devices, such as network servers, personal computers, network-enabled cellular telephones, personal digital assistants, media players, and others. 
     In general, the appliance monitor can check the aggregate state table representing the state of all appliances against a validation profile to determine whether the combined set of software appliances executing on the network being supervised are validated and/or operating properly. For example, the validation profile can validate versions of a given software appliance that are known to be compatible with the hardware or software requirements of the particular network whose group of appliances are being managed. The appliance monitor can transmit an appliance control instruction to the set of clients to correct or manage the state of software appliance installation or operation, such as for example to terminate uncertified appliances or to update selected clients with a newer validated version of an installed appliance. A systems administrator or other user can therefore operate the appliance monitor from a centralized location and manage and maintain the entire set of software appliance resources residing on the network, in a coordinated fashion. Also, because the appliance state information is broadcast or streamed from the client population on an automatic or continuous basis, unauthorized appliance use or other network faults or conditions can be detected and addressed relatively promptly. These and other embodiments described herein address the various noted shortcomings in know network management technology related to software appliances, and provide enhanced software appliance management tools and options. 
     Reference will now be made in detail to exemplary embodiments of the present teachings, which are illustrated in the accompanying drawings. Where possible the same reference numbers will be used throughout the drawings to refer to the same or like parts. 
       FIG. 1  illustrates an overall system  100  consistent with various embodiments of systems and methods for software appliance management using a broadcast mechanism, according to embodiments of the present teachings. In embodiments as shown, a set of clients  118  can communicate with each other and with an appliance monitor  126  via network  116 . Network  116  can be or include the Internet or other public network, a virtual private network (VPN) operating within a public network, a private network, or other network or connection. Each individual client in the set of clients  118  can be a personal computer, network-enabled cellular telephones, personal digital assistants, media players, or other devices. Each client in the set of clients  118  can contain or host an installed set of software appliances  122 , as well as a broadcast module  124 . Each set of software appliances  122  can comprise one or more difference software appliances of different types, for instance, an email client appliance, a browser appliance, a media player appliance, or others. Each set of software appliances  122  can comprise updates to the originally installed appliances. 
     The broadcast module  124  of each client can be configured to automatically transmit appliance state information  120  representing the configuration and/or execution state of the respective set of software appliances  122  installed on that client to the remainder of the set of clients  118 , as well as to appliance monitor  126 . Appliance state information  120  can for example contain metadata representing or encoding the execution state of a software appliance, the client ID on which the appliance is installed or executing, version information for the appliance, and other metadata characterizing or identifying attributes of the subject software appliance. In embodiments, broadcast module  124  can automatically transmit appliance state information  120  upon the instantiation of any software appliance on the associated local client. In embodiments, broadcast module  124  can be configured to transmit appliance state information  120  at other times, such as predetermined regular intervals, or at other times. 
     Appliance monitor  126  receives the incoming stream of appliance state information  120  from set of clients  118 , and in embodiments aggregates that information in an appliance data store  130 . Appliance monitor  126  can host a management engine  128  that receives appliance state information  120  and organizes appliance state information in an aggregate state table  132  encapsulating all appliance metadata received from all clients in the set of clients  118 . Management engine  128  can be configured to examine any individual set of appliance state information  120  and/or aggregate state table  132  to carry out management functions for the software appliance pool installed on network  116 . Management engine  128  can for instance track the identity, number type, and version information of the total installed set of software appliances to maintain consistent versions, to track upgrade histories or entitlements, to ensure security policies are maintained, or perform other management functions from one centralized station. In embodiments, management engine  128  can audit the collective software appliances aggregated form the reported set of software appliances  122  of each client to identify unauthorized or uncertified appliances executing on network  116 . Management engine  128  can for instance check the identity of software appliances against an appliance validation profile  130  that can enumerate approved software appliances and identify those that are not authorized, certified or validated. Management engine  128  can then take supervisory action on network  116  when unauthorized appliances are detected, for instance to terminate or uninstall such versions. 
       FIG. 2  illustrates an illustrative configuration of hardware and other resources incorporated in an individual client  102  with which appliance monitor  126  can communicate via network  116 , according to embodiments. In embodiments as shown, client  102  can comprise a processor  108  communicating with memory  110 , such as electronic random access memory, operating under control of or in conjunction with operating system  104 . Operating system  104  can be a distribution of the Linux™ operating system, the Unix™ operating system, or other open-source or proprietary operating system. Operating system  104  can present a user interface to accept user inputs and commands, and manage data storage, input/output (I/O), and other operations. Processor  108  also communicates with local data store  106 , such as a database stored on a local hard drive. Processor  108  further communicates with network interface  112 , such as an Ethernet or wireless data connection, which in turn communicates with network  116 , such as the Internet or other public or private networks, to communicate with set of clients  118 , in which client  102 , appliance monitor  126 , and other clients can reside. Other configurations of client  102 , appliance monitor  126 , associated networked connections, and other hardware and software resources are possible. 
     In terms of interaction between set of clients  118  and appliance monitor  126 , in embodiments as shown in  FIG. 3 , management engine  128  can collect the incoming stream of appliance state information  120  and build aggregate state table  132  based on that information reported from set of clients  118 . In embodiments, aggregate state table  132  can contain a software appliance ID  134  as a key field, as well as appliance metadata  136  consisting of fields of information representing aspects of the execution and/or execution state of an individual software appliance. Appliance metadata  136 , as shown, can contain fields such as software appliance ID  134 , a version field, an execution state field representing the execution state of a software appliance on a given client, the input/output (I/O) state of the appliance (e.g., active, inactive, suspended, terminated), the client ID of the hosting client, and other fields or data. In embodiments, other fields and/or configurations of aggregate state table  132  can be used. 
     Upon determination of the state of execution and/or configuration of a software appliance in aggregate state table  132 , management engine  128  can generate and transmit an appliance control instruction  138  to the set of clients  118  via network  116 . Appliance control instruction  138  can contain administrative or supervisory-level code or instructions for receipt and execution by clients in the set of clients  138 . Appliance control instruction  138  can contain an instruction, for instance, to terminate and/or uninstall all instances of an appliance determined to be unauthorized or uncertified for use in network  116 . Appliance control instruction  138  can contain other types of instructions or code, for example, instructions for maintenance or update procedures to take place in set of clients  118  at predetermined or other times. Other maintenance and management operations are possible. 
       FIG. 4  illustrates a flow diagram of overall software appliance management using a broadcast mechanism, according to various embodiments. In step  402 , processing can begin. In step  404 , the any one or more appliance in set of software appliances  122  installed on respective clients in set of clients  118  can be instantiated, for instance by user selection or automatic startup when the client device is booted or powered up. In step  406 , the broadcast module  124  of each respective client in the set of clients  118  can be activated, for instance by automatic detection of a connection to network  116 . In step  408 , appliance state information  120  can be received by appliance monitor  126  from any one or more client in set of clients  118  indicating the execution state of one or more software appliances instantiated or installed on that client. In embodiments, appliance state information  120  can incorporate an appliance ID  134  such as a numeric code indicating the identity and/or version of a software appliance, a version number for the software appliance, an execution state of the appliance (e.g., active, inactive, suspended, terminated etc.), an input/output (I/O) state or configuration of the appliance (e.g., listing any active ports being listened to or transmitted on by the appliance), or other metadata or fields indicating the execution state of each enumerated software appliance. In embodiments, appliance state information  120  can be broadcast automatically and/or periodically by broadcast module  124  of each associated client, or can broadcast to other clients and/or appliance monitor  126  based on even triggers, such as initiation of or communication by an appliance. 
     In step  410 , appliance monitor  126  can update aggregate state table  132  using any recently received appliance state information  120 , as appropriate. In embodiments, updates to aggregate state table  132  can be initiated only upon detection of an incremental update to appliance state information  120  of any one or more appliance. In step  412 , the set of software appliances  122  aggregated in aggregate state table  132  can be validated against appliance validation profile  140 , for example to confirm that all executing appliances executing on set of clients  118  via network  126  are certified, authorized or otherwise validated software appliances. If an appliance does not validate against appliance validation profile  140 , an exception can be registered to aggregate state table  132  or otherwise thrown. 
     In step  414 , appliance monitor  126  can generate and transmit an appliance control instruction  138  to one or more respective clients in the set of clients  118 . Appliance control instruction  138  can be or include, for instance, an instruction to terminate or suspend the execution of an uncertified software appliance detected on one or more respective clients in set of clients  118 . In embodiments appliance control instruction  138  can be or include other instructions, for instance, to allocate a different port to an appliance, to adjust the amount of memory allocated to an appliance, to identify a data store from which the appliance will obtain data, or other commands, instructions, or configuration messages. In step  416 , appliance monitor  126  can update aggregate state table  132  based on any administrative actions taken by appliance monitor  126  and/or any issued appliance control instruction  138 , for instance to reflect newly deactivated appliances. In step  418 , processing can repeat, return to a prior processing point, jump to a further processing point, or end, as understood by persons skilled in the art. 
     The foregoing description is illustrative, and variations in configuration and implementation may occur to persons skilled in the art. For example, while embodiments have been described in terms of the distribution and management of software appliances on a single network  116 , in embodiments the inventive platform and techniques can manage a set of software appliances across multiple networks. Similarly, while embodiments have been described in which the appliance state information  130 , management engine  128  and associated resources are hosted in a single appliance monitor  126 , in embodiments the control logic used to track and manage the set of software appliances  122  can be distributed across multiple servers, sites or other resources. For further example, in embodiments management logic and other functions can be distributed to various clients within set of clients  118  itself, or to other platforms. Other resources described as singular or integrated can in embodiments be plural or distributed, and resources described as multiple or distributed can in embodiments be combined. The scope of the invention is accordingly intended to be limited only by the following claims.