# Patent

## Title
Synchronized relay messaging and coordinated network processing using SNMP

## Abstract

Methods, devices, and systems are provided for utilizing asynchronous messaging protocols, such as the Simple Network Management Protocol (SNMP), to implement relay messaging through a network, gather data from and/or set parameters on a plurality of managed devices in a network through the issuance and transmission of a single SNMP message, and/or cause multiple managed devices to perform cooperative and coordinated computations through the issuance of a single SNMP message.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application claims the benefit of U.S. Provisional Application No. 61/160,183, filed Mar. 13, 2009, the entire disclosure of which is hereby incorporated herein by reference.


FIELD OF THE INVENTION
The present invention relates generally to device networks and management of the same.
BACKGROUND
The Internet's Simple Network Management Protocol (SNMP) as standardized by the Internet Engineering Task Force (IETF) is typically used by network management programs and network management dashboards to retrieve current status information from remote computer network devices and services such as printers, routers, databases and Web servers. The device managing the network, usually referred to as the managing device, typically includes a network management program that allows the device to send out a GET request to a remote device, which may also be referred to as a managed device. The GET request is formatted to request information on a particular aspect of service provided by the managed device. The managed device responds to the GET request with the status of the service requested by the managing device. For example, a network management program might request the ink level of a remote printer with a GET request. Upon receiving the GET request, the remote printer would respond with the current level of ink in the printer.
SNMP can also be used by network management programs to SET parameters in remote services. For example, a network management program could set the time at which a Web server should terminate an operation.
The details of SNMP and particularly the structure of GET requests, SET commands, and other SNMP operations and messages are further defined in IETF Request For Comment (RFC) 3416, the entire contents of which are hereby incorporated herein by reference.
The operations defined in RFC 3416 include the following:
GET
GET-NEXT
GET-BULK
RESPONSE
SET
INFORM
TRAP
REPORT
In the case of setting a parameter or performing an action on a managed device, it is important that the network management program receive positive acknowledgement that its instructions have been received and successfully carried out. Furthermore, since the managed device may have modest computation capabilities and may be on a relatively slow-speed communication link, the network management program is typically configured to wait for acknowledgement for a considerable length of time (e.g., 5 seconds to 5 minutes, which is relatively long in the computer and computer communications context). While waiting, the network management program is usually not allowed to perform any other actions or send out any other messages to manage other network devices. As can be appreciated by one skilled in the art, this greatly reduces the overall efficiency of network management programs.
Another drawback to current implementations of SNMP is that managing devices utilize a point-to-point method of communication. For example, when a managing device needs to gather data from ten managed devices in the network, the managing device needs to send out ten SNMP messages (i.e., one GET message to each managed device). As can be appreciated by one skilled in the art, the transmission of ten separate messages from the managing device is an inefficient use of already constrained network bandwidth and processing resources.
SUMMARY
Accordingly, there exists a need for mechanisms that utilize SNMP with greater efficiency.
It is thus one aspect of the present invention to harness properties of SNMP in accordance with RFC 3416 to implement relay messaging through a network. More specifically, one or more SNMP messages may be configured to trigger processing on a node (i.e., a managed device) when the message is received.
It is another aspect of the present invention to provide a managing device with the ability to gather data from a plurality of managed devices in a network through the issuance and transmission of a single SNMP message.
It is yet another aspect of the present invention to provide a managing device with the ability to set parameters of a plurality of managed devices in a network through the issuance and transmission of a single SNMP message.
It is still another aspect of the present invention to provide a managing device with the ability to gather data and set parameters of different managed devices in a network through the issuance and transmission of a single SNMP message.
It is still another aspect of the present invention to provide a managing device with the ability to gather data and set multiple parameters of a single managed device in a network through the issuance and transmission of a single SNMP message.
It is another aspect of the present invention to issue one or more SNMP messages from a managing device that cause multiple managed devices to perform cooperative and coordinated computations. Thus, it may be possible to cause managed devices to synchronize their activity with other managed devices.
It is another aspect of the present invention to provide a managing device with the ability to transmit an SNMP message and not wait for an acknowledgement of receipt or completion of processing of the SNMP message. Rather, the managing device is allowed to continue processing in the absence of receiving an acknowledgement. Furthermore, the managing device can transmit one or more queries to the managed device after the initial SNMP message has been transmitted to determine if the processing of the SNMP message has completed.
In accordance with at least some embodiments of the present invention, semaphore semantics are imparted to existing SET and GET messages (i.e., SET and GET messages generated in accordance with RFC 3416). Additionally, SNMP SET and GET messages are provided with the ability to perform or initiate cascaded SET and GET messages in the course of their execution. When used in combination, embodiments of the present invention enable network-wide behavior including bucket brigade messaging, data scatter and gather, and synchronized processing.
In accordance with at least some embodiments of the present invention, a method is provided that generally comprises:
receiving, at a managed device, an asynchronous message containing instructions for the managed device to perform a work item; and
processing the work item at the managed device, wherein during processing the managed device performs one or more of the following actions (i) generating a subsequent asynchronous message for transmission to another managed device; (ii) placing the work item in a work item queue comprising a plurality of work items to be performed for a plurality of different work item requestors; and (iii) generating a plurality of subsequent asynchronous messages for transmission to one or more managed devices.
The Summary is neither intended nor should it be construed as being representative of the full extent and scope of the present invention. The present invention is set forth in various levels of detail and the Summary as well as in the attached drawings and in the detailed description of the invention and no limitation as to the scope of the present invention is intended by either the inclusion or non inclusion of elements, components, etc. in the Summary. Additional aspects of the present invention will become more readily apparent from the detailed description, particularly when taken together with the drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 depicts a communication system in accordance with embodiments of the present invention;
FIG. 2 is a flow chart depicting a method of queuing a work item request in accordance with embodiments of the present invention;
FIG. 3 is a flow chart depicting a method of processing a done query in accordance with embodiments of the present invention; and
FIG. 4 is a flow chart depicting a method of processing a work item request in accordance with embodiments of the present invention.



