A distributed recovery block integrates hardware and software fault tolerance in a single structure without having to resort to N-version programming. In N-version programming, the goal is to design and code the software module n times and vote on the n results produced by these modules. The recovery block structure represents a dynamic redundancy approach to software fault tolerance. In dynamic redundancy, a single program or module is executed and the result is subject to an acceptance test. Alternate versions are invoked only if the acceptance test fails. The selection of the routine is made during program execution. In its simplest form, as shown in
In a distributed recovery block 101 the primary and alternate routines are both replicated and are resident on two or more nodes interconnected by a network. This technique enables standby sparing fault tolerance where one node 105a (the active node) is designated primary and another node 105b (the standby node) is a backup. Under fault-free circumstances, the primary node 105a runs the primary routine 110 whereas the backup node 105b runs the alternate routine 115 concurrently.
In case of a failure, the primary node 105a attempts to inform the backup node 105b through the monitor 108 via a heartbeat thread 107. When the backup node 105b receives notification, it assumes the role of the primary node 105a. Since the backup node 105b has been processing the alternate routine 115 concurrently, a result is available immediately for output. Subsequently, recovery time for this type of failure should be much shorter than if both blocks were running on the same node. If the primary node 105a stops processing entirely, no update message will be passed to the backup. The backup detects the crash by means of a local timer in which timer expiry constitutes the time acceptance test. The failed primary node thus transitions to a backup node and through employment of a recovery block reconfiguration strategy, both nodes do not execute the same routine.
A distributed recovery block with real time process control may be referred to as an extended distributed recovery block (EDRB) 102. The EDRB 102 includes a supervisor node 103 connected to the network to verify failure indications and arbitrate inconsistencies and regular, periodic heartbeat status messages.
In the EDRB 102, nodes responsible for control of the process and of related systems are called operational nodes and are considered critical. The operational nodes perform real time control and store unrecoverable state information. A set of dual redundant operational nodes is called a node pair. Multiple redundant operational nodes are node sets.
Regular, periodic status messages are exchanged between node pairs in a node set. The messages are typically referred to as heartbeats. A node is capable of recovering from failures in its companion in standalone fashion if the malfunction has been declared as part of the heartbeat message. If a node detects the absence of a companion's heartbeat, the node requests confirmation of the failure from a secondary node called a supervisor node 103. Although the supervisor node 103 is important to EDRB 102 operation, the supervisor node 103 is typically not crucial because the node's failure only impacts the ability of the system to recover from failures requiring its confirmation or arbitration. The EDRB system can continue to operate without a supervisor node 103 if no other failures occur.
A software structure in a node pair is shown in
Within an operational node, the EDRB 102 is implemented as a set of processes communicating between node pairs and the supervisor node 103 to control fault detection and recovery. The two processes responsible for node-level fault decision making are the node manager 106 and the monitor 108. The node manager 106 determines the role of the local node (active or standby) and subsequently triggers the use of either the primary routine 110 or the alternate routine 115. If the primary routine 110 acceptance test is passed, the node manager 106 permits a control signal to be passed to device drivers 130 under its control. If the acceptance test 120 is not passed, the active node manager 106a requests the standby node manager 106b to promote to active and immediately send out a result to thereby minimize recovery time.
The monitor 108 associated with the node manager 106 is concerned primarily with generating the heartbeat and determining the state of the companion node. The heartbeat is generally a ping or other rudimentary signal indicating functionality of the respective node. When an operational node fails to issue a heartbeat, the monitor 108 requests permission from the supervisor node 103 to assume control if not already in an active role. If the supervisor node 103 concurs that a heartbeat is absent, consent is transmitted and the standby node 105b is promoted to an active node.
If an active node spuriously decides to become a standby node or a standby node makes an incorrect decision to assume control, the supervisor node 103 will detect the problem from periodic status reports. The supervisor node 103 will then send an arbitration message to the operational nodes to restore consistency.
In many computer networks, particularly in communication systems, the supervisor node 103 is critical and provides frame synchronization and connection routes between the network and users. Thus, the loss of a supervisor node 103 results in loss of the node function. Thus, there is a need for a multiple redundant architecture in which the nodes replicated and the network is replicated. In addition, there is a need for implementation of agent oriented software to facilitate the functionality of such an architecture.
It is therefore an object of the disclosed subject matter to prove a novel improvement of a computer system implementing an extended distributed recovery block fault tolerance scheme comprising a supervisory node, an active node and a standby node. The active and standby node have a primary routine for executing a software function; an alternate routine for executing the software function; and an acceptance test routine for testing the output of the primary routine and providing a control signal in response thereto. The active and standby nodes also having a device driver for receiving the control signal, a monitor for communicating state information with one or more active or standby nodes, and are operationally connected to a node manager for determining the operational configuration of the node. The primary routine is executed in response to a determination that the node is in an active state and the alternate routine is executed in response to a determination that the node is in a standby state. The supervisory node coordinates the operation of the active node and the standby node. The improvement being the primary and alternate routines of one of the active or standby node are implemented with an application task comprising a plurality of agent objects each operating as a finite state machine operating in either a primary mode executing the primary routine or in an alternate mode executing the alternate routine.
Another object of the disclosed subject matter is an improvement of a computer system, for example an SONET, system implementing an extended distributed recovery block fault tolerance scheme comprising a supervisory node, an active node, and a standby node. The improvement being the primary and alternate routines of the active and standby nodes are each implemented with a plurality of dedicated application tasks each with a plurality of agent objects operating as a finite state machine in either a primary mode executing the primary routine or in an alternate mode executing the alternate routine. The determination of the mode of operation of the agents in a one of the plural dedicated application tasks is determined independently of the mode of operation of the agents in the other of the plural dedicated application tasks.
Still another object of the disclosed subject matter is an improvement of a computer system implementing an extended distributed recovery block fault tolerance scheme having a supervisory node, an active node, and a standby node. The improvement being a primary and alternate routines of the active and standby nodes are each implemented with a plurality of dedicated application tasks each with a plurality of agent objects operating as a finite state machine operating in either a primary mode executing the primary routine or in an alternate mode executing the alternate routine. Each of the agents is implemented with an attachment list comprising data common to the attachment list of at least one other agent.
Yet another object of the disclosed subject matter is an improvement of a single bus software architecture for supporting hardware hot standby redundancy with a supervisor processing node. The improvement of adding a second supervisor processor node, alternatively in an active state, connected to the bus to provide for a redundant supervisory node set.
Another object of the disclosed subject matter is an improvement of a communication system with an active node and a standby node that form a node pair or node set, each node with a node agent. The improvement of using a reliable datalink between the heartbeat monitors of the node pair or set.
Another object of the disclosed subject matter is an improvement of a communication system with an active node and a standby node that form a node pair or node set, each node with a node agent. The improvement involving supporting automatic protection switching between multiple node sets or pairs using common agent architecture.
The implementation of EDRB of the disclosed subject matter employs a hybrid solution, as it blends agent objects (agents) with the structure and control of the EDRB. Application tasks are implemented by agents that are instances of C++ programming. The agents are implemented as finite state machines (circuit state machines) that recognized two distinct modes of operation. One mode executes a primary routine block, and the other executes an alternate routine block. An application task performs the acceptance test block and outputs the results for use by the node manager in that processor node. The present disclosed subject matter is particularly applicable to SONET networks.
As illustrated in
The circuit state machine 200 begins in the NOT PRESENT state 201 and stays in this state until a detected event is received. Once detected, the RESTORE state 202 is entered whereby the circuit is reset and circuit initialization is performed. This transition can include successful diagnostic test execution as part of the initialization sequence. If a problem arises during the transition, the state machine may be transitioned to the OUT OF SERVICE state 205 to await further instructions. The OUT OF SERVICE state 205 is a holding state for situations where fatal or unrecoverable errors have occurred. It is also a deliberate state to enter when conducting diagnostic test or when attempting to restore normal operation.
The circuit state machine 200 will stay in the RESTORE state 202 until a ready event is received. Further time may be provided to allow adequate time for concurrent activity that may be required to initialize a circuit. Upon expiration, the state machine automatically transitions to the OUT OF SERVICE state 205.
Upon receipt of a ready event, the circuit state machine 200 transitions to the STAND-BY state 203. In the STAND-BY state 203, the circuit is identified as operational, but not in service for normal use. The circuit state machine 200 stays in the STAND BY state 203 until an enable event is received, whereby it transitions to the ACTIVE state 204. In the ACTIVE state 204, the circuit is operational, i.e. routing traffic, monitoring defects, counting errors, and so on.
Software implements the circuit state machine state event matrix, event procedures and generic methods to provide a virtual behavior mechanism. A common agent is a hybrid software agent comprising both the characteristics of an EDRB model and a virtual circuit state machine, where the attachment objects are identical regardless of where instances of the agent are located or the task the agent is required to perform, and therefore share common behaviors. The common agent uses this generic behavior for software circuits, where blocks of executable code 250 perform as though they are hot-swappable components. In each of the state transitions depicted in
Two additional execution chains are provided for handling the receipt of messages through the corresponding task service queue. One execution chain is provided for messages received when in the ACTIVE state, the other execution chain is provided for messages received while in the STAND-BY state. These chains, as discussed earlier, are the primary and alternate routines, respectively.
When a message is received in the ACTIVE state, it is passed along to each attachment in the primary execution chain 253 until the end is reached or a routine returns unsuccessfully. Likewise, when a message is received while in the STAND-BY state, it is passed along to each attachment in the alternate execution chain 252. If a message is received while the state machine is in any other state, it is ignored. This supports the desired behavior where the agent object is operational when it is either active or stand-by.
The common agent object 300 relationship with neighboring external entities is illustrated in
As state machine event transitions occur and as service queue task messages are received, the common agent object 300 acts on the executable blocks of code 302 attached at startup or at any point after startup. The circuit state machine behavior can be directed by a redundancy node manager 303 during conditions when system reconfiguration is required and resources in stand by become active for those resources that may have failed. The redundancy node manager 303 can issue commands to groups of agent objects instead of requiring software for each explicit function and procedure to thereby invoke the reconfiguration process.
Common agent objects contain list of common attachment objects which, as discussed above, are blocks of executable code. Agent objects may contain similar or application-specific attachments added in such a fashion as to perform their intended roles and inherently support the redundant system architecture. The attachment lists may also be dynamically modifiable.
A first set of agents within an application task operate in the primary mode while the remainder of agents operate in the alternate mode. The agents are configured such that a number of agents in a second set backup a number of agents in the first set of agents. The number of agents in each set may or may not be equal; furthermore, each agent of the second set of agents may back up each of the agents in the first set. Such a system allows for M to N protection of the computer system at the application task level.
During system initialization, agents register data ownership and subscribe to data required for accomplishing assigned roles and processes. The data is common to all the agents. Blocks of the same executable code shared by the agents are contained in common attachment lists. The attachment lists are dynamically modifiable as a function of the status of the computer system.
One or more agent objects can implement each of the application tasks. The application tasks perform the acceptance test block 420 and output the results for use by the node manager in that processor node. The acceptance test block 420 is a test dedicated and contained within the application task. The node manager, upon acceptance, sends the data to the respective one or more device drivers 430.
Each node in the node pair or set is connected to a companion node, as discussed above, via a heartbeat thread to a monitor and the node agent of each companion node. The heartbeat thread carries a heartbeat signal. The heartbeat signal contains the node roles, version and frame number incremented at the beginning of each new heartbeat frame. Preferably the heartbeat thread is a reliable datalink between the monitors of the node pair. For example, applying high-level data link control (HDLC) procedures would be a desirable implementation for the heartbeat thread, where the datalink message retransmission queues can be tuned to the needs of the system in a deterministic fashion. Such an implementation is illustrated in the heartbeat message cell of
As illustrated in
The address field 501 consists of a command/response bit (C/R) 502, a service access point identifier (SAPI) subfield 503 and a terminal endpoint identifier (TEI) subfield 504. The C/R bit identifies a frame as either a command or a response. The backup node sends commands with the C/R bit set to 0 and responses with the C/R bit set to 1. The primary node does the opposite, commands are sent with the C/R bit set to 1 and responses are sent with the C/R bit set to 0. In conformance with HDLC high-level data link control rules, both node pair entities use the same datalink connection identifier composed of the SAPI-TEI pair. The SAPI is used to correspond the processor node slot with the computer system connection. The TEI is used to map the connection to a specific network interface.
An unnumbered (U) format 510 is used to provide data link control function which is primarily utilized in establishing and relinquishing link control. A supervisory (S) format 520 is used to perform data link supervisory control function such as acknowledging heartbeat information format (I-frames), requesting transmissions of I-frames, and requesting temporary suspension of the transmission of I-frames. Each supervisory frame has an N(R) sequence number which may or may not acknowledge additional I-frames. The I-frames 530 are used to perform normal information transfer between node pairs or node sets regarding automatic protection switching and operational status. Each I-frame has an N(S) sequence number, an N(R) sequence number which may or may not acknowledge additional I-frames, and a P bit that may be set to 0 or 1. K1 and K2 are signaling byte information maintained between node pairs and sets of node pairs. A poll/final (P/F) bit is incorporated in all frames. The P/F bit serves a function in both command frames and response frames. In command frames the P/F bit may be referred to as the P bit (poll), in response frames it is referred to as the F bit (final). The P bit is set to 1 by a node pair to solicit a response frame from the peer node. The F bit is set to 1 by a node pair to a response frame transmitted as a result of a soliciting command. The function of N(S), N(R), P and P/F are independent.
The receive sequence number N(R) is the expected send sequence number of the next received I-frame. At the time that an I or S frame is designated for transmission, the value of N(R) is equal to the number of I frames acknowledged by the node entity. N(R) indicates that the node entity transmitting the N(R) has correctly received all the I-frames numbered up to and including N(R)−1. The send sequence number N(S) is the send sequence number of transmitted I-frames. It is only used in I-frames. At the time that an in-sequence I-frame is designated for transmission, the value of N(S) is set equal to the current sequence number for the I-frame to be transmitted.
The supervisory command sequence comprises receive ready, reject and receive not ready commands. The unnumbered control function includes expand mode, disconnected mode, disconnect unnumbered acknowledgment and frame reject.
The expand mode command is used to place the addressed backup or primary node into multiple frame acknowledged operation. A node pair confirms acceptance of any expand mode command by the transmission at the first opportunity of an unnumbered acknowledgement response. Upon acceptance of this command, the node pair entity sequence and transmission counter are set to 0. The transmission of an expand mode command indicates the clearance of all exception conditions. Exception conditions are delays, retransmit counters, erred messages of other conditions outside of normal messages. Previously transmitted I-frames that are unacknowledged when the expand mode command is processed remain unacknowledged and are discarded.
The disconnected command terminates the multiple frame operation, such as when the network operator decides to take a node pair out of service or change the backup node. The node pair entity receiving the disconnect command confirms the acceptance by the transmission of an unnumbered acknowledgement response. The node pair entity sending the disconnect command terminates the multiple frame operation upon receipt of the unnumbered acknowledgment response or the disconnected mode response.
The receive ready command indicates when a node set is ready to receive an I-frame, acknowledge previously received I-frames or clear a busy condition indicated by an earlier transmission of a receive not ready command by the same node set. The reject command is used by a node pair entity to request retransmission of I-frames starting with the frame numbered N(R). The value of N(R) in the reject frame acknowledges I-frames numbered up to and including N(R)−1. Only one rejection exception condition for a given direction of information transfer is established at a time. The rejection condition is cleared upon the receipt of an I frame with an N(S) equal to the N(R) of the reject frame.
The receive not ready command indicates a busy condition, that is, a temporary inability to accept additional incoming I-frames. The value N(R) in the receive not ready command acknowledges I-frames numbered up to and including N(R)−1. The unnumbered response acknowledges the receipt and acceptance of mode setting commands expand and disconnected. The disconnected mode response reports to its peer that the heartbeat link is in a state such that multiple frame operation cannot be performed. The frame reject response reports an error condition not recoverable by retransmission of the identical frame.
A configuration of nodes employing a reliable data link is shown in
The node agent though the monitor accepts and filters line interface statuses and SONET external automatic protection switching commands though the reliable data link and provide a more sophisticated communication between node agents in a node pair or set. As a result, if a card failure occurs, i.e. the node goes down, the reliable data link will break, and thus as discussed earlier, the standby node will attempt to go on line unless preempted by the supervisor node or the recovery agent. However, in case of a line failure, the data link stays up and the active processor node signals standby processor node of failure and the standby node becomes active unless preempted.
A plurality of agents may reside upon the supervisor nodes including, as previously discussed, a recovery agent which is an instance of C++ programming. The recovery agent directs or overrides the transition of nodes between active and standby. The recovery agent fulfills one or more of the supervisory roles.
The processor and agent architecture described herein is particularly suited for use in a point-to-multipoint wireless communication system used to communicate from a central location to each of a plurality of remotes sites where reliable connections are required such as a SONET system. Such a system that provides high speed bridging of a physical gap between a plurality of processor based systems is ultimately dependent on the fault tolerance and recovery capability of the processors which comprise its structure.
A feature of automatic protection switching between multiple node pairs using common agent architecture as eluded to previously is M:N redundancy which has many benefits over the prior art.
As shown in
This, of course, assumes that the prior art solution can be shown to arbitrate as to which of the 3 standby nodes (C, D, or E) will take over if A, B, or both A and B fail. However, the prior art solution does not reveal such capability directly or indirectly. As a result, the prior art solution results in an inefficient use of resource in an M:N situation such that as each subsequent node is added or removed (active or standby) and a number of links equal to the number of opposing nodes (standby or active, respectively) must be added or removed.
Applying the present subject matter to the above example, the common agent solution requires only 2 heartbeat links 881, 882 between each active node and a corresponding standby node from the available pool of standby nodes in the node set: A-C 881; B-D 882; E (standby, available to replace C or D at any time) as shown in
Multiple instances of shared behavior, which is characteristic of common agents, permit any number of standby nodes to participate and establish a new heartbeat link if the current standby for any of the active nodes becomes inactive or inoperable. The supervisory node acts as arbitrator as to which of the available standby nodes replaces the previous standby node in a real-time environment where agents can respond more quickly. No such mechanism is directly or indirectly expressed in the prior art.
Using the above example further, an additional standby node (F) 806 is installed in the running system and added to the node set 800 as shown in
If another active node (G) 807 is installed and added to this node set as shown in
Assuming, for illustration purposes, standby node D fails: in the common agent solution as before, the change is recognized by all agents, and F 806, being the only unassigned standby node in the node set, responds by establishing a new heartbeat link 884 with B 802. In the prior art solution, heartbeat links are lost with A, B, and G.
By broadly continuing in this fashion for the prior art solution, C is still a subordinate to the nodes it protected (A, B, and G). Even if another standby node was added, the prior art solution does not provide a mechanism or method to allow C to automatically pair with anything other than what is was paired with originally.
If standby node D is restored: in the common agent solution using the same identical behavior as noted previously, the failure is recognized by all agents, and D, seeing all active nodes are protected does nothing. The arbitration node elects D to establish another heartbeat link with C and instructs F to break its heartbeat link with C, thus automatically taking advantage of the additional standby asset. No such facility exists in the prior art, other than manually re-provisioning the system which may or may not induce traffic loss.
The scenario described previously is a simple description of the differences between both solutions. A more involved scenario can be described where the arbitration node is involved during race conditions between multiple node failures and node activations. In absence of such an arbitration node in the McKnight specification, the common agent approach ensures full continuity in 1:1, 1:N, and M:N redundancy configurations. This continuity is extended throughout a system where, typically, multiple node sets would be used.
The prior art solution could be used in an M:N configuration as the scenario illustrates. But as the scenario also illustrates, those skilled in the art would likely exclude such a solution due to the unnecessary communication overhead, additional processing requirements, and provisioning complexity to maintain the equivalent functionality found in the common agent approach.
Although the disclosed subject matter has been described in a preferred form with a certain degree of particularity, it is understood that the present disclosure of the preferred form has been made only by way of example, and that numerous changes in the details of construction and combination and arrangement of parts may be made without departing from the spirit and scope of the disclosed subject matter as hereinafter claimed. It is intended that the patent shall cover by suitable expression in the appended claims, those features of patentable novelty that exists in the disclosed subject matter disclosed.
This application is a Continuation in part and claims priority benefit of co-pending U.S. non provisional application Ser. No. 10/183,489 titled SYSTEM AND METHOD FOR SUPPORTING AUTOMATIC PROTECTION SWITCHING BETWEEN MULTIPLE NODE PAIRS USING COMMON AGENT ARCHITECTURE filed Jun. 28, 2002. The present application is also related to co-pending and commonly assigned PCT International Application No. PCT/US02/03323 entitled “Dynamic Bandwidth Allocation”, PCT/US02/03322 entitled “Demodulator Bursty Controller Profile”, PCT/US02/03193 entitled “Demodulator State Controller”, PCT/US02/03189 entitled “Frame to Frame Timing Synchronization”, the disclosures of which are hereby incorporated herein by reference. The aforementioned applications are related to commonly assigned U.S. Pat. No. 6,016,313 entitled “System and Method for Broadband Millimeter Wave Data Communication” issued Jan. 18, 2000 and currently undergoing two re-examinations under application Ser. No. 90/005,726 and application Ser. No. 90/005,974, U.S. Pat. No. 6,404,755 entitled “Multi-Level Information Mapping System and Method” issued Jun. 11, 2002, U.S. patent application Ser. No. 09/604,437, entitled “Maximizing Efficiency in a Multi-Carrier Time Division Duplex System Employing Dynamic Asymmetry”, which are a continuation-in-part of the U.S. Pat. No. 6,016,313 patent which are hereby incorporated herein by reference. The present application is also related to commonly assigned U.S. patent application Ser. No. 10/183,383, entitled “Look-Up Table for QRT”, U.S. patent application Ser. No. 10/183,488, entitled “Hybrid Agent-Oriented Object Model to Provide Software Fault Tolerance Between Distributed Processor Nodes, U.S. patent application Ser. No. 10/183,486, entitled “Airlink TDD Frame Format”, U.S. patent application Ser. No. 10/183,492, entitled “Data-Driven Interface Control Circuit and Network Performance Monitoring System and Method”, U.S. patent application Ser. No. 10/183,490, entitled “Virtual Sector Provisioning and Network Configuration System and Method”, U.S. patent application Ser. No. 10/183,489, entitled “System and Method for Supporting Automatic Protection Switching Between Multiple Node Pairs Using Common Agent Architecture”, U.S. patent application Ser. No. 10/183,384, entitled “System and Method for Transmitting Highly Correlated Preambles in QAM Constellations”, the disclosures of which are hereby incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 10183489 | Jun 2002 | US |
Child | 11116346 | Apr 2005 | US |