Executing an out-of-band agent in an in-band process of a host system

Technologies are described herein for executing an out-of-band agent in an in-band process of a host system. An out-of-band connection is created between a service processor located on a host computer and a remote management device. The service processor receives an agent program from the remote management device over the out-of-band connection and stores the agent program in a storage area. The agent program is made available to an in-band process of the host system operating on the host computer through a standard storage device interface. The agent program is then executed out-of-band by the service processor or in-band by the process of the host system.

BACKGROUND

A service processor, or baseboard management controller, is a component of a host computing system that provides configuration, management, and monitoring services to the host system. The service processor generally operates independently from the host system, often relying on its own firmware, memory, and connections to hardware components. The service processor may even use a separate power supply to enhance reliability. The service processor may be used to configure hardware components, to maintain BIOS settings or system parameters, or to monitor the health of the host system, such as temperatures, fan speeds, voltages, and alarms. Because the service processor is capable of operating independently of the host system, or “out-of-band,” the service processor can operate in a pre-boot environment of the host system or in the event of a host system failure.

A service processor may provide a communication channel that allows a remote management client to access the services of the service processor for maintenance of the host system. The service processor may include the capability to redirect the console of the host system to the remote management client or to allow the remote management client to view POST and boot messages, cycle the power of the host system, perform software resets, or perform other maintenance and configuration tasks. However, some tasks, such as installing an operating system (“OS”) component on the host system, modifying OS configuration parameters, or monitoring high-level OS faults, may not be able to be performed out-of-band by the service processor, but may require “in-band” execution in the host system.

SUMMARY

Technologies are described herein for executing an out-of-band agent in an in-band process of a host system. In particular, through the use of the technologies provided herein, an agent program may be provided to a host computer through an out-of-band connection established with a service processor located in the host computer. The agent program may then be executed out-of-band by the service processor or in-band by processes of the host system operating on the host computer to perform various configuration, maintenance, and monitoring tasks.

According to one aspect presented herein, an out-of-band connection is created between a service processor located on a host computer and a remote management device. The service processor then receives an agent program from the remote management device. In one aspect the remote management device uploads the agent program to the service processor over the out-of-band connection. The service processor then stores the agent program in a storage area.

In another aspect, the service processor maps a virtual storage device to a storage area containing the agent program on the remote management device over the out-of-band connection. In a further aspect, the agent program is made available to an in-band process of a host system operating on the host computer through a standard storage device interface. The agent program is then executed out-of-band by the service processor or in-band by the process of the host system.

DETAILED DESCRIPTION

The following detailed description is directed to technologies for providing agents through an out-of-band connection to a host system for execution in an in-band process of the host system. In the following detailed description, references are made to the accompanying drawings that form a part hereof, and which are shown by way of exemplary embodiments and implementations. Note that although the subject matter presented herein has been described in conjunction with one or more particular embodiments and implementations, it is to be understood that the embodiments are not necessarily limited to the specific structure, configuration, or functionality described herein. Rather, the specific structure, configuration, and functionality described herein are disclosed as examples. Various modifications and changes may be made to the subject matter described herein without following the exemplary embodiments and applications illustrated and described, and without departing from the true spirit and scope of the embodiments.

FIG. 1is a block diagram showing an illustrative operating environment100according to embodiments described herein. The environment100includes a host computer102. The host computer102may be a server computer or any other computing device known in the art. The host computer102includes a service processor104. According to embodiments, the service processor104is a hardware component of the host computer102that runs independently from the host system106and provides functionality for emergency management, remote connectivity, configuration, and management of the host computer102. An example service processor104is described in co-pending U.S. patent application Ser. No. 12/026,940 entitled “Configuring a Host Computer Using a Service Processor,” which is expressly incorporated herein by reference in its entirety. The service processor104may be integrated into the host computer102as an embedded processor chip or as an add-in card.

