Abstract:
An apparatus, system, and method are disclosed for validating information in a hierarchical structure of redundant devices. A first plurality of redundant devices is examined to determine if status information residing within each of the redundant devices is consistent with each other. If the status information is inconsistent, the first plurality of redundant devices is identified as containing an error condition. If, however, the status information of the first plurality of redundant devices is consistent, all but one of the first plurality of redundant devices is excluded from further consideration. A second plurality of redundant devices, in communication with the all but one of the first plurality of redundant devices, is then examined to determine if status information residing within each of the second level of redundant devices is consistent with each other.

Description:
BACKGROUND OF THE INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     This invention relates to hierarchical data communication systems and more particularly relates to a branch-based validation method for redundant devices.  
         [0003]     2. Description of the Related Art  
         [0004]     Data communication systems, such as computer networks, often include complex arrangements of a multitude of digital data devices. For example, as illustrated by the schematic block diagram of  FIG. 1 , a traditional data communication system  10  may include digital data devices comprising a server computer (“server”)  12  connected to a user computer (“host”)  14  having digital data storage media  16  via a communication network  18  such as a local area network (“LAN”), a wide area network (“WAN”), a wireless network, or similar communication path. These exemplary digital data devices manipulate, process, transmit, and store digital information and generally include data storage registers  20  or similar memory devices for holding and displaying status information  22  pertaining to functionality and operability. A user of this traditional data communication system  10  or a system management application  24  may query the status information  22  of a digital data device to determine if it is currently powered on and operational or whether it is powered down, in standby mode, disabled, inaccessible, or otherwise not operational.  
         [0005]     The traditional data communication system  10  may also include auxiliary devices such as a power controller card  26 , a power supply  28 , a fan  30  for cooling the power supply  28 , and a battery  32  for providing auxiliary power. While the primary purpose of these auxiliary devices may not include manipulation, processing, transmitting, or storing digital information, these auxiliary devices may also include data storage registers  20  including status information  22 . As with digital data devices, a user or system management application  24  may query the status information  22  of an auxiliary device to determine if it is currently powered on and operational or whether it is powered down, in standby mode, disabled, inaccessible, or otherwise not operational. Interconnections involving auxiliary devices may include power-transmission wires  34  and data communication channels  36  which may be either wired or wireless.  
         [0006]     Complex data communication systems  100 , as illustrated by the schematic block diagram of  FIG. 2 , are traditionally arranged in a heirarchical structure with each component in communication with one or more other components. Here, a server  112  having a data storage register  120  including status information  122  may be in communication with multiple power controller cards  126  that are, in turn, in communication with multiple power supplies  128 . The power supplies  128  may be in communication with multiple batteries  132 . By including multiple system components of like kind, a complex data communication system  100  may continue to function even if one or more system components fail or become inoperable. A user or a system management application  124  may query the status information  122  of individual components via the communication networks  118 .  
         [0007]     In order to prevent a single-point failure, as may occur in the traditional data communication system  10  of  FIG. 1 , complex data communication systems  100  generally include redundant component devices. For example, in order to prevent the disablement of a first power controller card  126   a  from causing a catastrophic system failure, a second power controller card  126   b  redundantly connects the power supplies  128   a ,- 128   d  to the server  112 . Likewise, the utilization of redundant power supplies  128   a ,- 128   d  prevents the failure of either one from interrupting power flow from the batteries  132   a ,- 132   h  to the power controller cards  126   a ,  126   b.    
         [0008]     The status information  122  stored in each data storage register  120  indicates the current viable of its associated device. For example, two mutually exclusive status conditions may be obtained, indicating either a currently nominal situation or an error within in the network. Another error condition known as a “can&#39;t happen” condition may also be obtained. However, unless an error condition is passed up the hierarchical structure, it may be difficult for the system management application to evaluate exactly which device is currently not operating properly.  
         [0009]     As with all redundant devices, the status or information gathered from the devices needs to be verified and validated, particularly against its redundant partners. For example, if there are 3 peripherals in the system that are effectively redundant, their status must be compared against each other to confirm commonality and protect against conflicting status.  
         [0010]     As the amount of layers of devices increase, and as the number of redundant devices per layer increase, there is an exponential increase in the number of different devices and paths that need to be verified.  
         [0011]     A variety of diagnostic methods are known in the art involving various testing procedures to determine which component of the network is not functional. Commonly, however, the diagnostic methods require an operator to take at least part of the computer system offline in order to run the appropriate testing procedures.  
         [0012]     Thus, a need exists for a system for analyzing generated mutually exclusive conflicts in a hierarchical network of redundant devices that ensures the network remains online, operable and usable. In addition, a need exists for a method of analysis and resolution of the mutually exclusive conflicts in a computer system, again under online conditions.  
         [0013]     From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that perform a step-by-step approach to failure analysis in the online state by traversing the network of devices. Beneficially, such an apparatus, system, and method would perform this validation process in an organized, expandable, and portable fashion.  
       SUMMARY OF THE INVENTION  
       [0014]     The present invention has been developed in response to the present state of the art, and in particular, in response to the problems and needs in the art that have not yet been fully solved by currently available redundant peripheral systems. Accordingly, the present invention has been developed to provide an apparatus, system, and method for validating information in a hierarchical structure that overcome many or all of the above-discussed shortcomings in the art.  
         [0015]     The apparatus to validate information in a hierarchical structure is provided with a plurality of modules configured to functionally execute the necessary steps of validating status information. These modules in the described embodiments include a validation module comprising a comparison module and an exclusion module.  
         [0016]     The apparatus, in one embodiment, is configured to validate a first plurality of status information residing within a first plurality of redundant devices. The apparatus is further configured, in one embodiment, to identify an error condition if the first plurality of status information is inconsistent. In a further embodiment, the apparatus may be configured to disregard all but one of the first plurality of redundant devices if the first plurality of status information is consistent.  
         [0017]     A system of the present invention is also presented to validate information residing within a hierarchical structure of redundant devices. The system may be embodied as a hierarchical structure of redundant devices and a server in communication with the hierarchical structure of redundant devices. In particular, the system, in one embodiment, includes a validation module for verifying a first plurality of status information of a first plurality of redundant devices.  
         [0018]     The system may further include a comparison module for comparing the first plurality of status information, an identification module for identifying an error condition of the first plurality of devices if the first plurality of status information is inconsistent, and an exclusion module for disregarding all but one of the first plurality of devices if the first plurality of status information is consistent.  
         [0019]     A method of the present invention is also presented for validating information in a hierarchical structure of redundant devices. The method in the disclosed embodiments substantially includes the steps necessary to carry out the functions presented above with respect to the operation of the described apparatus and system. In one embodiment, the method includes comparing a first plurality of status information residing within a first plurality of redundant devices, identifying an error condition of the first plurality of redundant devices if the first plurality of status information is inconsistent, and disregarding all but one of the first plurality of redundant devices if the first plurality of status information is consistent.  
         [0020]     In a further embodiment, the method includes comparing a second plurality of status information residing within a second plurality of redundant devices in communication with the one of the first plurality of redundant devices, identifying a second error condition of the second plurality of redundant devices if the second plurality of status information is inconsistent, and disregarding all but one of the second plurality of redundant devices if the second plurality of status information is consistent.  
         [0021]     Reference throughout this specification to features, advantages, or similar language does not imply that all of the features and advantages that may be realized with the present invention should be or are in any single embodiment of the invention. Rather, language referring to the features and advantages is understood to mean that a specific feature, advantage, or characteristic described in connection with an embodiment is included in at least one embodiment of the present invention. Thus, discussion of the features and advantages, and similar language, throughout this specification may, but do not necessarily, refer to the same embodiment.  
         [0022]     Furthermore, the described features, advantages, and characteristics of the invention may be combined in any suitable manner in one or more embodiments. One skilled in the relevant art will recognize that the invention may be practiced without one or more of the specific features or advantages of a particular embodiment. In other instances, additional features and advantages may be recognized in certain embodiments that may not be present in all embodiments of the invention.  
         [0023]     These features and advantages of the present invention will become more fully apparent from the following description and appended claims, or may be learned by the practice of the invention as set forth hereinafter.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0024]     In order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:  
         [0025]      FIG. 1  is a schematic block diagram illustrating a traditional data communication system.  
         [0026]      FIG. 2  is a schematic block diagram illustrating a complex data communication system.  
         [0027]      FIG. 3  is a schematic block diagram illustrating one embodiment of an information validation system in accordance with the present invention; and  
         [0028]      FIG. 4  is a schematic flow chart diagram illustrating one embodiment of an information validation method in accordance with the present invention.  
     
    
     DETAILED DESCRIPTION OF THE INVENTION  
       [0029]     Many of the functional units described in this specification have been labeled as modules, in order to more particularly emphasize their implementation independence. For example, a module may be implemented as a hardware circuit comprising custom VLSI circuits or gate arrays, off-the-shelf semiconductors such as logic chips, transistors, or other discrete components. A module may also be implemented in programmable hardware devices such as field programmable gate arrays, programmable array logic, programmable logic devices or the like.  
         [0030]     Modules may also be implemented in software for execution by various types of processors. An identified module of executable code may, for instance, comprise one or more physical or logical blocks of computer instructions which may, for instance, be organized as an object, procedure, or function. Nevertheless, the executables of an identified module need not be physically located together, but may comprise disparate instructions stored in different locations which, when joined logically together, comprise the module and achieve the stated purpose for the module.  
         [0031]     Indeed, a module of executable code may be a single instruction, or many instructions, and may even be distributed over several different code segments, among different programs, and across several memory devices. Similarly, operational data may be identified and illustrated herein within modules, and may be embodied in any suitable form in, and organized within any suitable type of data structure. The operational data may be collected as a single data set, or may be distributed over different locations including over different storage devices, and may exist, at least partially, merely as electronic signals on a system or network.  
         [0032]     Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.  
         [0033]     The invention disclosed herein may be implemented as a method, apparatus, or signal bearing medium using standard programming or engineering techniques to produce software, firmware, hardware, or any combination thereof. A signal bearing medium may take any form capable of generating a signal, causing a signal to be generated, or causing execution of a program of machine-readable instructions on a digital processing apparatus. A signal bearing medium may be embodied by a transmission line, a compact disk, a digital-video disk, a magnetic tape, a Bernoulli drive, a magnetic disk, a punch card, a flash memory, an integrated circuit, an optical storage device, a floppy disk, an electrically-erasable programmable read-only memory (“EEPROM”), a volatile memory device, a non-volatile memory device, a field programmable gate array (“FPGA”), an application-specific integrated circuit (“ASIC”), a complex programmable logic device (“CPLD”), a programmable logic array (“PLA”), a microprocessor (“uP”), a programmable logic device (“PLD”), or other digital processing device.  
         [0034]     Furthermore, the described features, structures, or characteristics of the invention may be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of programming, software modules, user selections, network transactions, database queries, database structures, hardware modules, hardware circuits, hardware chips, etc., to provide a thorough understanding of embodiments of the invention. One skilled in the relevant art will recognize, however, that the invention may be practiced without one or more of the specific details, or with other methods, components, materials, and so forth. In other instances, well-known structures, materials, or operations are not shown or described in detail to avoid obscuring aspects of the invention.  
         [0035]      FIG. 3  depicts one embodiment of an information validation system  200  in accordance with the present invention, including a validation module  202  which, in turn, includes a comparison module  204 , an exclusion module  206 , and an identification module, as well as a server  212  and a pair of first level peripheral devices  214   a ,  214   b . Each of the first level peripheral devices  214   a ,  214   b  are redundant similar devices that report to the server  212  over first level communication networks  213   a ,  213   b . Second level peripheral devices  216   a ,  216   b  are also redundant peripheral devices that report to the first level peripheral devices  214   a ,  214   b  over second level communication networks  215   a ,  215   b . The information reported by the second level peripheral devices  216   a ,  216   b  to the first level peripheral devices  214   a ,  214   b  is included in the information reported by the first level peripheral devices  214   a ,  214   b  to the server  212 .  
         [0036]     The third level of peripheral devices  218   a ,  218   b  are yet additional redundant devices that that report to the second level peripheral devices  216   a ,  216   b  over third level communication networks  217   a ,  217   b . The information reported by the third level peripheral devices  218   a ,  218   b  to the second level peripheral devices  216   a ,  216   b  is included in the information reported by the second level peripheral devices  216   a ,  216   b  to the first level peripheral devices  214   a ,  214   b  which is, in turn, reported to the server  212 .  
         [0037]     Because the server  212  does not directly interface with the second level peripheral devices  216   a ,  216   b  and the third level peripheral devices  218   a ,  218   b , the server  212  must access status information  222  stored in data storage registers  220  through any intermediary devices, such as the first level peripheral devices  214   a ,  214   b . As each level of peripheral devices is added to the information validation system, an exponential increase in the number of required validation paths occurs.  
         [0038]     However, rather than applying a massive comparison of all elements against their redundant devices, the present embodiment of the invention breaks up the validation code into a series of simple checks using a folding algorithm. Additionally, the present invention utilizes the redundant nature of the peripheral devices to allow layers of peripheral devices to be inserted or removed without overhauling the design. The functional operation of the information validation system is best illustrated by the schematic flow chart diagram of the information validation algorithm  300  of  FIG. 4 .  
         [0039]     The schematic flow chart diagram that follows is set forth as logical flow chart diagrams. As such, the depicted order and labeled steps are indicative of one embodiment of the presented method. Other steps and methods may be conceived that are equivalent in function, logic, or effect to one or more steps, or portions thereof, of the illustrated method. Additionally, the format and symbols employed are provided to explain the logical steps of the method and are understood not to limit the scope of the method. Although various arrow types and line types may be employed in the flow chart diagrams, they are understood not to limit the scope of the corresponding method. Indeed, some arrows or other connectors may be used to indicate only the logical flow of the method. For instance, an arrow may indicate a waiting or monitoring period of unspecified duration between enumerated steps of the depicted method. Additionally, the order in which a particular method occurs may or may not strictly adhere to the order of the corresponding steps shown.  
         [0040]     First, the status information  222  of the first level peripheral devices  214   a ,  214   b  is compared  302  by the comparison module  204 . If the status information  222  of the first level peripheral devices  214   a ,  214   b  is inconsistent  304 , the inconsistency is reported or managed  306  by the comparison module  204 . If the status information  222  is not inconsistent  304 , then one of the first level peripheral devices  214   b  is excluded  308  from the validation process. In other words, if the status information of each first level peripheral device  214   a ,  214   b  is mutually compatible, extrinsic redundant first level peripheral device  214   b , including any subordinate peripheral devices, may be removed from the set of peripheral devices to be analyzed by the exclusion module  206 . If no more levels of peripheral devices exist  310 , the algorithm terminates  312 . However, if at least one additional level of peripheral devices does exist  310 , then the algorithm returns to the step of comparing status information between redundant devices  302 .  
         [0041]     In one exemplary embodiment of the invention, the status information  222  of the second level peripheral devices  216   a ,  216   b  of the remaining first level peripheral device  214   a  is compared  302  by the comparison module  204 . If the status information  222  of the second level peripheral devices  216   a ,  216   b  is consistent, one of the second level peripheral devices  216   b , including any subordinate peripheral devices, is excluded  308  from the validation process by the exclusion module  206 .  
         [0042]     Traversing down the hierarchical structure of the information validation system, the status information  222  of the third level peripheral devices  218   a ,  218   b ,  218   c  of the remaining second level peripheral device  216   a  is compared  302  by the comparison module. If the status information  222  of the third level peripheral devices  218   a ,  218   b ,  218   c  is consistent, all but one of the third level peripheral devices, including any subordinate peripheral devices, is excluded  308  from the validation process by the exclusion module  206 .  
         [0043]     If the information validation algorithm terminates  312  without detecting inconsistent status information among redundant peripheral devices, then the status information of all of the peripheral devices in the information validation system  200  is deemed to be validated. If, however, an inconsistency exists among the status information  222  of like peripheral devices residing on the same level of the information validation system  200 , the level of the non-validated peripheral devices is noted  306  by the identification module  208  before the information validation algorithm terminates  312 .  
         [0044]     The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.