DETAILED DESCRIPTION
The invention will be illustrated below in conjunction with an exemplary communication system. Although well suited for use with, e.g., a system using computers, servers, and other computing devices, the invention is not limited to use with any particular type of computing or communication device or configuration of system elements. Those skilled in the art will recognize that the disclosed techniques may be used in any application in which it is desirable to leverage SNMP to enable network-wide behavior and advanced processing functions.
The exemplary systems and methods of this invention will also be described in relation to analysis software, modules, and associated analysis hardware. However, to avoid unnecessarily obscuring the present invention, the following description omits well-known structures, components and devices that may be shown in block diagram form that are well known, or are otherwise summarized.
For purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present invention. It should be appreciated, however, that the present invention may be practiced in a variety of ways beyond the specific details set forth herein.
Referring initially to FIG. 1, details of a communication system 100 are depicted in accordance with at least some embodiments of the present invention. The communication system 100 generally includes a communication network 104 that connects a managed device 112 to one or more managing devices 108. The managing devices 108 are depicted as communication devices capable of transmitting a work item request in the form of an asynchronous message, such as an SNMP message, to the managed device 112. The managing devices 108 or requestors may correspond to any type of known administrative computational component or collection of components including, without limitation, an administrative computer or workstation, a control panel, or the like.
The managed device 112 is depicted as a server comprising a work flow engine 116. The work flow engine 116 may comprise a work item processing module 120, an SNMP daemon 124, a work item processing queue 128, an SNMP results table 132, and a daemon processing queue 140. The processing module 120 is responsible for receiving and handling SNMP requests, such as SET and GET messages, when they are initially received at the managed device 112 from a managing device 108.
Upon receiving an SNMP request, the processing module 120 is adapted to determine whether it is currently ready to process the SNMP request or whether the request will need to wait for processing. Generally speaking, the processing module 120 processes SNMP requests on a first-come first-served basis. Thus, if the processing module 120 is currently processing an SNMP request when it receives another request, the later received SNMP request is placed in the work item processing queue 128. The work item processing queue 128 may correspond to a First In First Out (FIFO) queue, although the queue 128 may be organized according to other algorithms. For instance, work items may be assigned a queue position in the work item processing queue 128 based on priority, type of request, identity of the requestor, and combinations thereof.
As will be discussed in further detail below, if a work item is placed in the work item processing queue 128, that work item may be assigned a work item identifier (WID). Furthermore, when a work item is received by the processing module 120, the processing module 120 creates a work item entry in the SNMP results table 132. Initially, the entry is left blank. Once the work item has been processed, however, the results obtained by processing the work item (e.g., a requested variable, a requested parameter, an indication that a variable or parameter has been set to a particular value in one or more managed devices 112, etc.) are placed in the work item entry in the SNMP results table 132.
The WID assigned to a work item can be used to index the work item results or at least the entry location assigned to the work item such that the results can be obtained by the managed device 112 if such information is requested at a later time. More specifically, the use of an SNMP results table 132 allows the managed device 112 to processes asynchronous requests synchronously. Furthermore, the managing device 108 or initiator of the SNMP request does not need to delay other processing or wait for an indication that the SNMP request has been processed. Rather, the managing device 108 can simply submit a done query to the managed device 112 at a later point in time, thereby causing the managed device 112 to refer to the SNMP results table 132 to determine if the work item has been processed yet or if the work item is still in the work item processing queue 128.
Often times, the processing module 120 may need to obtain additional information to process a particular work item. In these instances, the processing module 120 may invoke the SNMP daemon 124 to assist in sub-processing routines. In accordance with at least some embodiments of the present invention, when the processing module 120 needs to invoke the SNMP daemon 124, the processing module 120 creates a work item entry in the daemon processing queue 140. The organization and format of the daemon processing queue 140 may be similar to or different from the organization and format of the work item processing queue 128. For example, the daemon processing queue 140 may be a FIFO queue. Once a work item reaches the top position in the daemon processing queue 140, the SNMP daemon 124 begins processing the work item. During processing, the SNMP daemon 124 may be adapted to send additional SNMP requests, such as SET and GET messages, to other managed devices 112 which may be components within the server 112 and/or other devices external to the server 112.
Results obtained by the SNMP daemon 124 may also be inserted into the SNMP results table 132. These results may be referred to as intermediate results as they will ultimately be used by the processing module 120 to complete the processing of the original work item request. When the processing module 120 identifies that intermediate results have been placed in the SNMP results table 132 by the SNMP daemon 124, the processing module 120 may continue processing the work item request.
In accordance with at least some embodiments of the present invention, the SNMP daemon 124 may insert the results into the appropriate work item entry by determining the WID assigned to the work item by the processing module 120 and then identifying the entry in the SNMP results table 132 which corresponds to that WID. The WID may be communicated by the processing module 120 to the SNMP daemon 124 via the daemon processing queue 140 (e.g., by inserting the WID in the queue along with the work item to be processed by the SNMP daemon 124).
Although only one managed device 112 is depicted in FIG. 1. One skilled in the art will appreciate that a plurality of managed devices 112 may be provided in the communication system 100. In accordance with at least some embodiments of the present invention, one managing device 108 may be adapted to coordinate the processing of multiple other managed devices 112 by issuing a single SNMP message. Additionally, a managed device 112 may be adapted to relay an SNMP message to another managed device 112. Still further, a managed device 112 may be adapted to generate a plurality of SNMP messages for transmission to other managed devices 112 in response to receiving and processing a single SNMP message received from a managing device 108.
Other types of managed devices 112 may include, without limitation, an integrated circuit card, a smart card, a subscriber identity module card, a security authentication module card, a printer, a reader, a component within a printer, a component within a reader, a server, a component within a server, and a credential writer. It should also be noted that a single device or component within a device may act as both a managed device and a managing device.
In accordance with at least some embodiments of the present invention, the communication network 104 is adapted to carry messages between the components connected thereto. Thus, a managing device 108 sends messages to and receives messages from a managed device 112 via the communication network 104. The communication network 104 may comprise any type of known communication network including wired and wireless or combinations of communication networks and may span long or small distances. The protocols supported by the communication network 104 include, but are not limited to, the TCP/IP protocol, Wi-Fi, Wiegand Protocol, RS 232, RS 485, RS422, Current Loop, F2F, Bluetooth, Zigbee, GSM, SMS, optical, audio and so forth. The Internet is an example of the communication network 104 that constitutes a collection of IP networks consisting of many computers and other communication devices located locally and all over the world. The devices may are connected through many telephone systems and other means. Other examples of the communication network 104 include, without limitation, a standard Plain Old Telephone System (POTS), an Integrated Services Digital Network (ISDN), the Public Switched Telephone Network (PSTN), a Local Area Network (LAN), a Wide Area Network (WAN), a Session Initiation Protocol (SIP) network, a cellular communication network, a satellite communication network, any type of enterprise network, and any other type of packet-switched or circuit-switched network known in the art. It can be appreciated that the communication network 104 need not be limited to any one network type, and instead may be comprised of a number of different networks and/or network types.
In accordance with at least some embodiments of the present invention, the managing device 108 may be adapted to generate an asynchronous request message in the form of an SNMP message. To prepare the SNMP message for transmission over the communication network 104, the managing device 108 may encapsulate the SNMP message in another type of message format capable of being transmitted over the communication network 104. As one example, the SNMP message may be encapsulated in a TCP or UDP packet or collection of packets which are then sent over the communication network 104. The managed device 112 is adapted to receive the packet or packets of information and remove the SNMP message encapsulated therein at which point the managed device 112 can analyze the SNMP message and perform any task necessary to process the request.
With reference now to FIG. 2, an exemplary method of handling an initially received SNMP request will be discussed in accordance with at least some embodiments of the present invention. The method is initiated when a work item request is received at the managed device 112 (step 204). The work item request may be received in the form of an asynchronous message, such as an SNMP message, containing instructions for the managed device 112 to perform the work item. This step may also require that the managed device 112 extract the asynchronous message from another container-type message that was used to transmit the asynchronous message across the communication network 104. For example, the SNMP message may have been encapsulated in a UDP or TCP packet for transmission across the communication network 104.
Once received, the managed device 112 then invokes the processing module 120 which analyzes the work item request contained within the message and begins processing the work item. Typically speaking, however, the processing module 120 is already processing some other work item, in which case the processing module 120 places the work item in a queue position in the work item processing queue 128 (step 408).
After the work item has been placed in the work item processing queue 128, if such a step was necessary, the processing module 120 continues by assigning a WID to the work item (step 412). The WID assigned to the work item may be a randomly generated number, a number which is a combination of the time the request was received and the requestor of the work item request, a hash or checksum of some metadata contained within the work item, or any other type of identifier that can be used to substantially uniquely identify the work item among a number of other work items being processed by the managed device 112.
Once a WID has been assigned to a work item, the method continues with the processing module 120 creating a work item entry and a corresponding WID entry in the SNMP results table 132 (step 216). The SNMP results table 132 may have a plurality of WIDs indexed to work item results and/or intermediate work item results, which are provided by the SNMP daemon 124. An exemplary set of entries in the SNMP results table 132 may be depicted as follows:







TABLE 1







SNMP Results Table Entries











WID
Results
Intermediate Results







WID 1
Results 1
Intermediate Results 1





Intermediate Results 2



WID 2
Null
Intermediate Results 1





Intermediate Results 2





Intermediate Results 3



WID 3
Results 3
Null



WID N
Null
Null










As can be seen in Table 1, a work item entry may have final results, intermediate results, and/or no results. The appearance of final results may indicate that the processing module 120 has completed processing a work item, whereas the appearance of intermediate results in the absence of final results may indicate that the SNMP daemon 124 is currently processing a work item and the processing module 120 is waiting on the SNMP daemon 124 to complete processing of sub-tasks assigned to the SNMP daemon 124 by the processing module 120. The absence of results in either the final results column or intermediate results column may indicate that the work item is still waiting in the work item processing queue 128 for processing. As can be appreciated by one skilled in the art, although two columns are depicted for final results and intermediate results, respectively, one skilled in the art will appreciate that a single results column may be indexed to a WID and that single results column may be shared by the processing module 120 and SNMP daemon 124.
Once the entry has been created in the SNMP results table 132, the processing module 120 generates an acknowledgement message for transmission to the managing device 108 which transmitted the work item to the managed device 112 (step 220). During this step, the processing module 120 may include the WID in the message, thereby communicating the WID to the managing device 108. This WID can be used by the managing device 108 at a later time to request the processing status of the work item. The message is then transmitted back to the managing device 108, thereby affirming that the work item has been received and will be processed in due course (step 224). This acknowledgement message is different from prior art acknowledgement messages in that the acknowledgement message transmitted by the processing module 120 simply provides an indication that the work item request has been received, not necessarily that the work item request has been processed. Prior art managing devices 108 would wait for an acknowledgement message indicating that a work item has been processed and that acknowledgement message may, sometimes, also contain results of the processing. This is not necessary in accordance with at least some embodiments of the present invention. Thus, the asynchronous work item requests can be processed synchronously, without violating any requirements associated with utilizing the asynchronous work item requests.
Referring now to FIG. 3, an exemplary method of responding to a done query will be described in accordance with at least some embodiments of the present invention. As noted above, the managing device 108 does not necessarily have to delay other processing while waiting on the processing module 120 to complete a work item initiated by the managing device 108. Instead, the managing device 108 can transmit one or more done queries to the managed device 112 to determine if the work item has been processed. As can be appreciated by one skilled in the art, the managing device 108 may be configured to transmit done queries on a periodic basis or in response to certain triggers. As an example, the managing device 108 may transmit a done query after a predetermined amount of time has elapsed since the transmission of the last done query. Alternatively, the managing device 108 may transmit a done query in response to some predetermined action or event occurring, such as a power cycle occurring at the managing device 108.
The managing device 108 transmits the done query across the communication network 104 where it is received as the managed device 112 (step 304). The done query may be in the form of an IP-based message or an SNMP message encapsulated within a UDP or TCP packet. The done query may also contain the WID previously communicated to the managing device 108 via the acknowledgement message transmitted by the managed device 112. Thus, the managed device 112 invokes the processing module 120 to evaluate the WID contained within the done query (step 308). This evaluation causes the processing module 120 to refer to the SNMP results table 132 to identify the location of the entry having the corresponding WID provided in the done query (step 312). The processing module 120 evaluates the corresponding SNMP results entries in the table 132 to determine if the work item has been processed (step 316). More specifically, in this step the processing module 120 will analyze the SNMP results table 132 to determine if any final results are included in the table 132. If no final results exist in the SNMP results table 132 for the requested WID, then the processing module 120 will send an empty response back to the managing device 112 which initially transmitted the done query (step 324). If, however, final results are found in the corresponding entry of the SNMP results table 132, then the processing module 120 will provide the results back to the managing device 112 (step 320).
As can be appreciated by one skilled in the art, the processing module 120 may be adapted to automatically transmit to the managing device 108 the final results obtained by processing a work item when such processing has completed. This may be done in the absence of a done query from the managing device 108. The results may still be maintained in the SNMP results table 132 for a predetermined amount of time, incase the managing device 112 or some other managing device 112 requests the results. The amount of time that the results are maintained in the SNMP results table 132 may depend upon the nature of the data and the work item as well as the capacity of the SNMP results table 132 and the need to commit its resources to other work items.
Referring now to FIG. 4, an exemplary method of processing a work item will be described in accordance with at least some embodiments of the present invention. The method begins with the processing module 120 identifying the next work item to be processed in the work item processing queue 128 (step 404). The processing module 120 then begins processing the identified work item (step 408). Of course, step 404 may be skipped if no items are currently being processed and no items are in the work item processing queue 128 when a work item request is received.
While processing the work item the processing module 120 determines if additional information is needed from other components not accessible to the processing module 120 (step 412). If this query is answered negatively, then the processing module 120 completes processing of the work item and places the results in the SNMP results table 132 (step 416) and then returns to step 404. Alternatively, or in addition, the processing module 120 may also transmit the processing results to the managing device 108 which initially transmitted the work item request to the managed device 112.
If the query of step 416 is answered affirmatively, then the method continues with the processing module 120 invoking the SNMP daemon 124 (step 420). The processing module 120 does this by sending an SNMP message or some other work item request via the daemon processing queue 140 (step 424). As can be appreciated by one skilled in the art, the SNMP request may simply be placed in the daemon processing queue 140 for retrieval by the SNMP daemon 124. Furthermore, multiple requests may be placed in the daemon processing queue 140 if the processing module 120 needs the daemon 124 to perform a plurality of processing sub-steps in connection with completing the initial work item. Alternatively, the processing module 120 may transmit the SNMP request directly to the SNMP daemon 124, which places the request in the daemon processing queue 140.
The method continues with the SNMP daemon 124 referencing the daemon processing queue 140 (step 424) to retrieve the SNMP request and determine what actions need to be performed in connection with completing the SNMP request. The actions required of the SNMP daemon 124 typically include the need to generate and transmit addition SET and/or GET messages to other managed devices 112 (step 428). The other managed devices 112 may correspond to other components within the server 112 or devices external to the server 112. The SET and/or GET messages are used as a mechanism for retrieving the additional information needed to complete the SNMP request (step 432). After the additional information has been retrieved from the appropriate other managed devices 112, the SNMP daemon 124 completes its processing of the SNMP request (step 436) and places the results in the SNMP results table 132, possibly as intermediate results (step 440).
The simple act of placing the results in the SNMP results table 132 may serve as an indicator to the processing module 120 that the SNMP daemon 124 has completed processing the SNMP request (step 444). Alternatively, the SNMP daemon 124 may send a message to the processing module 120 or the SNMP daemon 124 may remove the SNMP request from the daemon processing queue 140, which may also server as an indicator to the processing module 120 that the SNMP daemon 124 has completed processing the SNMP request. This allows the processing module 120 to retrieve the additional information (e.g., the intermediate results) that it needed the SNMP daemon 124 to gather on its behalf (step 448). Thereafter, the method returns to step 412, where it is determined whether further information is needed by the processing module 120 to complete processing of the work item.
While the above-described flowchart has been discussed in relation to a particular sequence of events, it should be appreciated that changes to this sequence can occur without materially effecting the operation of the invention. Additionally, the exact sequence of events need not occur as set forth in the exemplary embodiments. The exemplary techniques illustrated herein are not limited to the specifically illustrated embodiments but can also be utilized with the other exemplary embodiments and each described feature is individually and separately claimable.
The systems, methods and protocols of this invention can be implemented on a special purpose computer in addition to or in place of the described access control equipment, a programmed microprocessor or microcontroller and peripheral integrated circuit element(s), an ASIC or other integrated circuit, a digital signal processor, a hard-wired electronic or logic circuit such as discrete element circuit, a programmable logic device such as TPM, PLD, PLA, FPGA, PAL, a communications device, such as a server, personal computer, any comparable means, or the like. In general, any device capable of implementing a state machine that is in turn capable of implementing the methodology illustrated herein can be used to implement the various data messaging methods, protocols and techniques according to this invention.
Furthermore, the disclosed methods may be readily implemented in software. Alternatively, the disclosed system may be implemented partially or fully in hardware using standard logic circuits or VLSI design. Whether software or hardware is used to implement the systems in accordance with this invention is dependent on the speed and/or efficiency requirements of the system, the particular function, and the particular software or hardware systems or microprocessor or microcomputer systems being utilized. The analysis systems, methods and protocols illustrated herein can be readily implemented in hardware and/or software using any known or later developed systems or structures, devices and/or software by those of ordinary skill in the applicable art from the functional description provided herein and with a general basic knowledge of the computer arts.
Moreover, the disclosed methods may be readily implemented in software that can be stored on a storage medium, executed on a programmed general-purpose computer with the cooperation of a controller and memory, a special purpose computer, a microprocessor, or the like. In these instances, the systems and methods of this invention can be implemented as program embedded on personal computer such as an integrated circuit card applet, JAVA® or CGI script, as a resource residing on a server or computer workstation, as a routine embedded in a dedicated communication system or system component, or the like. The system can also be implemented by physically incorporating the system and/or method into a software and/or hardware system, such as the hardware and software systems of a communications device or system.
It is therefore apparent that there has been provided, in accordance with the present invention, systems, apparatuses and methods for synchronizing relay messaging and coordinating network processing using SNMP and other similar protocols. While this invention has been described in conjunction with a number of embodiments, it is evident that many alternatives, modifications and variations would be or are apparent to those of ordinary skill in the applicable arts. Accordingly, it is intended to embrace all such alternatives, modifications, equivalents and variations that are within the spirit and scope of this invention.