The service processor104includes a service processor firmware108. The service processor firmware108provides the functionality to the service processor104for configuring, managing, and monitoring of the host computer102. The service processor firmware108may provide a comprehensive operating environment for the service processor104, such as that provided by the AMI MEGARAC®-SP service processor software stack from American Megatrends, Inc. of Norcross, Ga. The service processor104may interface with the primary hardware and software systems (herein referred to as the host system106) of the host computer102through a set of common interfaces110that allow monitoring and management of the host computer, such as the intelligent platform management interface (“IPMI”).

As further illustrated inFIG. 1, the service processor104may contain a storage area112. The storage area112may be implemented in an internal memory of the service processor, such as a fixed, local NAND flash memory. Alternatively, the storage area112may be implemented by any other suitable type of storage device, such as a fixed or removable flash memory device; a fixed or removable disk drive or other magnetic storage device; a fixed or removable optical storage device; a random access memory (“RAM”); an electrically erasable programmable read-only memory (“EEPROM”); and the like.

According to embodiments described herein, the storage area112is made accessible to the host system106through a standard storage device interface114. This may be accomplished by the service processor104emulating an associated local storage device over a connection between the service processor and a hardware interface of the host computer102. For example, the service processor104may be connected to the Universal Serial Bus (“USB”) interface of the host computer102, as will be described below in regard toFIG. 5. The service processor104may expose the storage areas112to the host system106through the USB interface such that the host system “sees” the storage area as a standard USB flash memory device. It will be appreciated that the storage device interface114emulated by the service processor104may be any suitable type of interface that allows the host system106to see a compatible, local storage device, including, but not limited to, an RS-232 serial interface, an integrated drive electronics (“IDE”) interface, and AT Attachment (“ATA”) interface, or a serial ATA (“SATA”) interface.

According to one embodiment, the storage area112may contain an agent program116. The agent program116is a software program or software image that may be executed by the service processor104or an in-band process on the host system106. The agent program116may perform any number of maintenance, configuration, and/or monitoring tasks, including, but not limited to, configuring the service processor platform; configuring a hardware device on the host computer102; configuring BIOS settings of the host system106; installing OS components, monitors, or utility programs in the OS of the host system; or configuring OS parameters.

For example, the agent program116may be a software program executable by the service processor104that updates or “flashes” the firmware or BIOS of the host system106. In another example, the agent program116may be a software image that, when presented to the OS of the host system106on the storage device emulated by the service processor104over the storage device interface114, appears as an installation program to the OS. The OS of the host system106may be configured to recognize the installation program on the emulated storage device, and execute the installation program, as in the case of “AutoRun” functionality. When the installation portion of agent program116is executed, the agent program may then install an OS component or application, such as a driver, modify configuration parameters of the OS, or monitor and correct high-level OS faults.

In a further example, the agent program116may be a software image that, when presented to the BIOS of the host system106on the storage device emulated by the service processor104over the storage device interface114, appears to be a bootable drive containing a boot loader and other initialization programs. When the host system106is booted on the host computer102, the BIOS of the host system may load the boot image from the agent program116, allowing the agent program to execute tasks during boot-up of the host system, such as flashing the BIOS of the host system or configuring a RAID drive.

It will be appreciated that many agent programs116may be imagined by one skilled in the art beyond those described herein, and that these agent programs may be executed out-of-band by the service processor104, or in-band by the BIOS or other firmware of the host system106, the OS of the host system, or any other process running on the host system. It is intended that all such agent programs116be included in this application. It will be further appreciated that the storage area112may contain any number of agent programs116beyond the single agent program shown inFIG. 1.

The service processor104may provide access to the configuration and management functions of the host computer102to a remote management client118connected to the service processor through an out-of-band connection120. The out-of-band connection120may be established over a local-area network (“LAN”), a wide-area network (“WAN”), a serial connection, or other connection means connecting the remote management client118and the service processor104. The out-of-band connection120may utilize hardware of the host computer102, such as an Ethernet controller, that is shared between the host system106and the service processor104, or the out-of-band connection may be established utilizing independent hardware of the service processor.

