Patent Publication Number: US-9900267-B2

Title: Systems and methods for packet switching

Description:
RELATED APPLICATIONS 
     This application is a continuation application of U.S. patent application Ser. No. 14/045,415, filed on Oct. 3, 2013. 
    
    
     TECHNICAL FIELD 
     The present disclosure is generally related to computer systems, and is more specifically related to systems and methods implementing low latency packet switching, high bandwidth data inspection and capture, and data flow fan-out. 
     BACKGROUND 
     “Switching device” herein shall refer to a computing device that links other data processing devices and/or network segments. A switching device may receive a data packet from a device connected to it and then transmit the data packet to one or more recipient devices. Conventional switching devices may processes and route data packets at the physical (layer  1 ) and data link layer (layer  2 ) of the OSI reference model. A switching device may be equipped with interfaces allowing support of various networking media, e.g., Ethernet, Gigabit Ethernet, Fibre Channel, SONET, and/or other communication standards. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The present disclosure is illustrated by way of examples, and not by way of limitation, and may be more fully understood with references to the following detailed description when considered in connection with the figures, in which: 
         FIG. 1  depicts a high-level component diagram of an example computer system operating in accordance with one or more aspects of the present disclosure; 
         FIG. 2  schematically illustrates an example computer system configured to perform various processing and analysis of incoming data packets, in accordance with one or more aspects of the present disclosure; 
         FIG. 3  schematically illustrates an example computer system configured to perform active analysis and/or filtering of data packets flowing through the switching device, in accordance with one or more aspects of the present disclosure; 
         FIG. 4  schematically illustrates an example computer system implementing a financial risk gateway interconnecting a client interface and an exchange interface, in accordance with one or more aspects of the present disclosure; 
         FIG. 5  schematically illustrates system an example computer system configured to provide OSI layer  2  and/or layer  3  routing functionality and traffic analysis, in accordance with one or more aspects of the present disclosure; and 
         FIG. 6  schematically illustrates system an example computer system configured to provide low latency packet replication for distribution of traffic to multiple external devices, in accordance with one or more aspects of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Described herein are systems and methods implementing low latency packet switching, high bandwidth data inspection and capture, and data flow fan-out. 
     Various applications, including, e.g., financial applications, military, security and data replication applications may require switching devices to perform additional data processing (e.g., filtering, time stamping, analysis, unicast or multicast routing, etc.). However, conventional switching devices with data inspection and processing capabilities often demonstrate processing latency which is inadequate for certain applications, e.g., high-frequency trading (HFT). Aspects of the present disclosure address the above noted and various other deficiencies by combining a switching device with a programmable or configurable data processing device (e.g., a field programmable gate array (FPGA) device or an application specific integrated circuit (ASIC) device), in order to perform ultra-low latency data packet processing and/or routing at multiple OSI model layers. Various aspects of the above referenced methods and systems are described in details herein below by way of examples, rather than by way of limitation. 
       FIG. 1  schematically depicts a high-level component diagram of an example computer system  100  operating in accordance with one or more aspects of the present disclosure. System  100  may comprise a switching device  110  electrically coupled to a data processing device  150 , and configured to operate as described in more details herein below. 
     While  FIG. 1  illustrates switching device  110  and data processing device  150  as two separate devices, in certain implementations the functions performed by computer system  100  as described herein may be performed by a single device. Alternatively, computer system  100  may comprise data processing devices and/or switching devices in various arrangements. 
     Switching device  110  may be provided, e.g., by an ASIC chip implementing cross-point switching functionality. Switching device  110  may comprise a plurality of input/output (I/O) ports  120 . In certain implementations, I/O ports  120  may support differential signaling, involving two complementary electric signals sent over a differential pair comprising two wires. 
     In certain implementations, a first subset of I/O ports  120  of switching device  110  may be connected to a plurality of pluggable transceiver sockets  140 , with input and output ports connecting to each pluggable transceiver socket to form a full-duplex connection. A second subset of I/O ports  120  of switching device  110  may be connected to a plurality of transceivers  155  of data processing device  150 , to enable its operation in accordance with one or more aspects of the present disclosure. 
     Various alternative arrangements of the described components are possible, specifically, multiple switching devices  110  may be arranged in a tree-like structure to increase the number of available I/O ports. 
     In an illustrative example, a pluggable transceiver socket  140  may be provided by a small form factor pluggable transceiver (SFP). Alternatively, a pluggable transceiver socket  140  may be provided by an enhanced small form factor pluggable transceiver (SFP+), or a multi-channel pluggable module such as QSFP, single or multi-channel direct copper connector, etc. Pluggable transceiver sockets  140  may be configured to support 10/100/1000 Ethernet, 10 GBit Ethernet, Fibre Channel, SATA, SAS, SONET, and/or other communication standards. 
     Switching device  110  may further comprise switching control logic  112  to program M×N port mapping, wherein M and N are positive integers. “M×N port mapping” herein shall refer to electrically connecting each of M input ports to one or more of N output ports. In certain implementations, the M×N port mapping can be implemented as a bi-directional, full-duplex mapping, allowing a symmetric signal flow between each pair of interconnected I/O ports of electric signals representing data packets. Alternatively, the M×N port mapping can be implemented as a uni-directional mapping, specifying a signal flow direction for each pair of interconnected I/O ports, such that the flow of electric signals representing data packets between each pair of interconnected I/O ports would be asymmetric: packets from I/O port A would be forwarded to I/O port B, but not vice versa. 
     In certain implementations, switching device  110  may further comprise a control interface  132 . In an illustrative example, switching device  110  may receive the M×N port mapping via control interface  132  from an external device (not shown in  FIG. 1 ). Alternatively, switching device  110  may receive the M×N port mapping via control interface  132  from data processing device  150 . 
     In an illustrative example, switching control logic  112  may be programmed to connect each I/O port  120  of an arbitrarily designated plurality of I/O ports to any of the remaining I/O ports  120  of the arbitrarily designated plurality of I/O ports. The signal path through the switching device may use no registers and be fully asynchronous, with no restrictions on the phase, frequency, or signal pattern of any input. Port connectivity programming for the switching can be sequential on a port-by-port basis, or multiple port assignments can be queued and issued simultaneously. The entire switching device can be initialized for straight-through, multicast, or other configurations. Unused I/O ports can be powered down to improve the energy efficiency of the switching device in applications that require only a subset of the available I/O ports. 
     Referring now to data processing device  150 , the device may, in illustrative examples, be provided by an FPGA chip or an ASIC chip. Data processing device  150  may communicate to external systems and devices via a plurality of transceivers  155 . 
     Other components of computer system  100  electrically connected to data processing device  150  may, in illustrative examples, include: a high resolution oscillator  172  suitable for accurate timekeeping, a time source  173 , a memory device  174 , and/or other peripheral processing elements as required. 
     An electric signal representing one or more data packets may flow from external devices through pluggable transceiver sockets  140  coupled to M input ports of switching device  110 , and then may further flow to N ports of switching device  110  in accordance with the programmable M×N port mapping implemented by switching logic  112 , and finally may flow to data processing device  150  via a plurality of transceivers  155  coupled to a first subset of N output ports of switching device  110  and/or to one or more external devices through pluggable transceiver sockets  140  coupled to a second subset of N output ports of switching device  110 . As noted herein above, the M×N port mapping can be implemented as a uni-directional or bi-directional mapping, respectively allowing a uni-directional or symmetric bi-directional) signal flow of electric signals between each pair of interconnected I/O ports. 
     In certain implementations, as schematically illustrated by  FIG. 2 , system  100  may be configured to perform various processing and analysis of incoming data packets, as described in more details herein below. In an illustrative example, data switching device  110  may be configured to connect a plurality of external ports  120  to each other, in accordance with a programmable port mapping scheme. Electric signals representing data packets flowing through those connections may also be sent to switching device  150  via one or more transceivers  155 . Data processing device  150  may perform various processing of the incoming data packets, including analyzing, time stamping, filtering, and/or re-transmitting the modified data packets back to switching device  110 . 
     In the illustrative example of  FIG. 2 , the electric signal representing one or more incoming data packets flowing through the switching device as described herein above (or a new electric signal derived from the above referenced electric signal) may be forwarded to one or more output ports coupled to the front panel pluggable transceiver sockets  140 , as well as to data processing device  150  via one or more transceivers  155 . Data processing device  150  may be programmed to perform various processing of the data packets received, and then retransmit the modified data packets or information derived from their processing or analysis, via one or more transceivers  155 , back to switching device  110  and/or to one or more external devices (not shown in  FIG. 2 ), as described in more details herein below. 
     In an illustrative example, data processing device  150  may be programmed to insert additional data (such as time stamps) into the incoming data packets before forwarding the data packets to the destination I/O ports and/or to external devices. 
     In another illustrative example, data processing device  150  may be programmed to enqueue the incoming data packets into a buffer, and to compress or otherwise aggregate the queued data packets before forwarding the data packets to the destination I/O ports and/or to external devices. Data processing device  150  may be programmed to implement various data compression algorithms to perform on-the-fly packet compression. In certain implementations, data processing device  150  may be programmed to select a data compression algorithm based on one or more attributes of the incoming data packets (e.g., network, transport, and/or application level attributes). 
     In certain implementations, as schematically illustrated by  FIG. 3 , data processing device  150  may perform active analysis and/or filtering of data packets flowing through switching device  110 , in the illustrative example of  FIG. 3 , the electric signal representing one or more incoming data packets flowing through the switching device as described herein above (or a new electric signal derived from the above referenced electric signal) may be forwarded to data processing device  150  via one or more transceivers  155 . Data processing device  150  may be programmed to perform various processing of the data packets received, and then retransmit the modified data packets, via one or more transceivers  155 , back to switching device  110 , as described in more details herein below. 
     In certain implementations, as schematically shown in  FIG. 3 , switching device  110  may be configured to transmit the data packets of the return traffic from the destination I/O ports directly to the source I/O port, thus bypassing data processing device  150 . In certain implementations, the return traffic bypass may be complemented by forwarding a copy of the return traffic to data processing device  150 , thus eliminating the unnecessary latency of data processing of the return traffic. 
     In an illustrative example, data processing device  150  may be programmed to filter the incoming data packets. In certain implementations, data processing device  150  may be programmed to apply a programmable filter to every incoming data packet. Alternatively, data processing device  150  may be programmed to apply a programmable filter to a subset of the incoming data packets, which may be selected based on one or more attributes of the incoming data packets (e.g., network, transport, and/or application level attributes). In certain implementations, data processing device  150  may be programmed to select a programmable filter based on one or more attributes of the incoming data packets (e.g., network, transport, and/or application level attributes). 
     In an illustrative example, the programmable filter implemented by data processing device  150  may perform financial risk analysis of the data comprises by the incoming data packets. In another illustrative example, the programmable filter implemented by data processing device  150  may perform other types of application-level filtering of the data comprises by the incoming data packets. In a further illustrative example, the programmable filter implemented by data processing device  150  may perform other types of filtering based on the network and/or transport level attributes of the incoming data packets. 
     In certain implementations, the programmable filter implemented by data processing device  150  may implement stateless or stateful inspection and/or filtering of the incoming data packets. For implementing stateful inspection and/or filtering, data processing device  150  may be programmed to keep track of multiple communication sessions between a plurality of external systems, and store in the memory a plurality of parameters defining the state for every communication session. 
     In an illustrative example, the programmable filter implemented by data processing device  150  may inspect the data within one or more incoming data packets, evaluate one or more filtering conditions, and based on the evaluation results, perform one or more of the following actions: pass through one or more data packets without modifying them, modify the data within one or more data packets, drop one or more data packets, and/or terminate the communication session to which one or more data packets belong. In certain implementations, a filtering condition may comprise one or more logical expressions having operands including one or more attributes of the incoming data packets (e.g., network, transport, and/or application level attributes). In a stateful inspection scenario, the logical expression operands may also include one or more state variables of the communication session comprising the data packets being inspected. 
       FIG. 4  schematically illustrates system  100  implementing a financial risk gateway interconnecting a client interface  410  and an exchange interface  420 . System  100  performs financial risk analysis on data packets transmitted from client interface  410  to exchange interface  420  with “kill switch” functionality. In an illustrative example, system  100  may drop one or more data packets violating a pre-defined and/or dynamically configurable financial risk condition. In another illustrative example, system  100  may terminate a communication session comprising one or more data packets violating a pre-defined and/or dynamically configurable financial risk condition. 
     In certain implementations, as schematically illustrated by  FIG. 5 , system  100  may be configured to provide OSI layer  2  and/or layer  3  routing functionality and traffic analysis. In the illustrative example of  FIG. 5 , the electric signal representing one or more incoming data packets flowing through the switching device as described herein above (or a new electric signal derived from the above referenced electric signal) may be forwarded to data processing device  150  via one or more transceivers  155 . Data processing device  150  may be programmed to forward an incoming data packet to a transceiver  155  which is selected based on the data comprised by the incoming data packets. In the illustrative example of  FIG. 5 , data processing device  150  may be programmed to implement an OSI layer  2  or layer  3  routing method, by forwarding an incoming data packet to a transceiver  155  which is selected based on the layer  2  and/or layer  3  destination address field of the incoming data packet. To perform the routing, data processing device  150  may store in its memory, for each external device which communicatively coupled to switching device  110  via a transceiver  140 , a mapping of the external device&#39;s address to the identifier of a transceiver  155  via which the electric signal encoding data packets addressed to the external device should be forwarded to switching device  100 . In the illustrative example of  FIG. 5 , for external device  540 K communicatively coupled to a transceiver  140 K of switching device  110 , data processing device  150  may store a mapping of the layer  2  and/or layer  3  addresses of external device  540 K to the identifier of transceiver  155 L via which the electric signal encoding data packets addressed to the external device  540 K should be forwarded to switching device  100 . Transceiver  155 L may be defined as being communicatively coupled to I/O port  120 L of switching device  100 , wherein I/O port  120 L is mapped to I/O port  120 K electrically coupled to transceiver  140 K. 
     In certain implementations, data processing device  150  may be programmed to insert additional data (such as time stamps) into the incoming data packets before forwarding the data packets back to switching device  110 . In another illustrative example, data processing device  150  may be programmed to enqueue the incoming data packets into a buffer, and to compress the queued data packets before forwarding the data packets back to switching device  110 . 
     In certain implementations, as schematically illustrated by  FIG. 6 , system  100  may be configured to provide low latency packet replication for distribution of traffic, such as video streams and market data, to multiple external devices via respective output ports. The input data may be received by switching device  110  and transmitted to a plurality of output ports according to the port mapping provided by data processing device  150 . 
     In the illustrative example of  FIG. 6 , the electric signal representing one or more incoming data packets (or a new electric signal derived from the above referenced electric signal) may be forwarded to one or more output ports coupled to the front panel pluggable transceiver sockets  140 , as well as to data processing device  150  via one or more transceivers  155 , in accordance with a port mapping scheme. Data processing device  150  may be programmed to analyze the data packets received, and compile the port mapping scheme based on the data comprised by the incoming data packets. In an illustrative example, the resulting port mapping scheme may implement a pre-defined or dynamically selectable protocol (e.g., IGMP). Data processing device  150  may output the port mapping scheme back to switching device  110  via control interface  132 . 
     In certain implementations, system  100  may be configured to provide remote data replication in accordance with a pre-defined or dynamically configurable storage protocol (e.g., Serial Attached SCSI (SAS), Serial Advance Technology Attachment (SATA), or Fiber Channel). System  100  may route data packets between a host and a remote storage device. Switching device  110  may also forward the incoming data packets to data processing device  150 , which may analyze and/or replicate the incoming data stream. 
     In certain implementations, data processing device  110  may be configured to implement dynamic re-routing of Ethernet or similar protocols. Two circuits may be added to each of the input ports: a data observing circuit and a phase detector circuit. The data observing circuit may passively observe the data packets flowing through switching device  110 , in order to detect alignment bit patterns in accordance with a pre-defined or dynamically configurable bit encoding. The data observing circuit may produce, for each input port, the encoding offset of the signal flowing through the input port. 
     The phase detector circuit may be added to observe the relative phase of each input port as compared to a reference clock source. The phase detector circuit may produce, for each input port, an offset index indicating the phase, relative to a reference clock, of the signal flowing through the input port. 
     To ensure that the phase and encoding alignment are preserved in the data stream being received by the external device connected to the output port when the output port is being switched by switching device  110 , each output port may be equipped with a FIFO buffer of sufficient depth to store the requisite number of bits for one or more encodings being employed (e.g., 66 bits for 64b/66b encodings), and a multi-tap phase compensation device for aligning the output signal. Responsive to receiving a request to change the port mapping, switching device  110  may determine, using the data observing circuit, the skew between the alignment of the existing input port and the new input port. Based on the determined skew, switching device  110  may determine the depth of the buffering to be maintained by the FIFO buffer when the ports are switched. 
     Switching device  110  may further determine, using the phase detector circuit and taking into account the phase difference retrieved from the above referenced data structure, the phase difference between the existing input port and the new input port. Based on the determined alignment skew and phase difference, switching device  110  may determine optimal switching point in time, to ensure encoding block alignment and phase alignment. In certain implementations, the phase and encoding block alignment may be performed at the input ports, output ports, or split between the input and output ports as described herein above. 
     In certain implementations, system  100  may be configured to implement predictive packet switching, by performing low latency switching of flows in response to traffic patterns. Predictive packet switching is based on observing traffic patterns to determine future packet destinations based on preceding packets. Thus, switching device  110  may be dynamically reconfigured based on the observed packet history. Alternatively, explicit indicators in the packet flow may trigger dynamic reconfiguration of the packet flow. 
     In the first (“processing device optimized”) mode of operation, switching device  110  may transmit multiple data streams from multiple source ports to multiple destination ports via data processing device  150 . In this mode, switching device  150  may switch the traffic flow as well as analyze the data stream for an indication that transitioning to the second (“switching device optimized”) operational mode is appropriate to accelerate the traffic. 
     Upon identifying characteristics of the traffic flow between an input port and an output port that would benefit from such acceleration, data processing device  150  may identify a period of idle frames in the input signal and trigger a reconfiguration of the N×M port matrix such that the output port would be directly connected to the input port, while preserving the phase and block alignment, as described herein above. This operational mode may be referred to as the “switching device optimized” mode. 
     In this mode, data processing device  150  may continue to monitor the data flow from the input port to the output port. If a data packet is received during the mode transition, data processing device  150  may temporarily reverse the mode transition, transmit the packet, and then transition again to “switching device optimized” mode. 
     While in the “switching device optimized” mode, data processing device  150  may monitor the data flow to identify situations where the “processing device optimized” mode may be required, for instance, where packets to other destinations are being received. Data processing device  150  may queue these packets in a locally connected memory  174 , while initiating a reconfiguration of the N×M matrix such that traffic from the input port of switching device  110  would pass through data processing device  150 . As part of this transition, data processing device  150  may transmit a stream of idle frames to switching device  110  which, in turn, may forward these signals to the output port, preserving protocol link layer connectivity as required. Upon completion of the transition to the “processing device optimized” mode, data processing device  150  may transmit the queued packets. 
     In the above described illustrative examples and other implementations, system  100  may comprise a tangible computer-readable storage medium on which may be stored instructions encoding the methods described herein. “Computer-readable storage medium” herein shall refer to any non-transitory medium that is capable of storing or encoding a set of instructions for execution by a computer system that cause the computer system to perform any one or more of the methods described herein. “Computer-readable storage medium” shall include, but not be limited to, solid-state memories, optical media, and magnetic media. As the instructions encoding the methods described herein may also reside, completely or partially, within the random access memory and/or within one or more processing devices of system  100 , hence, the random access memory and processing devices may also constitute machine-readable storage media. The term “computer-readable storage medium” shall include a single medium or multiple media that store the one or more sets of executable instructions. 
     The methods, components, and features described herein may be implemented by discrete hardware components or may be integrated in the functionality of other hardware components such as ASICS, FPGAs, DSPs or similar devices. In addition, the methods, components, and features may be implemented by firmware modules or functional circuitry within hardware devices. Further, the methods, components, and features may be implemented in any combination of hardware devices and software components, or only in software. 
     The terms “first,” “second,” “third,” “fourth,” etc. as used herein are meant as labels to distinguish among different elements and may not necessarily have an ordinal meaning according to their numerical designation. 
     Unless specifically stated otherwise, terms such as “updating”, “identifying”, “determining”, “sending”, “assigning”, or the like, refer to actions and processes performed or implemented by computer systems that manipulates and transforms data represented as physical (electronic) quantities within the computer system registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     Examples described herein also relate to an apparatus for performing the methods described herein. This apparatus may be specially constructed for performing the methods described herein, or it may comprise a general purpose computer system selectively programmed by a computer program stored in the computer system. Such a computer program may be stored in a computer-readable tangible storage medium. 
     The methods and illustrative examples described herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used in accordance with the teachings described herein, or it may prove convenient to construct more specialized apparatus to perform the method  300  and/or each of its individual functions, routines, subroutines, or operations. Examples of the structure for a variety of these systems are set forth in the description above. 
     The above description is intended to be illustrative, and not restrictive. Although the present disclosure has been described with references to specific illustrative examples and implementations, it will be recognized that the present disclosure is not limited to the examples and implementations described. The scope of the disclosure should be determined with reference to the following claims, along with the full scope of equivalents to which the claims are entitled.