## Claims

1. A method, comprising:
receiving, at an SNMP managed device, an asynchronous message containing instructions for the managed device to perform a work item; and
processing the work item at the managed device, wherein during processing the managed device generates a subsequent asynchronous message for transmission to another managed device, wherein the managed device comprises an SNMP work flow engine residing in a server, the SNMP work flow engine comprising a processing module and an SNMP daemon, wherein the processing module receives the asynchronous message, and wherein the subsequent asynchronous message is transmitted via the SNMP daemon to at least one device not contained within the server.

2. The method of claim 1, wherein during processing the managed device also places the work item in a work item queue comprising a plurality of work items to be performed for a plurality of different work item requestors.

3. The method of claim 2, further comprising:
determining that the work item is the next work item in the work item queue to be processed;
performing at least one action in conformity with the work item;
storing results obtained by performing the at least one action in a results table; and
indexing the results in the results table such that the results can be accessed by the managed device at a later point in time.

4. The method of claim 3, further comprising:
receiving a done query at the managed device, the done query containing a work item identifier which identifies a previously requested work item;
analyzing the done query to determine the work item identifier;
referencing the results table with the work item identifier;
identifying an entry in the results table which is indexed with the work item identifier;
determining that the results in the results table which is indexed with the work item identifier has been completed; and
returning the results to a device which initiated the done query.