In one embodiment, the service processor firmware108provides facilities that allow the connected remote management client118to upload agent programs116to the storage area112of the service processor104. The remote management client118may then initiate execution of the agent program116on the service processor104, or cause the agent program to be executed by an in-band process of the host system106, as will be discussed in more detail below in regard toFIG. 3. The service processor firmware108may use any suitable protocol that allows the remote management client118to upload, configure, and initiate the agent programs116over the out-of-band connection, including, but not limited to, the hypertext transfer protocol (“HTTP”), the file transfer protocol (“FTP”), the network file system (“NFS”) protocol, or the server message block (“SMB”) protocol.

FIG. 2is a block diagram showing an additional operating environment200, according to a further embodiment. In the environment200shown inFIG. 2, the service processor104on the host computer102is connected to a remote management server202over the out-of-band connection120. The remote management server202includes the storage area112that contains the agent program116described above. According to one embodiment, the service processor firmware108creates a virtual storage device204on the service processor104mapped to the storage area112on the remote management server202. This is may be accomplished over the out-of-band connection120using a file sharing protocol, such as SMB or NFS, or by any other method known for mapping a virtual storage device204to a remote storage area112. The virtual storage device204is then exposed to the host system106as a local storage device through the storage device interface114, as described above.

As further described above, both the service processor104and the host system106may access the virtual storage device204as if it was a local storage device. The agent program116located on the storage area112of the remote management server202may then be initiated by the service processor104on the host computer102, the BIOS or firmware of the host system106, the OS of the host system, or any other in-band process of the host system, as will be discussed in greater detail in regard toFIG. 4. The present embodiment is advantageous when the service processor104does not have sufficient flash memory or other storage to store the agent program116image, such as when booting the host computer102to a remote OS.

FIG. 3is a flow diagram showing a routine300for executing an agent program in either an out-of-band process or an in-band process of a host system106, according to one exemplary embodiment. The routine300begins with operation302, where an out-of-band connection120is established between the service processor104on the host computer102and a remote management client118. The out-of-band connection120may be established in response to an attempt by the remote management client118to access the service processor104on the host computer102. For example, the remote management client118may attempt to access the service processor104platform on the host computer102using a Web browser over an HTTP-based out-of-band connection120.

Once the out-of-band connection120is established between the remote management client118and the service processor104, the routine300proceeds from operation302to operation304, where the service processor receives an agent program116from the remote management client over the out-of-band connection. The remote management client118may upload the agent program116to the service processor104over the HTTP session established between the service processor and the remote management client, for example. In another embodiment, the agent program116may be located locally on the service processor104, such as a frequently used agent program that installs an OS fault monitor in the OS of the host system106. The OS fault monitor may be able to detect high-level OS faults not detectable by the service processor104, such as RAID system errors or disk partition errors. The frequently used agent program116may be stored as part of the service processor firmware108on the service processor104. In this embodiment, the remote management client118may specify the agent program116which is to be utilized without having to upload the software image for the agent program over the out-of-band connection.

From operation304, the routine300proceeds to operation306, where the service processor104stores the agent program116received from the remote management client118in the storage area112of the service processor. In the case of a frequently used agent program116stored as part of the service processor firmware108, the service processor104may copy the frequently used agent program from the service processor firmware into the storage area112. As described above in regard toFIG. 1, by placing the agent program116in the storage area112, the agent program is made accessible to both the service processor104and in-band processes of the host system106through the storage device interface114.

Next, the routine300proceeds from operation306to operation308, where the service processor104determines if the agent program116is intended for out-of-band execution on the service processor or in-band execution in a process of the host system106. This may be specified by the remote management client118upon uploading the agent program116to the service processor104. If the agent program116is intended for out-of-band execution, the routine300proceeds to operation310, where the agent program116is executed on the service processor104. This may be the case when the agent program116executes a function for configuring a hardware component to which the service processor104is connected, such as configuring power features, alarms, or system monitors. From operation310, the routine then ends.

If, at operation308, the service processor104determines that the agent program116is intended for in-band execution, then the routine300proceeds to operation312, where the service processor104configures the agent program and the storage device interface114appropriately based on the manner of in-band execution of the agent program. For example, if the agent program116is a software image containing an installation program for the OS of the host system106, as described above in regard toFIG. 1, then the service processor104may initiate the correct signaling on the storage device interface114to indicate to the OS that the emulated storage device has been initialized, such as the signaling sent over the USB interface when a removable USB flash drive is inserted into a USB port on the host computer102. This may, in turn, cause the OS to initiate the installation program component of the agent program116using the AutoRun feature of the OS, for example.

