Method for interprocessor message accountability
TECHNICAL FIELD 
     This invention relates to communication systems and particularly to error detecting arrangements. 
     In a more particular aspect, this invention relates to arrangements for detecting errors in the transmission of data in a multiprocessor system. 
     In a still more particular aspect, this invention relates to arrangements for detecting errors in the transmission of messages between processors where the messages are transmitted over a plurality of transmission links. 
     BACKGROUND OF THE INVENTION 
     In a multiprocessor communication system, messages are sent over data links between processors and certain protocols have been established to specify the procedure for exchanging information between two ends of a single communication link. While these protocols provide sufficient protection against transmission errors for a single link connection, problems still exist in a multilink environment. 
     For example, messages can get lost along a communication path made up of a plurality of serially connected links in places such as message buffers, queues, etc., associated with the intermediate and end processors. 
     Additionally, when duplicate parallel links are provided for reliability, portions of a sequence of messages associated with a single process may be sent via different paths to the same destination. In many instances, these messages must be acted upon in the same sequence in which they were transmitted; however, due to the multiple paths available, the messages may not arrive in the same order in which they were transmitted and some messages may even be lost. 
     Thus, a need exists for detecting lost or out-of-sequence messages in a multiprocessor enviroment. 
     The problem of lost or out-of-sequence messages has been considered in the past. In one known arrangement, for example, each message is assigned a sequence number by the sending procssor. The receiving processor then keeps track of the sequence numbers. It may acknowledge the receipt of each message and in some instances request retransmission of any lost or garbled messages. 
     While the above arrangement is suitable for its intended purpose, whenever the retransmission of lost messages is provided, additional storage is required since the sending processor must keep a record of all messages that are sent until each message is acknowledged by the receiver. Also, in a large multiprocessor system, the average message interarrival time between two end processors may be lengthy during busy periods. The receiving processor may erroneously interpret the length of time between messages as a lost message and prematurely ask for retransmission, thus unnecessarily increasing the message flow between processors. 
     SUMMARY OF THE INVENTION 
     The foregoing and other problems are solved, and a technical advance is achieved by method and apparatus for detecting lost or out-of-sequence messages in a multiprocessor environment. 
     More specifically and in accordance with the illustrative embodiment of the invention, consecutive sequence numbers which are selected from a finite modulus are assigned to messages transmitted from the sending processor. At the receiving processor, the distance between nonconsecutive incoming modular sequence numbers is evaluated. If the distance between adjacently received sequence numbers exceeds 1, a determination is made as to whether any messages are missing and whether the adjacent messages were received in the reverse order from which they were sent. 
     More specifically, a pseudowindow is defined and denotes an empirical possible range for out-of-sequence and missing messages to occur. The distances between the two adjacent modular sequence numbers is ascertained at the receiving processor. The larger distance is discarded and the smaller distance is compared to the pseudowindow. If the smaller distance falls within the window, a determination is made as to the correct order of the messages, and a record is kept of any missing messages. The record is continually updated upon the late arrival of missing messages. 
    
    
     BRIEF DESCRIPTION OF THE DRAWING 
     FIG. 1 shows a block diagram of a multiprocessor telephone switching system utilizing the invention; 
     FIGS. 2 and 3 are pictorial representations of the memory associated with one of the processors of the switching system of FIG. 1. 
     FIGS. 4-6 are flow diagrams of the sequence of operations executed by the processor in accordance with the invention, and 
     FIG. 7 is a table of several examples of how sequence numbers are processed to account for lost messages and messages which are not in the proper order. 
    
    
     DETAILED DESCRIPTION 
     The invention is useful in a multiprocessor environment such as a telephone switching system having distributed processors. One example of such a system is disclosed in U.S. Pat. No. 4,322,843 issued to H. J. Beuscher et al., on Mar. 30, 1982. While a detailed description of the Beuscher et al. system is not necessary for a complete understanding of the present invention, a brief description of that system will now be give in order for the reader to appreciate the environment in which the present invention is applicable. 
     FIG. 1 shows a portion of the Beuscher et al. disclosure and is a block diagram of a time division switching system for interconnecting a plurality of customer stations 100-103. The system includes a time multiplex switching unit 104 and a plurality of time slot interchange units such as 105 and 106 which are coupled to the time multiplex switching unit via a pair of input/ouput ports. 
     Each time slot interchange unit is uniquely associated with a control unit and each control unit contains a processor, memory, interface circuitry, etc., for controlling its associated time slot interchange unit. 
     The processor designated central control 109, which performs certain administrative functions for the switching system, exchanges control messages with the control units 107 and 108 utilizing selected control channels, such as 110 and 111, between the time multiplex switching unit and the appropriate time slot interchange unit 105 and 106. 
     Control units 107 and 108 can communicate with each other by sending control messages on their control channels 110 and 111 respectively, to the time multiplex switch unit 104. The processor designated control distribution unit 112 interprets the destination portion of these messages and retransmits the message to the time multiplex switching unit in the appropriate time slot associated with the destination control unit. 
     Thus, it can be seen from the above description that in order to perform the many functions necessary for providing telephone service to the customer stations, the processors in the control units, the control distribution unit and the central control must all communicate with each other over data links which are provided in duplicate for reliability. In addition to the buffers, queues, etc., that are provided at each processor stage, a message between a transmitting processor in one control unit and a receiving processor in another control unit, may traverse a plurality of serially related links. As a consequence, messages can get delayed or lost along the way because of queue overloads. Furthermore, portions of a series of messages may be transmitted via different paths as duplicate links are switched into and out of service to compensate for equipment irregularities. Thus, messages may not arrive at the receiving processor in the same sequence that they were transmitted. 
     In accordance with the present invention, sequence numbers are assigned to each message transmitted by the sending processor, and these numbers are analyzed by the receiving processor to ascertain if any numbers are missing or if the numbers are not in the correct order. 
     In the example being described, the sequence numbers are selected from a finite modulus N. While N can be any positive integer, the quantity 256 had been selected since sequence numbers selected within this range can be represented by an 8-bit byte in the message that is transmitted. 
     In a modulo sequence numbering system, the order of any two numbers is not apparent from their absolute value and there is no immediate way to decide their precedence since the series of numbers is continuously repeated. For instance, with a modulus of 256 a series of sequence numbers would run 0, 1, 2, 3, . . . , 255, 0, 2, 3, . . . , 255, . . . etc. If the sequence numbers 2 and 1 were appended to adjacent messages that were received by a processor where the message numbered 2 was received before the message numbered 1, the processor would not know by merely examining the numbers whether these numbers were consecutive and had been received in the reverse order or whether the messages were actually received in the correct order, but those messages numbered 3, 4, . . . 225 and 0 were missing. 
     In order to ascertain the proper sequence of the received messages, two distances &#34;dmin&#34; and &#34;dmax&#34; are defined as the distances between two adjacent modulo sequence numbers that are received at a receiving processor. In the example described above, these distances would be 1 and 255 respectively. 
     Furthermore, and in accordance with our invention, a pseudowindow is defined and designated D. The window D denotes the empirical possible range for an out-of-sequence or missing message to occur. In this illustrative embodiment, the value of D is assumed to be 10. 
     Thus, in the above example where &#34;dmin&#34;=1 and &#34;dmax&#34;=255, &#34;dmax&#34; exceeds the window D and is assumed to be the invalid distance between the sequence numbers. This value &#34;dmax&#34; is discarded and the value &#34;dmin&#34; is considered the &#34;true&#34; distance. A conclusion can then be drawn that the sequence numbers were received in the reverse order from which they were sent. 
     In order to keep track of messages sent and received, each processor has a SEQUENCE NUMBER table in its memory. A pictorial representation of typical SEQUENCE NUMBER table associated with control unit 107 is shown in FIG. 2. It should be noted that the table contains an entry for each of the other processors that control unit 107 can communicate with and the identity of the link that was used for the last message sent to or received from that processor. In addition to the identity of the link used for a message, the sequence number of the last message sent (MS) and the sequence number of the last message received (MR) is also recorded on the table. Furthermore, a total count of the number of messages sent (SC) and the number of messages received (RC) is kept for each processor. 
     In addition to the SEQUENCE NUMBER table the memory for each processor contains an OUT-OF-SEQUENCE MESSAGE table such as a table pictorial represented in FIG. 3. The sequence number of all messages that are out-of-sequence are recorded in the table along with their entry times. If any message arrives within a predetermined time after its entry on the OUT-OF-SEQUENCE table, it will be removed from the table. Otherwise it will be marked as a missing message. 
     Thus, in accordance with the general principals of operation of the arrangement, when a processor receives adjacent messages bearing consecutive sequence numbers, the SEQUENCE NUMBER table is updated upon receipt of each message. Should a processor receive adjacent messages whose sequence numbers are not consecutive, the processor first determines the minimum distance between the two numbers. If the minimum distance, &#34;dmin&#34;, is within window D the largest distance, &#34;dmax&#34;, is disregarded. The processor then determines the proper order for the two sequence numbers. In situations where the sequence numbers are in the correct order but not consecutive, the processors list the numbers of all the missing messages on the OUT-OF-SEQUENCE MESSAGE table shown in FIG. 3. 
     Should the processor find that nonconsecutive sequence numbers are in fact not in the proper order, the processor consults the OUT-OF-SEQUENCE MESSAGE table in order to ascertain if the most recently received sequence number has previously been reported as a missing number. 
     While in most instances the minimum distances between the adjacently received sequence numbers falls within the window D it is possible that a newly received sequence number can be so far apart from the last received sequence number to fall outside the window. In this case the processor first examines the OUT-OF-SEQUENCE MESSAGE table to determine if the message has previously been reported as missing. If the sequence number does not appear in the OUT-OF-SEQUENCE MESSAGE table the processors assumes this might be a &#34;wild&#34; jump ahead, and the sequence number is put in a table designated TEMP (not shown) for further observation. Thus, the long list of sequence numbers apparently missing between the last one received and the sequence number currently being processed is not recorded at this time. Should the next sequence number that is received be in the same vicinity as the one on the TEMP table the processor considers this a valid jump ahead and goes back and lists all of the intervening sequence numbers as missing messages. 
     If, however, the next sequence number of the message is within the vicinity of the previously recorded sequence number and not the sequence number listed in the TEMP table, the sequence number in the TEMP table is marked as out of order and an error report is made. 
     In order for the reader to understand the principle of the operation of the system a few examples of the possible sequence number ordering conditions that can exist will be described, followed by the description of the operation of a processor in performing functions necessary to detect lost or OUT OF SEQUENCE MESSAGES. 
     Table 1 in FIG. 7 depicts six examples of how sequence numbers might be received by a processor. 
     For Case A shown in the table the new sequence number, MRnew, is consecutive to the last sequence number, MRold, that was received and the processor merely updates the sequence number table. 
     For Cases B and C the minimum distances (dmin) between the old and new sequence numbers MRold and MRnew, are within the window D and the numbers were received in the proper order, but there are several sequence numbers, and the messages associated therewith, that are missing. 
     Cases D and E illustrate situations where the minimum distances between adjacently received sequence numbers are within the window D but the numbers were not received in the proper order. 
     Case F in Table 1 illustrates a situation where both distances between adjacently received sequence numbers are greater than the window D. As noted above, the processor will not list all intervening messages as missing until it is sure that the new sequence number is not just a wild jump ahead. 
     The flowcharts shown in FIGS. 4-6 depict the sequence of operations a processor, such as processor 107, performs in implementing the invention. 
     To illustrate how the system works under different circumstances it will be assumed that the sequence numbers arrive at the processor in the manner shown in each of the Cases A through F depicted in Table 1. 
     In all cases, as each message arrives the receiving processor obtains the sequence number, the sending processor&#39;s identification and identification of the link over which the message was received, as shown in Box 400. The new sequence number MRnew, is then compared with the last sequence number MRold (Box 401). If the new number is the next consecutive number as in Case A, the &#34;yes&#34; branch of Box 402 is executed and the operation in Box 403 is performed to update the SEQUENCE NUMBER table. The table is updated by incrementing the messages received counter RC and changing the sequence number of MRold to the new sequence number that was assigned to the message being processed at this time. The processor then exits this portion of the program until another message is received. 
     Let it now be assumed that a Case B (Table 1) situation takes place, namely, that the last message received was numbered 1 (MRold=1) and the sequence number of the message now being processed is 5 (MRnew=5). The &#34;no&#34; branch of Box 402 is executed indicating that the sequence numbers are not consecutive and a variable &#34;dn&#34; is generated (Box 404) by adding the N&#39;s complement value of MRold (i.e., [MRold]) to the value of MRnew. The N&#39;s compliment of a value, such as MRold, is generated by subtracting MRold from N (where N is the modulo number 256 in this embodiment). Since the resulting value (260) is larger than N, the &#34;no&#34; branch of Box 405 is executed and another variable &#34;dna&#34; is generated by subtracting N from &#34;dn&#34; as set forth in Box 406. 
     Decision Box 407 is now executed to determine if the value of &#34;dna&#34; is less than the pseudowindow D. In this example, Case B, the value of &#34;dna&#34; is 4, so the &#34;yes&#34; branch of Box 407 is executed and processor 107 sets the variable &#34;dmin&#34; equal to the value of &#34;dna&#34;. The variable &#34;dmin&#34; represents the minimum distance between MRold and MRnew. 
     Up to this point in the sequence of operation with respect to a Case B situation, the processor has determined that MRnew is ahead of MRold and that some intervening messages are missing, but not necessarily lost. 
     The processor continues in accordance with the flowchart shown in FIG. 5 and will enter the sequence numbers that are missing between MRold and MRnew. 
     Box 500 is executed to compute the temporary variable &#34;x&#34; which represents the number of missing messages and the out-of-sequence message counter OMC is incremented by &#34;x&#34; (Box 501) to keep track of the total number of missing messages. The number of missing messages is then compared to a constant TBL as shown in Box 502. 
     If the number of missing messages exceeds the threshold TBL, the processor will examine the OUT-OF-SEQUENCE MESSAGE table (Box 509) and delete any entries that have been on the table in excess of a predetermined time interval defined by the constant &#34;HR&#34;. The messages are deleted from the OUT-OF-SEQUENCE MESSAGE table on the asssumption that if they have not arrived within the prescribed time, they are lost. This sequence of events is described in Boxes 509-513. 
     Let it be assumed that the &#34;no&#34; branch of Box 502 is executed indicating that less than the threshold value TBL of messages are missing. The processor now establishes a value MRmiss by incrementing the sequence number of the last message received, MRold. MRmiss is now entered in the OUT-OF-SEQUENCE MESSAGE table along with the time of entry (Box 504) and the variable &#34;x&#34; is decrmented by 1. If there are additional messages to be recorded (i.e., if &#34;x&#34; is not equal to zero), the variable MRmiss is incremented and the other missing messages are listed on the OUT-OF-SEQUENCE MESSAGE table. This process involving the operations described in Boxes 504-507 continues until all missing messages have been listed on the table. The SEQUENCE NUMBER table is now updated (Box 508) by changing the MRold entry to the sequence number of the message currently being processed (MRnew). A check is now made of the variable &#34;y&#34;, since y=0 in this case, the yes branch of Box 514 is executed, and this portion of the program is exited waiting for the next message to arrive. The function of the variable &#34;y&#34; is explained below with respect to messages that are apparently missing when a wide gap exists between MRold and MRnew. 
     Case C, as shown in Table 1 is similar to case B in that the sequence numbers are received in the correct order, although they are not consecutive. In Case C, however, it is not apparent the numbers are in the proper order since the absolute value of the prior sequence number MRold is higher than the value of the current sequence number MRnew. 
     When a Case C situation arises and the variable &#34;dn&#34; is calculated (FIG. 4), &#34;dn&#34; is less than N and also less than the pseudowindow D (Boxes 405 and 409). This indicates to the processor that &#34;dn&#34; is the minimum distance between the two sequence numbers and the variable &#34;dmin&#34; is set to equal &#34;dn&#34;, as shown in Box 410. Processor 107 then executes the sequence shown in FIG. 5 to record the missing sequence numbers and update the OUT-OF-SEQUENCE MESSAGE table. 
     From the above description it can be seen that in each example (Cases B and C), summing the current sequence number with the N&#39;s complement of the prior sequence number and subtracting the result from the modulus size N, where necessary to bring the result within the modulus, permitted the processor to ascertain the minimum distance between the sequence numbers and the fact that the numbers were in the proper order although not consecutive. In both cases, the processor went on to record the identity of each missing message. 
     In the case designated D and E shown in Table 1, it is assumed that the adjacently received sequence numbers were received in the reverse order. In order to ascertain this, however, processor 107 must go through the following sequence of operations. As with all cases, the processor sums the new sequence number MRnew with the N&#39;s complement of the last recorded sequence number MRold and finds the &#34;dn&#34; or &#34;dna&#34; variable. If the sequence numbers are in the proper order and within the distance D, &#34;dn&#34; or &#34;dna&#34; will always be smaller than the window D and the &#34;yest&#34; branches of Boxes 407 and 409 will be executed. 
     If, however, the sequence numbers are in the reverse order, the variable &#34;dn&#34; or &#34;dna&#34; will be larger than D and the &#34;no&#34; branch of Box 407 or 409 will be executed. The processor will now establish a new variable &#34;dnc&#34;. The variable &#34;dnc&#34; is computed by taking the N&#39;s complement of either variable &#34;dn&#34; or &#34;dna&#34;, as shown in Box 411 and 412, respectively. At this point the processor knows the message sequence numbers are in reverse order and continues processing in accordance with the flowchart shown in FIG. 6. 
     Since in each of the Cases D and E the distance between the adjacently received sequence numbers is less than the pseudowindow D, the &#34;yes&#34; branch of Box 600 in FIG. 6 is executed and a search is made of the OUT-OF-SEQUENCE MESSAGE table to ascertain if th new message sequence number MRnew had priorly been reported as missing. If the sequence number had not been priorly entered on the OUT-OF-SEQUENCE MESSAGE table, an error report is made and the program is exited. 
     Assuming that no trouble conditions exist and processor 107 finds the sequence number on the OUT-OF-SEQUENCE MESSAGE table, this entry is deleted from the table, the OUT-OF-SEQUENCE MESSAGE counter OMC is decremented, the total messages receive counter RC is incremented, and this portion of the program is exited. 
     In the last example, Case F shown in Table 1, the distances between the adjacently received sequence numbers exceed the pseudowindow D. This can occur as a result of several possibilities. First, if the new sequence number is behind the last sequence number, this indicates that the message identified by MRnew had been delayed in reaching the receiving processor (i.e., missing) for an exceptionally long interval. If, on the other hand, the sequence numbers are in the correct order but the distance between them exceeds the pseudowindow, the processor must ascertain if the sequence number MRnew is valid and thus record all of the missing numbers between MRold and MRnew or if MRnew is the result of a wild jump and should be marked out of order. 
     Processor 107 performs the same functions described above with respect to Case E in generating the variable &#34;dnc&#34; except when both distances &#34;dmin&#34; and &#34;dmax&#34; are greater than the pseudowindow D, variable &#34;dnc&#34; will also be larger than D. Thus, when the variable &#34;dnc&#34; is greater than D, the &#34;no&#34; branch of Box 600 is executed. A test is then made to determine if the distance &#34;dnc&#34; between the sequence numbers is greater than the modulus N indicating an error. IF it is assumed that the variable &#34;dnc&#34; is greater than the window D but less than the modulus N, the &#34;no&#34; branch of Box 605 is executed. 
     At this point, processor 107 examines the OUT-OF-SEQUENCE MESSAGE table (Box 607). If MRnew appears on the table as a priorly recorded missing message, the entry is deleted and the OMC and Rc counters are updated as shown in Boxes 602-604. If the sequence number MRnew is not on the OUT-OF-SEQUENCE MESSAGE table, processor 107 examines a table designated TEMP (not shown) to ascertain if there are any sequence numbers in the vicinity of MRnew. 
     As discussed above, under normal circumstances some messages are delayed and appear to be &#34;missing&#34; at the receiving processor so that a gap appears in the series of sequence numbers recorded at the receiving processor. In the example being described, these gaps should normally not exceed the pseudowindow D. In the event a processor receives a sequence number MRnew far ahead of the last number received, MRold, the processor creates a new variable designated TEMP for further observation. If the next sequence number received is within the vicinity of the variable TEMP, then the sequence number in the variable is considered valid and all missing numbers are recorded in the OUT-OF-SEQUENCE MESSAGE table as before. 
     On the other hand, if the next sequence number to be received is in the vicinity of the last sequence number recorded in the SEQUENCE NUMBER table, the variable TEMP is considered a &#34;wild&#34; jump and marked as an out-of-sequence message. 
     Thus, in the Case F example, MRnew has not been found on the out-of-sequence message table and the distance between MRnew and MRold is greater than the window D resulting in the &#34;no&#34; branch of Box 607 being executed. The processor now executes Box 609 and ascertains if there is an entry in the memory allocated for the variable TEMP. If there is no entry in the TEMP memory, MRnew is entered therein and the processor exits this portion of the program (Box 610). 
     If the variable TEMP had been established from a prior message, processor 107 must now ascertain if MRnew is a sequence number in close proximity to TEMP, thereby indicating that the sequence number in TEMP was a valid jump far from the previously recorded sequence number. Processor 107 must now record all missing numbers. Accordingly, when the &#34;yes&#34; branch of Box 611 is executed, processor 107 sets the variable &#34;x&#34; equal to the number of messages missing between the last sequence number MRold and the number of previously stored in the TEMP memory (Box 615). In addition, a variable &#34;y&#34; (Box 616) is generated representing any missing sequence numbers between the sequence number stored in TEMP and the sequence number assigned to the message currently being served and the value in TEMP is replaced by the new sequence number MRnew. 
     The processor then performs the operations described above with respect to FIG. 5 and enters on the OUT-OF-SEQUENCE MESSAGE table all of the missing messages. 
     In summary, an arrangement has been described for accounting for lost and OUT-OF-SEQUENCE MESSAGES in a multiprocessor environment. Each message is assigned a sequence number selected from a modulo numbering plan by the sending processor. The receiving processor compares the previously received sequence number with the currently received number and asertains if they are in the correct order and if any messages are missing. The sequence numbers of all missing messages are recorded for a prescribed interval of time on an OUT-OF-SEQUENCE MESSAGE table to await their arrival. 
     It is to be understood that the arrangements described herein are merely illustrative of the applications of the principles of the invention and that numerous other arrangements may be devised by those skilled in the art without departing from the spirit and scope of the invention.