5. The method of claim 1, wherein during processing the managed device also generates a plurality of subsequent asynchronous messages for transmission to one or more managed devices.

6. The method of claim 5, wherein the asynchronous message comprises an SNMP message and wherein the plurality of subsequent asynchronous messages comprise two or more SNMP messages.

7. The method of claim 1, wherein the managed device comprises at least one server and a component within the server.

8. The method of claim 1, wherein the asynchronous message is encapsulated in at least one of a TCP and UDP packet, the method further comprising:
removing the asynchronous message from the packet within which the message is encapsulated; and
analyzing the asynchronous message.

9. An SNMP system, comprising:
a managing device adapted to generate and transmit an asynchronous message to a managed device and process a work item and wherein the managed device processes the work item such that the managed device generates a subsequent asynchronous message for transmission to another managed device, wherein the managed device is an SNMP work flow engine residing in a server, the SNMP work flow engine comprising a processing module and an SNMP daemon, wherein the processing module receives the asynchronous message and wherein the subsequent asynchronous message is transmitted via the SNMP daemon to at least one device not contained within the server.

10. The system of claim 9, wherein the managed device also places the work item in a work item queue comprising a plurality of work items to be performed for a plurality of different work item requestors.

11. The system of claim 10, wherein the managed device is further adapted to determine that the work item is the next work item in the work item queue to be processed, perform at least one action in conformity with the work item, store results obtained by performing the at least one action in a results table, and index the results in the results table such that the results can be accessed by the managed device at a later point in time.

