Servers are regularly accessed by various client devices for various reasons. For example, a remote web client may access a server to obtain data or to perform execution of software provided on the server.
For a more complete understanding of various examples, reference is now made to the following description taken in connection with the accompanying drawings in which:
Various examples described herein provide for secure queuing and processing of a set of jobs that may be received by a device (e.g., server device). A job pool may be provided in a secure storage area, which may be a private storage in an embedded management controller of the server device. The embedded management controller of the server device may be running and online both when the main processor of the server device is running and when the main processor is in an inactive mode. Further, the job pool may be such that its access by a remote device is limited to (e.g., can only be accessed using) a secure protocol, and may be further limited to a predetermined set of commands.
Referring now to the figures,
The example management controller 122 performs functions to manage the device 120, such functions including those of a baseboard management controller (BMC). The example management controller 122 can be connected to a network using a communication port on the device 120, for example.
The example management controller 122 is provided with an internal, private storage 140 forming a secure storage area. The private storage 140 may be accessible by the operating system of the device 120 in a read-only or a read/write mode.
The example private storage 140 is provided with a job pool 142, which may comprise a job queue. As described in detail below with reference to
The remote client 230 may be any of a variety of computing devices that can communicate with the device 120. For example, the remote client 230 may be a desktop, laptop, tablet, smart phone or any other such computing device. The remote client 230 may communicate with the device 120 through a network, such as the Internet.
The example management controller 122 can be connected to a network using a communication port (e.g., the network interface 226) on the device 120, for example. The example management controller 122 is running and remains online regardless of the state of the processor 124. For example, whether the processor 124 is running or in an inactive mode (e.g., sleep mode), the management controller 122 remains available and accessible to external components, such as the administration device 210 and the remote client 230.
As noted above with reference to
Referring now to
The example device 120 may include an operating system 355 including, for example, an operating system driver component and a pre-boot Basic Input/Output System (BIOS) component stored in a read-only memory (ROM), and coupled to the main processor 124. In various examples, the main processor 124 may have a memory device 320, which may be non-transitory. In various examples, the memory device 320 may have one or more of ROM, programmable flash memory or erasable programmable ROM (EPROM). In various examples, the memory device 320 may be integrally formed with the main processor 124 or may be an external memory device. The memory device 320 may include program code that may be executed by the main processor 124.
The example device 120 may include a display 360 to provide visual information to a network administrator. The example device 120 also includes a network interface 226, and may include other hardware 370 known to those in the art. The network interface 226 is coupled to the network management fabric to allow communication between the example device 120 and other components, such as the administration device 210 or the remote client 230 shown in
The private storage 140 may be made secure, in part, by allowing access to the processor 124 and external components (e.g., the remote client 230 or the administration device 210) only through a secure protocol, a secure interface, or some combination thereof. For example, in the example of
Using HTTPS REST, the private storage 140 may be accessed using a limited, pre-determined set of commands. For example, in one example, the processor 124, the remote client 230 and the administration device 210 may use the following HTTPS REST commands:
(1) GET/rest/v1/ip: This command may be used by an external component (e.g., the remote client 230 and the administration device 210) to obtain the status of the processor 124. For example, the remote client 230 or the administration device 210 may determine that the processor 124 is either running or in an inactive mode (e.g., sleep mode).
(2) POST/rest/v1/ip: This command may be used by an external component (e.g., the remote client 230 and the administration device 210) to set the processor 124 to a particular state. For example, the remote client 230 or the administration device 210 may start or reboot the system.
(3) POST/rest/v1/ip/job: This command may be used by an external component (e.g., the remote client 230 and the administration device 210) to add a job to the job pool 142 in the private storage 140.
(4) GET/rest/v1/ip/job: This command may be used by an external component (e.g., the remote client 230 and the administration device 210) or the processor 124 to obtain a list of all jobs in the job pool 142. This command may also return the status of each job in the job pool 142.
(5) GET/rest/v1/ip/job?id=n: This command may be used by the processor 124 to obtain contents of a particular job (e.g., job n) from the job pool 142 for processing.
(6) PATCH/rest/v1/ip/job?id=n: This command may be used by the processor 124 to update the status of a particular job. For example, once the contents of the job have been retrieved from the job pool 142 by the processor 124, the status of the job may be updated to “RUNNING”. Similarly, when the job is completed, the status of the job may be updated to “DONE”.
(7) DELETE/rest/v1/ip/job?id=n: This command may be used by an external component (e.g., the remote client 230 and the administration device 210) to remove a particular job from the job pool 142. For example, once a job is completed and returned to the external component, the external component may delete the job from the job pool 142.
Referring now to
The external components may poll the job pool to obtain status of a set of jobs in the job pool 142, as indicated by the arrow 420 in
For processing of a set of jobs in the job pool, when the processor 124 is running, the processor 124 may communicate with the job pool 142 to obtain a set of jobs for processing, as indicated by the arrow 430 in
As noted above, the example embedded management controller 122 is running and remains online regardless of the state of the processor 124. Thus, whether the processor 124 is running or in an inactive mode (e.g., sleep mode), the management controller 122 remains available and accessible to external components. Accordingly, the communication between the job pool 142 and the external components, as indicated by the arrows 410 and 420, may occur when the processor 124 is running or in an inactive mode.
Referring to
At block 520, a determination is made as to whether the job processor is running. If the processor 124 is not running, the process returns to block 510, and communication between the job pool and the external components can continue.
If the determination is made at block 520 that the processor 124 has started, the process proceeds to block 530, and the processor 124 may begin processing a set of jobs from the job pool 142, similar to the communication indicated by the arrow 430 in
Referring now to
If the processor 124 determines, at block 620, that there are a set of jobs awaiting processing, the processor 124 pulls a job from the job pool 142 for processing (block 630). In this regard, the server process may use the HTTPS REST GET/rest/v1/ip/job?id=n command to obtain the contents of the pulled job. Further, the processor 124 may use the HTTPS REST PATCH/rest/v1/ip/job?id=n command to update the status of the pulled job in the job pool 142. For example, the status of the job may be changed to “RUNNING”.
The processor 124 may then perform the necessary operations to complete processing of the pulled job (block 640). In this regard, the processor 124 may use software installed on the device 120 to execute instructions necessary to process the job. Further, the processor 124 may use the HTTPS REST PATCH/rest/v1/ip/job?id=n command to update the status of the pulled job in the job pool 142 to, for example, “DONE”. Upon completion of processing of the pulled job, the process 600 may return to blocks 610 and 620 and determine whether an additional set of jobs in the job pool 142 are awaiting processing.
The example instructions includes providing secure communication between the job pool and external components instructions 721. The instructions 721 may cause the processor 710 to enable communication between the job pool 142 in the private storage 140, as described above, with various external components, such as remote clients 230. As described above, this communication may occur whether or not the job processor (e.g., the processor 124) is running or in an inactive mode.
The example determining processor running instructions 722 may cause the processor 710 to determine if the job processor is running. Further, example providing secure communication between job pool and processor instructions 723 may cause the processor 710 to provide secure communication between the job pool and the job processor. For example, as noted above, the processor 124 may begin processing a set of jobs from the job pool 142.
The set of jobs queued and processed through the example job pool 142 described above may include any of a variety of jobs which cannot be processed by the embedded management controller 122. For example, the job pool 142 may include a job from the remote client 230 which utilize functionality provided on the device 120, including executing software available on the server or fetch information provided on the server. Further, the job pool 142 may be used to perform certain specialized functions for a set of jobs received from the administration device 210. For example, this set of jobs may include operating system deployment or upgrade or configuration of hardware that is not visible to the embedded management controller 122. For example, the job pool 142 may receive a set of jobs from the administration device 210 to install or configure a printer that is in communication with the device 120. In this regard, the example systems and methods described above may provide secure job queuing which can receive a set of jobs even when the job processor (e.g., the processor 124) is not running (e.g., in an inactive mode).
Software implementations of various examples can be accomplished with standard programming techniques with rule-based logic and other logic to accomplish various database searching steps or processes, correlation steps or processes, comparison steps or processes and decision steps or processes.
The foregoing description of various examples has been presented for purposes of illustration and description. The foregoing description is not intended to be exhaustive or limiting to the examples disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of various examples. The examples discussed herein were chosen and described in order to explain the principles and the nature of various examples of the present disclosure and its practical application to enable one skilled in the art to utilize the present disclosure in various examples and with various modifications as are suited to the particular use contemplated. The features of the examples described herein may be combined in all possible combinations of methods, apparatus, modules, systems, and computer program products.
It is also noted herein that while the above describes examples, these descriptions should not be viewed in a limiting sense. Rather, there are several variations and modifications which may be made without departing from the scope as defined in the appended claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US15/58379 | 10/30/2015 | WO | 00 |