Abstract:
Information is transmitted to a network by a system which receives data from a first processor into a first FIFO and from a second processor into a second FIFO. Data exiting the first FIFO is discarded. As data is received into second FIFO, data exiting the FIFO is transferred to the network. When and end-of-message indication is detected in the received data, the contents of the FIFOs are compared. If a miscompare occurs, transferred data from the second FIFO to the network is caused to be in error. Accordingly, a message sent to the network from the second FIFO will be rejected either by the network or by a receiving node.

Description:
THIS APPLICATION CLAIMS BENEFIT OF PROVISIONAL APPLICATION Ser. No. 60/063,205 filed Oct. 21, 1997. 
    
    
     TECHNICAL FIELD 
     The present invention relates, in general, to fault-tolerant computing. More particularly, the present invention relates to methods and systems for fault-tolerant transmission of information. 
     BACKGROUND OF THE INVENTION 
     The reliability of computer based applications continues to be an important consideration. Moreover, in fault-tolerant computing applications, insuring that a fault-tolerant pair of CPUs agree on a result, and transmit the agreed-to result to a network (e.g., an Ethernet bus) is a critical function. Several prior techniques have been used to perform this function, but all have certain deficiencies. 
     As an example, turning to FIG. 1, two CPUs, namely CPU A  11  and CPU B  13  redundantly process information. Communications subsystems A  15  and B  17  are attached to CPUs A  11  and B  13 , respectively. In one example, communications subsystems  15  and  17  may implement NodeBus/RS-232 communications. Each communications subsystem is attached to a synchronous bit comparator  19  using data and synchronization (e.g., RTS/CTS) connections. Comparator  19  performs a bit-by-bit comparison of the data streams, keeping them in sync using the synchronization connections. If the comparison agrees, the data is transmitted, bit-by-bit, to communications network  21 . Network data is commonly received by the two communications subsystems and verified by CPU operations. 
     The technique depicted in FIG. 1, and described above, requires precise bit synchronization between the two communications subsystems. This synchronization is implemented using the synchronization signaling between the communications subsystems and synchronous bit comparator  19 . Unfortunately, this technique is not generally applicable to many communications protocols because they do not provide facilities for the synchronization signaling required by this technique. 
     Turning to FIG. 2, a system employing another data comparison technique is depicted. In this example system, a message from CPU A  11  is formatted by its respective communications subsystem  15  and transmitted to communications subsystem  17  of CPU B  13 . Communications subsystem B  17  compares the message received from communications subsystem A to the message that it intends to transmit. If the comparison agrees, the message is transmitted to network  21 . One drawback to this technique is the requirement that each message be transmitted twice, with associated delays. That is, the message must first be transmitted from the first communications subsystem to the second communications subsystem, compared, and then transmitted from the second communications subsystem to the destination network. 
     The present invention is directed toward solutions to the above-described problems. 
     SUMMARY OF THE INVENTION 
     Briefly described, in a first aspect, the present invention includes a method of transmitting information to a network. The method includes receiving data from a first source into a first FIFO, and receiving data from a second source into a second FIFO. As data is received into the second FIFO, the data is transferred from the second FIFO to the network. When an end of message indication is detected in the received data, the first FIFO is compared to the second FIFO. If a miscompare occurs, the data transferred from the second FIFO to network is caused to be an error. Data exiting the first FIFO may be discarded throughout. 
     As an enhancement, upon miscompare, an error will be introduced into the data within the second FIFO prior to its transmission to the network. This error may include, for example, flipping at least one bit in the second FIFO, forcing at least one bit to a one or zero, or transmitting a protocol specific message abort pattern. Further, upon miscompare, transmission of the data from the second FIFO to the network may be prematurely terminated. 
     As a further enhancement, upon miscompare a signal may be sent to one or more of the first and second sources. The first and second sources may include at least one processor such that sending the signal may include generating an interrupt for the processor. 
     As yet another enhancement, a timer may be set upon initial receipt of data from the first source into the first FIFO. If the timer expires before comparing the FIFOs, a miscompare is declared and the transferred data from the second FIFO to network is caused to be an error. 
     The present invention also includes systems corresponding to the above-described methods. Particularly, in another aspect, the present invention includes a system for transmitting information to a network. The system includes first and second FIFOs for receiving data from first and second sources, respectively. Also, the system includes means for transferring data from the second FIFO to the network as data is received into the second FIFO. A means for detecting an end-of-message indication in the received data is also included in the system. Further, the system includes a means for comparing the first FIFO to the second FIFO upon detection of the end-of-message indication, and if a miscompare occurs transferred data from the second FIFO to the network is caused to be an error. 
     The present invention has several advantages and features associated therewith. The techniques disclosed represent a high-speed technique for insuring verification of the identity of redundant data streams prior to allowing successful transmission of them to a network. These techniques overcome the disadvantages of those used previously, in that dedicated signaling hardware is not needed for synchronization and the delays associated with store-compare-forward verification techniques are avoided. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     The subject matter regarded as the present invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of practice, together with further objects and advantages thereof, may best be understood by reference to the following detailed description taken in conjunction with the accompanying drawings in which: 
     FIGS. 1-2 depict prior art systems; 
     FIGS. 3-4 depict diagrams of fault-tolerant data transmission systems according to embodiments of the present invention; and 
     FIG. 5 is a flow diagram of operational techniques used pursuant to the present invention. 
    
    
     DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Turning to FIG. 3, a system is depicted in accordance with the present invention. CPU A  11  and CPU B  13  operate in a fault-tolerant manner in that they redundantly process information. As the CPUs operate, they communicate to other entities over a network  21 . A design goal is to insure that both CPUs agree on the message being sent to the network. Any difference in messages should result in the message not being successfully transmitted. 
     Communications subsystems  15  and  17  are coupled to their respective CPUs and manage network communications tasks including, for example, protocol specific message formatting. As one example, communications subsystems  15  and  17  may implement a Fast-Ethernet (802.3u) protocol. The transmit data outputs of each communication subsystem  15  and  17  are input to a data comparator  31 . If the two communications subsystems  15  and  17  transmit identical messages, the message will be forwarded to network  21  by comparator  31 . 
     In particular regard to the operation of the system of FIG. 3, and in particular regard to data comparator  31 , a logic circuit  41  will detect the first CPU to send information, and then operate a switch  45  to direct that CPU&#39;s data through a FIFO A  35 . The other CPU&#39;s data will be routed through switch  45  to a FIFO B  39 . 
     For example, if CPU A  11  is first to begin transmitting, logic circuit  41  operates switch  45  to route CPU A&#39;s  11  data through FIFO A  35 . As each bit is transmitted, it is shifted into the FIFO. However, the output from FIFO A  35  is discarded. 
     As a result of the above, the last n bits (n being the FIFO length) of CPU A&#39;s  11  message will remain in FIFO A  35 . These last n bits will contain an end-of-message flag preceded by the message checksum (many protocols, including HDLC and Fast-Ethernet, complete a message with a checksum followed by an end-of-message flag). The size of FIFO A  35  (and FIFO B  39 ) is designed to accommodate the end-of-message flag and preceding message checksum. 
     After CPU A  11  begins transmitting its message into FIFO A  35  (through communications subsystem A  15 ), CPU B  13  begins transmitting its version of the same message though communications subsystem B  17  and into FIFO B  39  of comparator  31 . FIFO B  39  shifts data out onto network  21 . Thus, the message from CPU B  13  passes transparently through FIFO B  39  and onto network  21 . 
     Upon completion of the message from CPU B  13 , logic  41  detects the end-of-message flag within FIFO B  39 . Logic  41  then compares the contents of FIFO B  39  to the contents of FIFO A  35 . Accordingly, the ends of the messages from CPU A  11  and CPU B  13  are compared to each other. Since the ends of the two messages each contain their respective checksums, a comparison therebetween will detect any differences between the messages. 
     If the messages are the same, the remainder of the message from CPU B  13  is shifted out of FIFO B  39  and onto network  21  using the normal bit clock. If the messages are not the same, the contents of FIFO B  39  are disturbed (e.g., one or more bits may be flipped or forced to a zero or one value) such that the message shifted out has an erroneous checksum, or the message transmission may be prematurely terminated. Therefore, the receiving node will reject the message and the disagreement between the two CPUs will not result in a successful message transmission. Alternatively, some protocols include a predetermined message abort sequence which can by transmitted such that the attached switch will disregard the incomplete message. As an enhancement, an interrupt, or other signal, may sent by comparator  31  to one or more of the CPUs informing them of the miscompare. 
     Data comparator  31  also includes a timer  43  that functions in connection with logic  41 . Upon detection of a first message, logic  41  initializes timer  43 . If timer  43  expires prior to a comparison being performed, a miscompare is declared and data comparator  31  is reset. The timeout value for timer  43  is set based upon parameters such as bit-rate, expected maximum message length and expected time relationship between messages. As an example, in a 100 Mbps network with a maximum message length of 12144 bits, wherein the messages from both CPUs should not be separated from each other more than 8000 bits, the timer can be set for 201 us. 
     In the embodiment of FIG. 4, a further redundant configuration is depicted wherein each processor/communications system has it own comparator (e.g.,  31 A &amp;  31 B) associated therewith. During normal operation, comparator A  31 A operates as described hereinabove to insure verified transmission of data. However, when, for example, a fault condition occurs (e.g., network connection fault, hardware failure or protocol level failure) communication subsystems  15  and  17  will direct their transmissions to comparator B  31 B. The outputs of the comparators  31 A and  31 B are directed to the same destination network. 
     By way of summary, and turning to FIG. 5 (with reference to comparator  31  of FIG.  3 ), a flow diagram depicts the operation of comparator  31  described herein. To begin, a first message will arrive on one of the two inputs of comparator  31  (STEP  101 ). This first message will be detected and directed into FIFO A  35  by switch  45 . Also, the other comparator input will be directed into FIFO B  39  and timer  43  will be set (STEPS  103 ,  105 ). 
     As data arrives on the link routed to FIFO A  35 , it will be shifted thereinto (STEP  119 ). While this occurs, data may arrive on the link routed to FIFO B  39  and will be shifter thereinto. The output of FIFO B is transmitted to network  21  ( 107 ). The above-described steps continue until an end-of-message is detected within FIFO B  39  (STEP  109 ). 
     When an end-of-message is detected in FIFO B  39 , the contents of the FIFOs are compared (STEP  111 ). If the FIFO contents are identical, then a successful compare results, the contents of FIFO B  39  continue to be shifted-out to network  21 , timer  43  is reset (STEP  113 ), and comparator  31  resets. If either the comparison results in inequality or timer  43  expires (STEP  115 ), a miscompare is declared (STEP  117 ). Upon miscompare, an error in data output to network  21  is affected and an interrupt in generated to the CPUs. 
     The present invention has several advantages and features associated with it. The techniques disclosed herein represent a high-speed technique for insuring verification of the identity of redundant data streams prior to allowing successful transmission thereof to a network. These techniques overcome the disadvantages of those used previously in that dedicated signaling hardware is not needed for message synchronization and the delays associated with store-compare-forward verification techniques are avoided. 
     While the invention has been described in detail herein, in accordance with certain preferred embodiments thereof, many modifications and changes thereto can be affected by those skilled in the art. Accordingly, it is intended by the appended claims to cover all such modifications and changes as fall within the true spirit and scope of the invention.