12. The system of claim 11, wherein the managed device is further adapted to receive a done query, wherein the done query contains a work item identifier which identifies a previously requested work item, analyze the done query to determine the work item identifier, reference the results table with the work item identifier, identify an entry in the results table which is indexed with the work item identifier, determine that the results in the results table which is indexed with the work item identifier has been completed, and return the results to a device which initiated the done query.

13. The system of claim 9, wherein the managed device also generates a plurality of subsequent asynchronous messages for transmission to one or more managed devices.

14. The system of claim 13, wherein the asynchronous message comprises an SNMP message and wherein the plurality of subsequent asynchronous messages comprise two or more SNMP messages.

15. The system of claim 9, wherein the managed device comprises at least one of an integrated circuit card, a smart card, a subscriber identity module card, a security authentication module card, a printer, a reader, a component within a printer, a component within a reader, a server, and a component within a server.

16. The system of claim 9, wherein the asynchronous message is encapsulated in at least one of a TCP and UDP packet and wherein the managed device is adapted to remove the asynchronous message from the packet within which the message is encapsulated and analyze the asynchronous message.

17. A computer program product comprising computer executable instructions stored onto a non-transitory computer readable medium which, when executed by a processor of a computer, cause the processor to execute a method, the method comprising:
determining that an asynchronous message has been received at a managed device, the message containing instructions for the managed device to perform a work item; and
generating a subsequent asynchronous message for transmission to another managed device, wherein the managed device comprises an SNMP work flow engine residing in a server, the SNMP work flow engine comprising a processing module and an SNMP daemon, wherein the processing module receives the asynchronous message, and wherein the subsequent asynchronous message is transmitted via the SNMP daemon to at least one device not contained within the server.

18. The method of claim 17, wherein the managed device is also caused to place the work item in a work item queue comprising a plurality of work items to be performed for a plurality of different work item requestors.

19. The method of claim 17, wherein the managed device is also caused to generate a plurality of subsequent asynchronous messages for transmission to one or more managed devices.