EP1252795A1 - Device and method for packet inspection - Google Patents
Device and method for packet inspectionInfo
- Publication number
- EP1252795A1 EP1252795A1 EP01904840A EP01904840A EP1252795A1 EP 1252795 A1 EP1252795 A1 EP 1252795A1 EP 01904840 A EP01904840 A EP 01904840A EP 01904840 A EP01904840 A EP 01904840A EP 1252795 A1 EP1252795 A1 EP 1252795A1
- Authority
- EP
- European Patent Office
- Prior art keywords
- packet
- inspector
- data
- cell
- control data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q11/00—Selecting arrangements for multiplex systems
- H04Q11/04—Selecting arrangements for multiplex systems for time-division multiplexing
- H04Q11/0428—Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
- H04Q11/0478—Provisions for broadband connections
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/54—Store-and-forward switching systems
- H04L12/56—Packet switching systems
- H04L12/5601—Transfer mode dependent, e.g. ATM
- H04L2012/5638—Services, e.g. multimedia, GOS, QOS
- H04L2012/5665—Interaction of ATM with other protocols
- H04L2012/5667—IP over ATM
Definitions
- the present invention relates to the field of high speed data packet inspection and processing for network systems, and especially (but not exclusively) to the identification of protocol encapsulation sequences and/or those portions of a packet which, according to the packet header, should be captured for use in the packet routing process.
- Fig. 1 a Transmission Control Protocol (“TCP") packet having a payload portion and a header A is shown encapsulated into an Internet Protocol (“IP”) packet by adding header portion B.
- IP Internet Protocol
- This IP packet is then itself shown encapsulated into an Ethernet packet by adding header portion C.
- TCP Transmission Control Protocol
- IP Internet Protocol
- the number of encapsulation levels for any given packet in any given internetworked system will vary, and could be greater or less than three.
- Fig. 2 It is also known to segment packets (including variable length packets) to be transmitted over certain physical interfaces into cells of a fixed shorter length for transmission efficiency, etc. This process is called segmentation and is illustrated generally in Fig. 2, where a packet is shown segmented into five distinct cells. Each cell includes a cell header, an end of packet indicator, and a payload.
- the end of packet indicator is typically a single bit which indicates whether that particular cell is the last cell of the packet. Accordingly, the end of packet indicator for the fifth cell (the left most cell in Fig. 2) is set to a "1, " while this indicator is set to a "0" for the other four cells.
- the payload of the first cell (the right most cell in Fig.
- Fig. 3 illustrates how variable length packets from different non-interleaved connections are converted into an interleaved cell stream by a variable access multiplexor, known in the art as an MPHY port scheduler, after the packets undergo segmentation (not shown) .
- a scheduler will pass one cell (or a small number of cells) to its output from each input connection in turn, resulting in an interleaved cell stream output such as that shown in Fig. 3, where the first cell of Packet 1 (C1P1) is followed by the first cell of Packet 2 (C1P2) , and so on.
- FIG. 4 illustrates one case of how Asynchronous Transfer Mode ("ATM") cells belonging to different non-interleaved connections become interleaved as a result of traversing the ATM network.
- ATM Asynchronous Transfer Mode
- cells Al and A2 are arranged back-to-back when they enter the ATM network, these cells will not necessarily be so arranged when they exit the network, and may instead be separated by cells Bl and CI, as shown in Fig. 4.
- cells Bl and CI are arranged in order to process cell streams (including interleaved cell streams of the types shown in Figs.
- the inventors hereof have succeeded at designing and developing a configurable, protocol independent packet inspection device and method whereby packets, including variable length packets, carried by a series of cells presented in an interleaved (or a non-interleaved) cell stream can be inspected on a cell-by-cell basis "on the fly" to identify, for example, the sequence of protocol encapsulations for each packet, as well as those portions of the packet which, according to the packet header, should be captured for use in the packet routing process .
- the cell inspection and/or capture functions have been pipelined and, in order to maintain the state of processing at the cell level, the mechanism of a reverse flow and forward flow of control information is introduced.
- the packet inspector of the present invention is therefore capable of operating at high speeds, and is readily scalable for even higher speed applications.
- the packet inspector of the preferred embodiment is particularly well-suited as a hardware assist to the routing process (that is, functions previously performed using time- consuming software can now be accomplished in hardware according to the present invention) .
- the invention can also be used to inspect the payload portion of packets, if desired.
- the preferred packet inspector of the present invention includes a connection table look-up unit that accesses connection-based control data from a connection table for each cell input to the packet inspector via an interleaved cell stream.
- the look-up unit forwards this connection-based control data to a data inspector (i.e., another component of the packet inspector) via a forward control path, and the data inspector uses this control data when processing the associated cell to, for example, begin determining the sequence of protocol encapsulations for the packet represented by that cell and/or the portions of that packet which should be captured.
- the data inspector updates the associated control data to summarize its findings thus far, and then sends the updated control data back towards the look-up unit via a reverse control path.
- the look-up unit stores this updated control data in the connection table.
- the look-up unit retrieves the stored control data for that connection (which, again, represents where the data inspector left off in inspecting the packet when processing of the prior cell was completed) .
- the look-up unit then forwards this next cell along with the retrieved updated control data to the data inspector, which then resumes the packet inspection process much like it would have if the first and second (and subsequent) cells of the packet had been presented to the data inspector back-to-back.
- the preferred data inspector used within the packet inspector of the present invention includes a number of substantially identical and configurable stages, referred to as inspection units, which through the exchange and updating of control data, can collectively traverse a protocol tree structure to determine the sequence of protocol encapsulations for any given packet, as well other important packet-specific information.
- the scalability of the preferred packet inspector for speed is achieved through the highly pipelined operation of these inspection units, which have a low interconnect complexity.
- the pipelining of the inspection and/or capture operations by the inspection units is preferably implemented via use of forward and reverse control flow paths which permit the exchange of state information between any two cells of the same packet.
- Such pipelining provides two distinct advantages: it facilitates high speed operations; and it facilitates inspection of packets to a greater depth (including into the packet payload, if desired) .
- the number of inspection units in the pipeline determines the depth to which a packet can be examined.
- the manner in which the inspection units are configured is a function of the protocols, protocol sequences and number of encapsulation layers to be supported.
- the inspection units can also be reconfigured as new protocols come into use. While some of the principal features and advantages of the invention have been described above, a greater and more detailed understanding of the invention may be attained by referring to the drawings and the detailed description of the preferred embodiments which follows. Brief Description of the Drawings
- Fig. 1 is a diagram illustrating a packet undergoing a sequence of protocol encapsulations
- Fig. 2 is a diagram illustrating the segmentation of an encapsulated packet into several cells having a fixed size
- Fig. 3 illustrates how variable length packets from different non-interleaved connections can be converted into an interleaved cell stream
- Fig. 4 illustrates how ATM cells belonging to different non-interleaved connections can become interleaved as a result of traversing the ATM network
- Fig. 5 is a block diagram of the preferred packet inspector of the present invention.
- Fig. 6 is a functional block diagram of the packet inspector shown in Fig. 5 and an exemplary environment
- Fig. 7 is a more detailed functional block diagram of the packet inspector shown in Fig. 6 and the series of stages included within its preferred data inspector;
- Fig. 8 illustrates a simplified protocol tree structure and how it is examined by multiple stages of the preferred data inspector
- Fig. 9 is a detailed functional block diagram of a representative stage of the preferred data inspector.
- Fig. 10 is a functional block diagram of the window extractor shown in Fig. 9;
- Fig. 11 is a functional block diagram of the data comparator shown in Fig. 9;
- Fig. 12 is a functional block diagram of a representative CCU for the data comparator shown in Fig. 11;
- Fig. 13 is a functional block diagram of the CAM array shown in Fig. 9;
- Fig. 14 is a functional block diagram of a representative row of the CAM array shown in Fig. 13.
- a packet inspector according to one preferred embodiment of the present invention is illustrated in Fig. 5 and is indicated generally by reference character 200.
- an interleaved cell steam is input to the packet inspector 200, which, in turn, outputs an interleaved cell stream along with associated control data.
- This control data preferably represents the sequence of protocol headers present in each packet processed by the packet inspector 200 (i.e., the "classification" of each packet) and/or the particular portions of those packets which should be captured for use in the packet routing process.
- control data represents both packet classifications and capture data
- the packet inspector 200 is configured for ascertaining this information from the input cell steam "on the fly" without modifying the cell stream or reassembling packets.
- the packet inspector 200 of this preferred embodiment is therefore particularly well suited for high speed networking applications.
- the packet inspector 200 is capable of ascertaining the control data from cells presented to the packet inspector via an interleaved cell stream, the packet inspector is also well suited for ascertaining the control data from cells presented to the packet inspector via a non-interleaved cell stream.
- FIG. 6 A more detailed block diagram of the preferred packet inspector 200 and an exemplary environment is provided in Fig. 6.
- the packet inspector 200 includes a connection table lookup unit ("CTLU") 202, a connection table (“CT”) 204 and a data inspector 206.
- CTLU 202 is connected to the CT 204 via a data link 208 through which the CTLU 202 ' can retrieve and store control data to the CT 204, as further explained below.
- the preferred embodiment of packet inspector 200 also includes a cell path 210 along which the interleaved (or a non-interleaved) cell stream can propagate from the input of the inspector 200, through the CTLU 202 and the data inspector 206, to the output of the packet inspector 200. Also shown in Fig. 6 is a forward control path 212 which extends from the CTLU 202, through the data inspector 206, to the output of the packet inspector 200, as well as a reverse control path 214 which extends from within the data inspector 206 to the CTLU 202.
- the cell path 210 and the forward control path 212 preferably extend from the output of the preferred packet inspector 200 to a controller 216, which decides whether to forward cells to a packet buffer 218 via a cell path 220, and whether to send cells and related capture instructions to an extractor 222 via a cell path 224 and an instruction path 221, respectively.
- the extractor 222 is also connected to a protocol processing unit ("PPU") 226 via a data link 228.
- PPU protocol processing unit
- the CTLU 202 When the first cell of a packet (of any length) arrives at the CTLU 202 over the cell path 210, the CTLU will identify the connection identification ("CID") of the packet. As appreciated by those skilled in the networking arts, this CID uniquely identifies the virtual or physical connection to which the packet belongs, and over which the cells of that packet arrive in order.
- the CTLU 202 uses this CID to index the CT 204 for retrieving connection-based control data that will be used in processing the first cell of the packet within the data inspector 206.
- the CTLU 202 forwards this control data to the data inspector 206 via the forward control path 212 while, at the same time, the first cell of the packet is forwarded (i.e., clocked) to the data inspector 206 via the cell path 210.
- the first cell of the packet and its corresponding control data are preferably forwarded to the data inspector 206 along parallel paths.
- the data inspector 206 then processes that portion of the packet header which is carried by the first cell using the corresponding control data.
- the data inspector 206 may only begin to identify from this first cell the packet classification and those portions (typically in terms of bytes) , if any, of the packet that should be captured for use in the subsequent routing process. Thus, when processing of this first cell is complete within the data inspector 206, the data inspector updates (i.e., modifies and/or augments) the control data associated with that cell to represent what has been determined for the packet thus far (i.e., to represent the state of processing for that packet) . This updated control data is then forwarded by the data inspector 206 back towards the CTLU 202 along the reverse control path 214.
- the updated control data there will be sufficient time for the updated control data to propagate back to the CTLU 202, and to be stored in the CT 204 (preferably in place of the original control data for that CID) , before the second cell of the same packet is forwarded to the data inspector 206 by the CTLU 202.
- the CTLU identifies and uses its CID (which is the same as the CID for the first cell of that packet) to retrieve the updated control data back from the CT 204, and then forwards the second cell to the data inspector 206 via the cell path 210 while, at the same time, the updated control data is forwarded to the data inspector 206 via the forward control path 212.
- the data inspector 206 is capable of resuming processing of this packet in a seamless manner (from the standpoint of the data inspector) upon the arrival of the second cell and the updated control data. In other cases, there will not be sufficient time for the updated control data to propagate back to the CTLU 202, and to be stored in the CT 204 in place of the original control data for that CID, before the second cell of the same packet is forwarded to the data inspector 206 by the CTLU 202.
- the data inspector is also configured to compare and replace control data propagating within the data inspector 206 on the forward control path 212 with control data (for the same packet) propagating on the reverse control path 214, as further explained below.
- control data for the same packet propagating on the reverse control path 214.
- the forward control path 212 and the reverse control path 214 together comprise a control link and, in this preferred embodiment, are two physically distinct paths.
- the forward and reverse control paths are also clocked in such manners that it is impossible for the CTLU 202 to forward the second cell of the packet to the data inspector 206 during the period of time in which the control data updated upon processing the first cell is delivered to the CTLU 202 via the reverse control path 214 and stored in the CT 204 via the data link 208.
- the CTLU 202 forwards the first cell of the packet to the data inspector 206 along with the original connection-based control data that was retrieved from the CT 204.
- the CTLU 202 modifies the original control data stored in the CT 204 for this CID so as to indicate that the first cell is now being processed in the data inspector 206.
- the process of saving the updated control data in place of the original control data in the CT 204 will remove the indication that the first cell is being processed in the data inspector 206.
- the CTLU will forward the second cell of the packet to the data inspector 206 along with the control data retrieved from the CT 204, which indicates that the first cell is still being processed.
- the data inspector 206 will interpret this indication as an indication that the second cell is awaiting a transfer of updated control data from the reverse control path 214 within the data inspector, and will not attempt to process the packet information carried by the second cell until the transfer of the updated control data occurs .
- the manner in which the preferred packet inspector 200 processes any particular cell of a packet and the next cell of the same packet is the same as that described above for said first and second cells, with one significant exception.
- the CTLU 202 When the CTLU 202 receives the last cell of a packet, the CTLU will recognize this cell as such via the end of packet indicator that is preferably provided immediately behind the cell header (see Fig. 2) and will store this information in the CT 204.
- the CTLU will recognize from the control data stored in the CT 204 that this next cell is the first cell of a new packet.
- the CTLU will therefore reset the CT 204 for this CID such that any updated control data for the prior packet is replaced with the original connection-based control data.
- the CTLU 202 will then forward this first cell of the new packet to the data inspector 206 along with the original connection-based control data.
- the CT 204 serves two important roles: it acts as a repository of initial connection-based information that is used by the data inspector 206 when processing the first cell of a packet; and it acts as an intermediate repository of updated connection-based information which represents the state of processing already initiated within the data inspector 206.
- the controller For each cell received via the cell path 210 by the controller 216, the controller also receives associated control data via the forward control path 212.
- the controller 216 uses this control data to determine "on the fly” whether to send the received cell to the packet buffer 218, and whether to send the received cell along with capture instructions (contained within or derived from the control data) to the extractor 222 via the cell path 224 and the instruction path 221, respectively.
- the extractor 222 Upon receiving a cell and corresponding capture instructions from the controller 216, the extractor 222 sends to the PPU 226 only those portions of the received cell that are needed by the PPU 226, as determined from the capture instructions, so as to efficiently use the typically limited bandwidth provided on the input side of the PPU 226.
- the packet inspector 200 can begin processing a certain packet using the first cell of that packet, and then continue processing prior packets as additional cells of the prior packets arrive, and/or process subsequent packets as their cells arrive, before continuing processing of the "certain packet" mentioned above when one or more additional cells of that packet arrive.
- the preferred embodiment of packet inspector 200 can process multiple cells of multiple packets in this manner simultaneously, as will be apparent) .
- the preferred packet inspector 200 can therefore ascertain important control information for packets represented by cells arriving over an interleaved cell stream without reassembling the packets, and without interrupting the cell flow.
- the preferred packet inspector 200 of the present invention is shown in greater detail in Fig. 7.
- the data inspector 206 comprises a number of preferably identical stages, referred to hereinafter as inspection units 230, 232, 234, 236, connected together in series.
- Fig. 7 also illustrates how the cell path 210, the forward control path 212 and the reverse control path 214 extend between each pair of adjacent inspection units.
- the purpose of each inspection unit is to examine the packet header (or a portion thereof) at the cell level to determine at least a portion of the protocol encapsulation sequence for that packet, and to also determine whether any portion (s) of that packet should be captured for forwarding to the PPU 226 shown in Fig. 6.
- Fig. 8 This tree structure represents only a limited number of possible protocols, layers and sequences of protocol encapsulations. It does illustrate, however, that although a packet may have been encapsulated using a number of communication protocols, there are certain dependencies in any such encapsulation process, as indicated in Fig. 8. For example, a TCP packet cannot (at least currently) be encapsulated directly into an Ethernet packet, but must first be encapsulated into an IP (i.e., IPv4 or Ipv6) packet which, in turn, can be encapsulated into an Ethernet packet.
- IP i.e., IPv4 or Ipv6
- the inspection units sequentially examine portions of the packet header to determine the path to be taken at each possible juncture in the tree, and this will now be explained in terms of a specific example.
- the lowest level protocol for any given packet i.e., GE, ATM or SONET, for the simplified tree structure of Fig. 8
- an identifier for this protocol can therefore be stored in the CT 204 as connection-based data (using the PID field, explained below) .
- this information can be provided as a starting point to the data inspector 206 via the forward control path 212.
- Inspection Unit A is the inspection unit configured to identify the first branch in the tree (the next higher level protocol) for such a packet. By examining certain bytes in the first cell of the packet (as determined from a FWSP field, explained below) , Inspection Unit A may determine that the next higher level protocol is Ethernet (because the examined bytes match a predefined pattern indicative of the Ethernet protocol) .
- Inspection Unit A will then summarize this finding in the control data associated with the first cell (by modifying the PIDS field, explained below) , will indicate in that control data the particular bytes of the packet (if any) that it identified as needing to be captured for the PPU 226 (by modifying the CM field, explained below) , will further indicate in the control data the next set of bytes in the packet that should next be examined (by modifying the WSP field, explained below) , and will then forward this updated control data along to the next inspection unit via the forward control path. If processing of the first cell is complete, Inspection Unit A will also place the updated control data in the reverse control path 214 so that it ultimately becomes associated with the next cell of the same packet in one of the manners described above.
- Inspection Unit B Using the information determined by Inspection Unit A, Inspection Unit B will identify the next branch in the tree (i.e., the protocol used in the level above the Ethernet level) , either by continuing the examination of the first cell or by examining the second cell of the packet if examination of the first cell is complete. If this examination determines that the next level protocol is the IPv4 protocol, Inspection Unit B will further update the control data for the associated cell to summarize this finding, to identify the next set of bytes to be examined, to indicate whether it identified any portions of the packet that should be captured, etc. The final examination of the exemplary packet may be done by Inspection Unit C which, upon examining the bytes specified for examination by Inspection Unit B, may determine that the protocol used in the level above the IPv4 level is the TCP protocol. Inspection Unit C will then update the control data associated with the cell it examined for forwarding to the output of the preferred packet inspector 200 via the forward control path 212.
- the next branch in the tree i.e., the protocol used in the level above the Ethernet level
- Inspection Units A, B and C were each described above as fully identifying a protocol for one of the encapsulation levels, it is possible that the examination of a cell by, for example, Inspection Unit B, will merely narrow the set of possible protocols at a given location in the tree. In that event, Inspection Unit B will summarize what it determined for Inspection Unit C, and Inspection Unit C will then use these findings to continue the process started by Inspection B. Note that Inspection Units A, B and C discussed above are not necessarily the first three inspection units ' 230, 232, 234 shown in Fig. 7, and are not necessarily adjacent to one another. The particular inspection unit that is used to ⁇ examine the contents of any particular cell will be a function of how each inspection unit is configured.
- the particular inspection unit that is used to examine the contents of any particular cell is also a function of which inspection unit was used to examine the contents of the prior cell of the same packet. This is because, for ease of programming, no inspection unit will examine the contents of more than one cell of any given packet, and each cell of a packet will not be examined by an inspection unit that precedes (i.e., that is further to the left in Fig. 7 than) the inspection unit that examined the contents of the prior cell of the same packet .
- every packet is considered to have a protocol sequence classification, including packets having only one level of encapsulation (i.e., a sequence of length one).
- a protocol sequence classification including packets having only one level of encapsulation (i.e., a sequence of length one).
- four inspection units 230, 232, 234, 236 are shown in Fig. 7, the actual number of inspection units required is a function of the number of possible packet encapsulation sequences to be supported and the length of those sequences in any given application of the invention.
- fourteen identical inspection units are connected in series in the manner illustrated in Fig. 7, as this number is believed to be sufficient for the preferred packet inspector 200 to identify virtually all possible packet classifications at any given location within a network .
- the following control fields are preferably stored in the CT 204 for each connection to be supported: (1) the end of packet flag (“EOP”), which indicates whether the prior cell for this connection was the last cell of a packet (as noted above, this is the flag which, when set, prompts the CTLU 202 to reset the CT 204 for this connection upon the arrival of the next cell, which will necessarily be the first cell of a new packet); (2) an identification of the first stage (“Fstage”), i.e., inspection unit, that should begin processing the first cell of a new packet; (3) a first window starting pointer (“FWSP”), which indicates the location in the first cell of a packet where the data inspector 206 should begin its examination; (4) a packet forward flag ( "Pkt_Forward”) which, when set, indicates that the entire packet should be forwarded to the packet buffer 218; (5) a packet capture flag ( "Pkt_Capture”) which, when set, indicates that the entire packet should be captured for forwarding to the PPU 226; (6) a discard flag ("Disc
- the PID field is three bits long.
- the PID for any given connection can initially identify one of up to eight possible protocols at the lowest encapsulation level.
- Several of the fields stored in the CT 204 are included in the control data that propagates along the forward control path 212 (hereinafter referred to as "forward control data" or "FCD") in parallel with an associated cell propagating on the cell path 210.
- the FCD associated with each cell is utilized by the series of inspection units in the preferred data inspector 206 to conduct the sequential identification of the protocol encapsulations for each packet.
- the FCD into inspection unit 230 (i.e., Stage 0) of the data inspector 206 includes the following fields: CID; Pkt_Forward; Pkt_Capture; Stage; WSP; and CM.
- CID CID
- Pkt_Forward Pkt_Capture
- Stage WSP
- CM CM
- Fstage and FWSP are used in lieu of the Stage and WSP fields.
- the FCD for each cell also includes: a start-of-packet ("SOP") flag (which is produced by the CTLU 202 from the EOP flag and which, when set, indicates that the associated cell is the first cell of packet) ; a PIDS string, which is preferably a twenty-four bit space holder generated by the CTLU, and which can be used to record the sequence of protocol encapsulations identified by the data inspector 206 from the examination of the associated cell; and a turn (“Turn”) flag which, when set, indicates that updated control data for the associated cell has been sent over the reverse control path.
- SOP start-of-packet
- PIDS string which is preferably a twenty-four bit space holder generated by the CTLU, and which can be used to record the sequence of protocol encapsulations identified by the data inspector 206 from the examination of the associated cell
- Turn turn
- the forward control flow may also include a PPU identifier, which may be necessary when more than one controller 216 and/or PPU 226 is used on the output side of the preferred embodiment of the packet inspector 200 shown in Fig. 6.
- the PIDS string When first generated, the PIDS string comprises the three bits stored in the CT 204 under the PID field. Thus, when the PIDS string for the first cell of a packet is generated, it merely identifies the lowest level protocol for the corresponding packet. Thereafter, each stage of the data inspector 206 that identifies, through examination of the associated cell, another level in the packet encapsulation sequence can add three more bits to the PIDS string to identify its findings, and/or can modify. the existing string such as when an additional protocol level was not fully determined. Thus, the PIDS string associated with any given cell can identify a sequence of up to eight protocol encapsulations.
- the PIDS string preferably behaves as a stack for the set of PID values obtained from each inspection unit in which the associated cell undergoes examination. This stack has a last in, first out structure with push and pop operations that can be conducted in the same cell time.
- the three bits that were most recently added to the PIDS string are considered the PID field for the associated cell.
- this PID is extracted from the PIDS string and placed on the reverse control path where it will ultimately become associated with the next cell of the same packet (and thus become the first three bits of that next cell ' s PIDS string) .
- the PIDS string does remain in the forward control path at all times, and is thus ultimately forwarded to the controller 216 shown in Fig. 6 along with the associated cell.
- other of the fields in the associated FCD are modified and passed to subsequent inspection units to facilitate the sequential examination.
- the WSP is used by an inspection unit to identify the particular portions (preferably in terms of bytes) of a packet to be examined. As a result of this examination, the inspection unit will compute a new WSP to identify the next series of bytes to be examined in a subsequent inspection unit.
- the Pkt_Forward and Pkt_Capture flags may also be set as a result of the examination.
- the Stage field may also be modified by the inspection unit to reflect the next inspection unit that must continue the processing of this particular packet (which is a function of how each inspection unit is programmed) .
- each packet may be processed a maximum of one time in each inspection unit and, for ease of programming, if a cell is examined in inspection unit k, the next cell of the same packet will not be examined any sooner than in inspection unit k+1. Thus, many cells will propagate through various inspection units without being examined by those inspection units. Further, in this particular embodiment of the invention, which focuses on ascertaining control data for use in the packet routing process, once the classification and capture data for a packet have been fully determined, the remaining cells of the packet will not be examined further other than to determine whether the FCD for each cell should be replaced with updated control data propagating on the reverse control path 214.
- the inspection unit After the WSP is updated by an inspection unit in accordance with the examination conducted, and before the updated FCD and the associated cell are forwarded to the next inspection unit, the inspection unit will determine whether the updated WSP points to a portion of the packet that is carried by the particular cell in question. For example, in the case of the first cell of a packet, if the updated WSP identifies the starting byte of the next examination as byte z, and z is greater than 64, the inspection unit will know that this starting byte is carried by a subsequent cell (because in this preferred embodiment, each cell is only 64 bytes) , and that processing of the first cell is complete.
- the inspection unit will forward the current cell and the updated FCD to the next stage of the data inspector 206 (or to the controller 216, in the case of the last stage of the data inspector 206) , and will also place the updated control data in the reverse control path 214 so that it will ultimately become associated with the next cell of the same packet.
- the CTLU 202 makes a notation in the CT 204 that this cell is being processed in the data inspector 206. This is done by setting the Stage field for this connection to a value of N in the CT 204.
- this next cell of the same packet arrives at the CTLU 202 before updated control data is obtained by the CTLU 214 from the reverse control path 214 and stored in place of the current control data in the CT 204, then this next cell will be forwarded along with the current control data (including the Stage value of N) to the data inspector 206.
- each inspection unit will interpret the Stage value of N as meaning that the cell should not be processed in that particular inspection unit. As a result, the cell will not be examined by any inspection unit until the FCD for this cell is replaced with CD generated using the prior cell and its associated FCD.
- FIG. 9 A detailed block diagram of a preferred inspection unit 250 for the preferred data inspector 206 shown in Fig. 7 is provided in Fig. 9.
- the inputs to the inspection unit 250 include the cell path 210, the forward control path 212, and the reverse control path 214.
- the outputs from the inspection unit 250 include the cell path 210, the forward control path 212, and the reverse control path 214.
- a turn signal path 252 branches from the forward control path 212 to a FIFO unit 276, and is used to provide the "Turn" signal to the FIFO 276 (three clock cycles ahead of the associated cell) as further described below.
- the inspection unit 250 also includes a window extractor 256, a data comparator 258, a CAM array 260, and a decision controller 262. Positioned within the cell path 210 are three delay elements 264, 266, 268, and positioned within the forward control path 212 are three delay elements 270, 272, 274. The purpose of the delay elements 262-274 is to ensure that cells and their corresponding FCD are synchronized as they propagate through the inspection unit 250. Also shown in Fig. 9 are a FIFO delay block 276, a path coupler 278, and a compare and replace module for controlling the replacement of FCD with reverse control data ("RCD”), when appropriate, as described below.
- RCD reverse control data
- the window extractor 256 includes an 8 byte input 282 (which is branched from the cell path 210, as shown in Fig. 9), a controller 284, a selector 286, two 8 byte registers 288, 290, and an 8 byte output 292.
- the selector 286 receives instructions at an appropriate time from the controller 284 so as to select 8 consecutive bytes from the cell starting at the location designated by the WSP (or the FWSP, in the case of the first cell of a packet) . These selected 8 bytes (designated as bytes DB0-DB7) are then provided to the data comparator 258 via the output 292.
- the preferred data comparator 258, shown in Fig. 11, inspects bytes DB0-DB7 using thirty-two comparison control units ("CCUs") which are pre-configured via a configuration bus 294. Note that to simplify the illustration, only twenty-four CCUs are shown in Fig. 11. Each CCU (shown in greater detail in Fig.
- the Setup, CompParameter, Mask, and Type inputs are programmable variables whose values are a function of the protocol sequences to be supported, the values encoded for processing each sequence, and the portion of the encapsulation sequence (i.e., the location in a tree structure) that is currently under examination.
- the output of each CCU is a single bit representing the result of the comparison. When taken together, these bytes form a thirty-two bit vector that is passed to the CAM array 260.
- the preferred data comparator 258 may compare the chosen input byte against several predefined data patterns, including patterns of varying lengths, where each pattern may represent a possible encapsulation protocol .
- This thirty-two bit vector when combined with a 3 bit PID taken from the FCD, forms an index into a fifteen row content addressable memory (CAM) array 260.
- the purpose of the CAM array is to reduce the 32 bit output of the data comparator to one of sixteen possible decisions.
- Each row of the CAM array (shown in Fig. 14) consists of a value and a mask.
- the input vector is first XNOR-ed with the CAM_Entry value, then OR-ed with the CAM_Mask value. A match is found if all bits in the result are set to 1, as determined by the AND gate.
- the output of the CAM array 260 is the row number (0-15, with 15 representing the bottom row) of the highest (lowest numbered) matching row. If no matches are found in the top fifteen rows, the output will be the bottom row since the it is a dummy row that is always asserted.
- the output of the CAM array 260 is used as an index into a table within the decision controller 26
- This table within the decision controller 262 contains sixteen entries, the fields of which contain information about what operations to perform next, including updating the WSP and the PIDS. These fields are described in detail in section 5.3 of Exhibit A, which is a programmer's guide to the preferred data inspector 206. All fields in this table are loaded from microcode (as are the various fields used in the data comparator 258 and the CAM array 260) via the programmable input line 298 shown in Fig. 9. Note that if the "Stage" variable received by the decision controller 262 indicates that the associated cell should not be processed in this particular stage of the data inspector, the decision controller will not update the forward control data for that cell, and will simply ignore the lookup index received from the CAM array 260. With further reference to Fig.
- the decision controller 262 determines (via the updated WSP) that processing of the cell is complete, it inserts the updated control data into the reverse control .path 214 via the path coupler 278 and sets the "Turn" flag in the FCD for the associated cell.
- the FCD is preferably sent to the next stage of the data inspector three clock cycles ahead of its associated cell and, therefore, reaches the next stage three cycles ahead of its associated cell.
- This Turn signal informs the FIFO 276 of the subsequent stage not to forward RCD at that time. This allows the updated control data from the decision controller 262 to be placed in the reverse control path immediately, so that it can become associated with the next cell of the same packet, which could be immediately behind the cell just processed in this inspection unit .
- the turn signal also prevents multiple RCD units from competing with one another at the path coupler 278.
- this RCD will enter the FIFO 276, which provides the CIDs of each RCD unit stored therein to the compare and replace module 280, as shown in Fig. 9.
- This module 280 then compares the CID of the "oldest" (i.e., left most, in Fig. 9) RCD unit with the CIDs of all FCD units propagating in the forward control path 212. If a match is found (indicating that the FCD and the RCD is for the same connection, and thus the same packet) , the compare and replace module (which will prioritize a match will the FCD of the oldest cell; the right most in Fig.
- FCD If there is a match between the CIDs in any given set of FCD and RCD, but the SOP flag in the FCD is set (i.e., indicating that the FCD is associated with the first cell of a packet) , then the FCD is not replaced by the RCD, and the RCD is simply purged from the reverse control path (to prevent it from propagating back and incorrectly updating the CT 204) .
- the forward and reverse control paths are clocked on different cycles .
- the preferred timing for this overall process is as follows: the RCD is clocked; the FCD is compared with and then replaced by the RCD, when appropriate, and then the FCD is clocked.
- the reverse control path is clocked, the last (most recently added) entry in the FIFO 276 is compared against the FCD that is about to .be shifted into the next stage.
- the forward control path is clocked, that same entry in the FIFO 276 is compared against the next two FCD units. Additionally, all other entries in the FIFO are compared against the FCD that was just shifted into this stage in the manner described above.
- the packet inspector 200 and the components thereof illustrated in Figs. 5-14 are implemented in an application specific integrated circuit ("ASIC") .
- ASIC application specific integrated circuit
- the packet inspector of the present invention has been described in detail only in the context of identifying networking control information for use in packet routing processes, the packet inspector may also be readily configured to inspect packet payloads for particular data (i.e., pattern matching) or for data in a particular range (e.g., less and/or greater than comparisons) , either instead of or in addition to performing the networking control functions described above.
- pattern matching i.e., pattern matching
- range e.g., less and/or greater than comparisons
- configuring the packet inspector to perform packet payload inspection functions would merely require minor programming changes, including modifications of the CTLU and DCB table contents, the CAM entries and masks, etc., and would not require any significant hardware changes.
- IPE Internet Protocol Engine
- the first phase of programming the Packet Inspector involves defining all the Protocol ID Sequences (PIDS) that the Packet Inspector will generate and subsequently send to the PPUs. This list is based on the protocol scenarios described in the Protocol Processing Detailed Design Document. This list will be used to generate a jump table for the PPU protocol processing software.
- PIDS Protocol ID Sequences
- the second phase of programming the PI is to generate the CCB, CAM and DCB tables for each of the 14 stages of the DIU.
- the DIU consists of a pipeline of 14 identical "stages" connected together in series. The above figure shows one such stage.
- the purpose of the DIU is to identify the sequence of protocol headers present in each packet passing through it, and to generate control information used by other parts of the system to process the packet.
- the inspection of packets is complicated by the fact that each packet is divided into one or more 64 byte cells, and the cells from multiple packet streams arrive at the DIU interleaved with each other.
- the DIU In order to handle interleaved packets, the DIU must be able to save state information about each packet (or flow) until the next cell of the flow arrives.
- the CLU provides the DIU with this capability.
- the first stage of the DIU receives cells fiom me IFU, as well as saved state information (the forward control flow) from the CLU.
- One cell is received every 8 clock cycles, with 64 bits of the cell being latched on each clock cycle.
- the control information is all latched on the same clock edge, once every 8 clock cycles (hereafter referred to as one cell time).
- One of the fields in the forward control flow is the Window Starting Pointer (WSP). This value is used by the Window Extraction Block to select any 8 consecutive bytes from the cell.
- WSP Window Starting Pointer
- Comparison Block where they are inspected by 32 pre-configured Comparison Control Units (CCU)- Ea° n CCU is programmed with a value (1 byte) to compare against, the type of comparison (equals or greater-than- or-equal-to), a one byte mask (only 8 of the 32 CCUs support a mask) that is AND-ed with the data byte before comparison, as well as a two bit number to select one of the 8 data bytes to compare against.
- the byte number to compare against is determined by adding the byte selector to the row number of the CCU.
- each CCU can compare against one of 4 of the 8 data bytes, which allows for as many as 16 CCUs to compare against a single data byte.
- the output of each CCU is a single bit representing the result of the comparison.
- these bits form a 32 bit vector that is passed to the CAM Block.
- This vector when combined with a 3 bit PID and 1 bit DestPPU field taken from the forward control flow, forms a 36 bit "index" into a 15 row Content Addressable Memory (CAM).
- Each row of the CAM consists of a value and a mask (36 bits each).
- the input vector is first ExclusiveNOR-ed with the CAM value, then OR-ed with the mask A match is found if all 36 bits in the result are set to 1.
- the output of the CAM is the row number (0-14) of the first (lowest numbered) matching row. If no matches are found, the output is 15 (OxF). This number, will be used as an index into the DCB Table, and is therefore passed to the DCB.
- the DCB contains a table with 16 entries, the fields of which contain information about what operations to perform next These fields are described in detail in section 5.3.
- DFU Distributor Flow Unit
- diu urn One of the forward direction control signals associated with each cell is called diu urn. This signal is set to 0 when the cell enters the first stage. When a cell gets turned around, this signal gets set to 1, and it remains that way until the cell exits the pipeline. Each cell can only get turned around once as it travels through the pipeline.
- the forward flow of control information consists of a 3-entry shift register.
- Each entry contains all the control information associated with a particular data cell. Once every cell time, all the control information in this shift register is shifted over, with the last entry getting shifted to the first entry in the next stage.
- the backward flow is not a shift register. It is a FIFO with a maximum iwe, of 4 entries.
- both the forward and backward direction control flows are each advanced once per cell time (8 clocks), they are not advanced on the same clock. This is because every control cell traveling in the reverse direction must be compared with every control cell traveling in the forward direction (as they pass each other). Comparisons can only occur between control cells within a single stage. Therefore, in order to prevent "ships passing in the night", nie forward and backward flows must be clocked on different cycles.
- the last (most recently added) entry in the FIFO is compared against the forward control cell that is about to be shifted into the next stage.
- that same entry in the FIFO is compared against the next two forward ⁇ ontrol cells.
- the other entries in the FIFO are compared against the forward control cell that was just shifted into this stage.
- the Protocol ID Sequence keeps a record of all encapsulations, which have been found by each DIU stage.
- Each DIU stage can append the new PID to the PIDS and shift the remaining part to the right, or delete the last PID and shift the remaining part to the left, or simply replace the last PID.
- the type of update to the PEDS is determined by die UPID and DPID bits in the DCB table.
- PID 2 is replaced by new PID 3.
- the set of valid PIDS forms a tree structure, where each node of the tree (a PID) represents a particular protocol header, and each leaf represents a particular type of packet with a particular encapsulation.
- a PID node of the tree
- each leaf represents a particular type of packet with a particular encapsulation.
- the actual numeric value of each PID is arbitrary.
- the PIDS can be used as an index into a jump table containing flie entry points (function pointers) to the protocol processing code specific to particular types of packet or encapsulations.
- the comparison control units are arranged as rows and columns as shown in the figure below.
- the table consists of 32 comparison units and has been arranged as 4 columns and 8 rows.
- the CAM block checks for a matching entry in the CAM array and get the corresponding Table Index [0 - OxE]. If there is no match for the input data in the CAM, table index will be OxF. This table index is passed to the Decision Control Block.
- This section describes how to configure CAM entries from CPU.
- Each CAM Entry uses 72 bits. So Six registers are allocated for one CAM entry.
- One entry in the CAM table is as follows:
- the CAM block in one DIU stage requires 15 such table entries.
- the DCB gets the Lookup Table pointer from the CAM block and using this pointer extracts the lookup table entry. Based on the lookup table entry, new settings (protocol information and capture information) for the next Data Inspector are calculated.
- WSP Window Starting Pointer
- PID is the 3-bit value that gets appended to the PIDS if the UPID bit is set
- UPID and DPID specify how the PIDS should be updated. First, if DPID is set, the most recent PID in the PIDS is removed (popped), then if UPID is set, PID is added (pushed) on to the PIDS.
- STAGE is the next stage in which this packet should be inspected. If STAGE is OxF, then no further processing will be done on this packet
- Any bits that are set in flie PCM identify bytes of flie packet that should be captured.
- the bit positions of bits that are set in the PCM represent the offsets from the WSP of the bytes of the packet that should be captured. For example, if bits 4..7 of the PCM are set, then bytes WSP..WSP+3 of this cell (or of the next cell, if WSP > 60) will be captured.
- the DIU will verify the checksum of an IP header (without options) starting at the WSP.
- the WSP is incremented by PL BEFORE being used as the starting point for the checksum calculation.
- the result of the checksum verification is passed to the PPUs using the ICE (Ip Checksum Error) field in the control cell header.
- HSP is the starting point for the hash calculation (see description below).
- the DFU the next unit to process the cells after the DIU
- the DFU will calculate a hash over HLENGTH bytes of the current cell, starting at WSP+HSP bytes from the beginning of the cell
- the WSP is incremented by PL bytes AFTER the calculation of the starting point of the hash is made. If WSP+HSP+HLENGTH is greater than 64, then only flie bytes from WSP+HSP through the end of the current cell are used for the hash calculation. The calculation does NOT 1 continue into the next cell.
- the STOPE ⁇ Q can be used to stop enqueuing the current packet into the cell buffer. This can be used if CP is set and there is no need to store the packet in the cell buffer. However, at least one cell will have been already stored in the cell buffer, and will need to be dequeued later by the PPU.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
Claims
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US494235 | 1983-05-13 | ||
US49423500A | 2000-01-30 | 2000-01-30 | |
PCT/US2001/001002 WO2001056327A1 (en) | 2000-01-30 | 2001-01-11 | Device and method for packet inspection |
Publications (1)
Publication Number | Publication Date |
---|---|
EP1252795A1 true EP1252795A1 (en) | 2002-10-30 |
Family
ID=23963626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
EP01904840A Withdrawn EP1252795A1 (en) | 2000-01-30 | 2001-01-11 | Device and method for packet inspection |
Country Status (3)
Country | Link |
---|---|
EP (1) | EP1252795A1 (en) |
AU (1) | AU2001232784A1 (en) |
WO (1) | WO2001056327A1 (en) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2006002821A1 (en) * | 2004-07-03 | 2006-01-12 | Siemens Ag | Method for operating an atm-based multiplexer |
US7784094B2 (en) | 2005-06-30 | 2010-08-24 | Intel Corporation | Stateful packet content matching mechanisms |
US8239341B2 (en) | 2006-12-08 | 2012-08-07 | Hangzhou H3C Technologies Co., Ltd. | Method and apparatus for pattern matching |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3008899B2 (en) * | 1997-07-14 | 2000-02-14 | 日本電気株式会社 | Loose source routing of IP packets in ATM networks |
EP0967756A4 (en) * | 1997-12-25 | 2005-11-30 | Toshiba Kk | Atm repeater and network including the same |
FI980826L (en) * | 1998-04-09 | 1999-10-10 | Nokia Networks Oy | Overload management in a telecommunications network |
-
2001
- 2001-01-11 EP EP01904840A patent/EP1252795A1/en not_active Withdrawn
- 2001-01-11 AU AU2001232784A patent/AU2001232784A1/en not_active Abandoned
- 2001-01-11 WO PCT/US2001/001002 patent/WO2001056327A1/en not_active Application Discontinuation
Non-Patent Citations (1)
Title |
---|
See references of WO0156327A1 * |
Also Published As
Publication number | Publication date |
---|---|
AU2001232784A1 (en) | 2001-08-07 |
WO2001056327A9 (en) | 2001-11-08 |
WO2001056327A1 (en) | 2001-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6157641A (en) | Multiprotocol packet recognition and switching | |
US9912590B2 (en) | In-line packet processing | |
US5598410A (en) | Method and apparatus for accelerated packet processing | |
US7095742B2 (en) | Packet processing unit | |
US6611524B2 (en) | Programmable data packet parser | |
US7835375B2 (en) | Method and apparatus for providing multi-protocol, multi-stage, real-time frame classification | |
US6631466B1 (en) | Parallel string pattern searches in respective ones of array of nanocomputers | |
US8018937B2 (en) | Pipelined packet switching and queuing architecture | |
US7809009B2 (en) | Pipelined packet switching and queuing architecture | |
US7539195B2 (en) | System and method for providing transformation of multi-protocol packets in a data stream | |
US8908693B2 (en) | Flow key lookup involving multiple simultaneous cam operations to identify hash values in a hash bucket | |
EP1158727A2 (en) | Packet processor with real-time edit program construction engine | |
US6976154B1 (en) | Pipelined processor for examining packet header information | |
US20040003110A1 (en) | Method and apparatus for implementing frame header alterations | |
US6658003B1 (en) | Network relaying apparatus and network relaying method capable of high-speed flow detection | |
US9083641B2 (en) | Method and apparatus for improving packet processing performance using multiple contexts | |
US7224701B2 (en) | Method and apparatus for implementing frame header alterations using byte-wise arithmetic logic units | |
KR20010043460A (en) | Digital communications processor | |
GB2340701A (en) | Programmable packet header processor | |
WO2000010297A1 (en) | Packet processing architecture and methods | |
EP1252795A1 (en) | Device and method for packet inspection | |
US6952738B1 (en) | Systems and methods for removing intrapacket gaps from streams of different bandwidths |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PUAI | Public reference made under article 153(3) epc to a published international application that has entered the european phase |
Free format text: ORIGINAL CODE: 0009012 |
|
17P | Request for examination filed |
Effective date: 20020821 |
|
AK | Designated contracting states |
Kind code of ref document: A1 Designated state(s): AT BE CH CY DE DK ES FI FR GB GR IE IT LI LU MC NL PT SE TR |
|
AX | Request for extension of the european patent |
Free format text: AL;LT;LV;MK;RO;SI |
|
RIN1 | Information on inventor provided before grant (corrected) |
Inventor name: DAVIS, CURTIS Inventor name: HEGDE, MANJU Inventor name: SCHMID, OTTO, ANDREAS Inventor name: MAHER, MONIER Inventor name: BORDES, JEAN, PIERRE |
|
STAA | Information on the status of an ep patent application or granted ep patent |
Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN |
|
18D | Application deemed to be withdrawn |
Effective date: 20050802 |