Patent ID: 7706255

Claim:
A communications apparatus comprising: a plurality of functional modules for implementing an application capable of behaving as both a source and destination; at least two switch modules to provide redundant switching capability for transferring frames between any pair of said functional modules; each said functional module being connected to each said switch module by a frame-based communication link; and a redundancy logic unit at each functional module for inserting sequence numbers into outgoing frames, replicating the outgoing frames for forwarding to each of said switch modules, and monitoring incoming frames from each of said switch modules to select frames for forwarding to the application based on the sequence numbers in the incoming frames, and wherein said redundancy logic at each functional module is further configured to: (i) maintain a first plurality of rolling sequence numbers, one for each destination functional module, whereby the rolling sequence number for a particular destination functional module increments when a frame is sent to that destination functional module; (ii) maintain a second plurality of rolling sequence numbers, one for each source functional module, whereby the rolling sequence number for a particular source functional module is incremented when a non-duplicate frame is received from that source functional module; (iii) upon receipt of a frame for transmission to a particular destination functional module, perform a lookup for that particular destination functional module to determine the next sequence number to be inserted in a frame forwarded to that particular functional module; and (iv) upon receipt of an incoming frame, identify the source functional module for the incoming frame, extract the sequence number from the incoming frame, perform a lookup for that particular source functional module to identify the next expected sequence number; and discard the frame if sequence number extracted from that incoming frame is less than the next expected sequence number for that incoming frame.