In a further example, if the agent program116is a software image containing a boot loader and other initialization programs for the execution of an operating environment on the host system106, as described above in regard toFIG. 1, then the service processor104may perform a software reset of the host computer to cause the host system to reboot. The BIOS of the host system may then load the boot image from the agent program116, allowing the agent program to execute the desired tasks during boot-up of the host system. It will be appreciated that other methods for the service processor104to initiate execution of the agent program116in an in-band process of the host system106may be imagined, based upon the function of the agent program uploaded to the storage area112, and it is intended that this application include all such methods. From operation312, the routine300ends.

FIG. 4is a flow diagram showing another routine400for executing an agent program in either an out-of-band process or an in-band process of a host system106, according to another embodiment. The routine400begins with operation402, where an out-of-band connection120is established between the service processor104on the host computer102and a remote management server202, as described above in regard toFIG. 2. The out-of-band connection120may be established in response to a request by a remote management client118to access the agent program116stored in the storage area112of the remote management server202, or the out-of-band connection may be initiated by the service processor104in response to a timed management event or other signal.

Once the out-of-band connection120is established between the remote management server202and the service processor104, the routine400proceeds from operation402to operation404, where the service processor104maps a local virtual storage device204to the storage area112of the remote management server containing the agent program116, as further described above in regard toFIG. 2. The mapping occurs over the out-of-band connection120established between the remote management server202and the service processor104.

From operation404, the routine400proceeds to operation406, where the service processor104exposes the virtual storage device204to the host system106by emulating a local storage device through the standard storage device interface114, as described above in regard toFIG. 1. In this way, the agent program116contained in the storage area112of the remote management server202is made available to both the service processor104and the host system106across the storage device interface114. It will be appreciated that, because the service processor104operates independently of the host system106on the host computer102, and maintains the out-of-band connection120over independent network connections, the local storage device emulated by the service processor104over the storage device interface114remains available to the host system, even if the host system on the host computer is restarted. It this way, the storage area112of the remote management server202containing the agent program116appears as a local storage device on the host computer immediately upon initialization, or boot-up, of the host system106.

From operation406, the routine400proceeds to operation408, where the service processor104determines if the agent program116is intended for out-of-band execution on the service processor or in-band execution in a process of the host system106, as described above in regard to operation308. If the agent program116is intended for out-of-band execution, the routine400proceeds to operation410, where the agent program116is executed on the service processor104. From operation410, the routine ends. If, however, the service processor104determines at operation408that the agent program116is intended for in-band execution, then the routine400proceeds to operation412, where the service processor104configures the agent program and the storage device interface114appropriately based on the manner of in-band execution of the agent program, as described above in regard to operation312. From operation412, the routine400ends.

FIG. 5and the following discussion are intended to provide a brief, general description of a suitable computing environment in which the embodiments described herein may be implemented. While the technical details are presented herein in the general context of program modules that execute in conjunction with the execution of an operating system, those skilled in the art will recognize that the embodiments may also be implemented in combination with other program modules.

FIG. 5shows a computer architecture for an illustrative computer500that may be utilized to embody the hardware and software components presented herein for the host computer102described above in regard toFIG. 1. Some or all of the architecture shown inFIG. 5may also be utilized to implement the remote management client118or the remote management server202. As discussed above, other types of computers and computing devices may also be utilized to implement the embodiments presented herein.

The computer500includes a baseboard, or “motherboard”, which is a printed circuit board to which a multitude of components or devices may be connected by way of a system bus or other electrical communication path. In one illustrative embodiment, a CPU522operates in conjunction with a chipset552. The CPU522is a standard central processor that performs arithmetic and logical operations necessary for the operation of the computer. The computer500may include a multitude of CPUs522.

The chipset552includes a north bridge524and a south bridge526. The north bridge524provides an interface between the CPU522and the remainder of the computer500. The north bridge524also provides an interface to a random access memory (“RAM”) used as the main memory554in the computer500and, possibly, to an on-board graphics adapter530. The north bridge524may also include functionality for providing networking functionality through a gigabit Ethernet adapter528. The gigabit Ethernet adapter528is capable of connecting the computer500to another computer via a network. Connections that may be made by the network adapter528may include LAN or WAN connections. LAN and WAN networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. The north bridge524is connected to the south bridge526.

The south bridge526is responsible for controlling many of the input/output functions of the computer500. In particular, the south bridge526may provide one or more universal serial bus (“USB”) ports532, a sound adapter546, an Ethernet controller560, and one or more general-purpose input/output (“GPIO”) pins534. The south bridge526may also provide a bus for interfacing peripheral card devices such as a graphics adapter562. In one embodiment, the bus comprises a peripheral component interconnect (“PCI”) bus. The south bridge526may also provide a system management bus564for use in managing the various components of the computer500. Additional details regarding the operation of the system management bus564and its connected components are provided below.

The south bridge526is also operative to provide one or more interfaces for connecting mass storage devices to the computer500. For instance, according to an embodiment, the south bridge526includes a serial advanced technology attachment (“SATA”) adapter for providing one or more SATA ports536and an ATA100adapter for providing one or more ATA100ports544. The SATA ports536and the ATA100ports544may be, in turn, connected to one or more mass storage devices such as SATA disk drive538storing an operating system540and application programs. As known to those skilled in the art, an operating system540comprises a set of programs that control operations of a computer and allocation of resources. An application program is software that runs on top of the operating system software, or other runtime environment, and uses computer resources to perform application specific tasks desired by the user. According to one embodiment of the invention, the operating system540comprises the LINUX operating system. According to another embodiment of the invention the operating system540comprises the WINDOWS SERVER operating system from MICROSOFT CORPORATION. According to another embodiment, the operating system540comprises the UNIX or SOLARIS operating system. It should be appreciated that other operating systems may also be utilized.

The mass storage devices connected to the south bridge526, and their associated computer-readable media, provide non-volatile storage for the computer500. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed by the computer500. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EPROM, EEPROM, flash memory or other solid state memory technology, CD-ROM, DVD, HD-DVD, BLU-RAY, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information.

A low pin count (“LPC”) interface may also be provided by the south bridge526for connecting a “Super I/O” device570. The Super I/O device570is responsible for providing a number of input/output ports, including a keyboard port, a mouse port, a serial interface572, a parallel port, and other types of input/output ports. The LPC interface may also connect a computer storage media such as a ROM or a flash memory such as a NVRAM548for storing the firmware550that includes program code containing the basic routines that help to start up the computer500and to transfer information between elements within the computer500.

As described briefly above, the south bridge526may include a system management bus564. The system management bus564may be connected to the service processor104. As described above, the service processor104includes functionality for monitoring the operation and configuring aspects of the host computer102. In one embodiment, the service processor104is an independent component with its own hardware and firmware, which runs independently from the host system106of the computer500. According to the embodiments described herein, the service processor104may be communicatively connected to one or more components of the computer500by way of the system management bus564. For example, the service processor104may be connected to the USB ports532and/or the Ethernet controller560provided by the computer500. Further, the service processor104may be coupled to several megabytes of fixed local NAND flash memory, used as a general storage area for the service processor, such as the storage area112described above in regard toFIG. 1.

It should be appreciated that the computer500may comprise other types of computing devices, including hand-held computers, embedded computer systems, personal digital assistants, and other types of computing devices known to those skilled in the art. It is also contemplated that the computer500may not include all of the components shown inFIG. 5, may include other components that are not explicitly shown inFIG. 5, or may utilize an architecture completely different than that shown inFIG. 5.

Based on the foregoing, it should be appreciated that technologies for executing an out-of-band agent in an in-band process of a host system are presented herein. Although the subject matter presented herein has been described in language specific to computer structural features, methodological acts, and computer readable media, it is to be understood that the invention defined in the appended claims is not necessarily limited to the specific features, acts, or media described herein. Rather, the specific features, acts and mediums are disclosed as example forms of implementing the claims.