WO2003001750A1 - A method and a system for providing information relating to a data packet or frame - Google Patents

A method and a system for providing information relating to a data packet or frame Download PDF

Info

Publication number
WO2003001750A1
WO2003001750A1 PCT/US2002/019489 US0219489W WO03001750A1 WO 2003001750 A1 WO2003001750 A1 WO 2003001750A1 US 0219489 W US0219489 W US 0219489W WO 03001750 A1 WO03001750 A1 WO 03001750A1
Authority
WO
WIPO (PCT)
Prior art keywords
information
piece
analysis
procedure
proposed
Prior art date
Application number
PCT/US2002/019489
Other languages
French (fr)
Inventor
Jens P. Tagore-Brage
Martin Elhoj
Original Assignee
Vitesse Semiconductor Corporation
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Vitesse Semiconductor Corporation filed Critical Vitesse Semiconductor Corporation
Publication of WO2003001750A1 publication Critical patent/WO2003001750A1/en

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/324Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the data link layer [OSI layer 2], e.g. HDLC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/325Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the network layer [OSI layer 3], e.g. X.25
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/326Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the transport layer [OSI layer 4]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/12Protocol engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Definitions

  • the present invention relates to a method and a system for providing information relating to a data packet or frame and more specifically to a method and a system for providing one or more pieces of information relating to the data packet or frame.
  • a number of fields therein are analysed in order to determine, e.g., on which port to transmit the data packet or frame.
  • This analysis can be performed on a number of the so-called OSI levels and on a number of different fields in the data packet or frame.
  • WO 99/31581 relates to a programmable hardware processor where calculation rule operations may be added.
  • US 6,122,278 relates to a digital delay line where the packet is streamed into. In parallel thereof, the address is derived, an output port is resolved, and the streamed packet is routed to the resulting output.
  • US 5,825,774 relates to a hardware processor analysing a frame and generating, in hardware, a code vector for use in selecting a predetermined software routing used in a software programmable processor for controlling how the frame is to be transmitted to its destination.
  • US 6,377,998 relates to a pipelined processor clocking data through a number of steps in order to provide a uniform latency.
  • US 6,324,164 relates to a pipelined processor for ATM cells.
  • US 6,304,901 relates to a switch switching between two NLANs and converting between two different NLAN encapsulations.
  • the present invention relates to an alternative in that the central processing device is replaced by a number of decentralised analysing means or procedures serially analysing the data packet or frame. A number of predetermined piece(s) of information are desired from each data packet or frame.
  • Each analysing means or procedure performs its analysis and provides its own proposal to one or more of the pieces of information.
  • the means or procedure may amend or overwrite a previous means' or procedure's proposal.
  • the invention relates to a method of providing one or more predetermined pieces of information relating to a data packet or frame, the method comprising: a series of a plurality of analysis procedures each comprising the steps of: receiving at least part of the data packet or frame, receiving proposed piece(s) of information from a previous procedure, performing one or more analysis of the packet or frame, deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, and
  • a final procedure receiving the proposed piece(s) of information from a last analysis procedure and generating there from the one or more predetermined pieces of information relating to the data packet or frame.
  • a data packet or frame may be any collection of data and other information. Normally, a data packet or frame will have a header with addressing or routing information and a data part or payload carrying the data to be routed or transported.
  • the packet or frame may be of a type where the payload - in accordance with a standard to which the header conforms — actually is a data packet or frame having a header and a payload conforming to the same or another standard.
  • This type of embedded data may be found in a number of switching or routing systems where an incoming data frame or packet is provided with a header which is maintained within that switching or routing system and is stripped away when outputting the original data packet or frame from that system.
  • the analysis is performed on fields/parts in the header(s) of the data packet or frame as the predetermined piece(s) of information normally relate(s) to the type of packet or frame and the addressee thereof. Additional interesting information relates to the results of a higher-level (e.g. OSI Level 3-7) evaluation of the packet in order to both determine the addressee and the flow/routing thereof. Also, a priority thereof may be determined. Preferably, a number of pieces of information are derived from each packet during the full analysis thereof.
  • the final procedure simply outputs the proposed piece(s) of information received from the last analysis procedure.
  • the final procedure may analyse the piece(s) of information and amend one or more thereof, if the combined information therein is erroneous or ambiguous.
  • the final procedure further comprises the steps of: receiving the data packet or frame, altering the data packet or frame in accordance with the piece(s) of information, and outputting the altered data packet or frame.
  • the altering step comprises introducing, into the received data packet or frame, one or more of the predetermined pieces of information. This is especially useful when those pieces of information relate to the standard fields/parts of the frame, such as an address (MAC, IP, ..) or apriority.
  • the individual analysis procedures do not alter the data packet or frame. This is due to the fact that most of the analysis procedures will be succeeded by other analysis procedures, which may overrule decisions thereof. Such overruling may be difficult to perform if the decision has resulted in an amendment of the packet/frame. Thus, the analysis procedures merely read or copy all of or parts of the packet/frame - but only the final procedure is allowed to actually alter or amend the contents of the packet/frame.
  • the method further comprises a first analysis procedure comprising the steps of: receiving the data packet or frame, performing one or more analysis of the packet or frame, deriving from the analysis a new proposal for at least one of the one or more predetermined pieces of information, and outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures.
  • the first analysis step may comprise, prior to the deriving step, the step of providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and may further comprise the step of combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
  • Providing the default information has the advantage that all pieces of information are only to be altered when the result of the analysis dictates this. If no default information was provided, the procedures should preferably be able to operate in two modes, one being used the first time the actual piece of information was provided and the other when a proposal to that information is received.
  • one or more procedures may be intercalated which do not perform any analysis on the packet or frame but which analyse the proposed information and may perform operations thereon before outputting it to a next analysis procedure.
  • a part of a frame or packet may be a field as defined by a standard to which the packet or frame conforms.
  • a proposal for different pieces of information may be derived from the same part(s) of the packet, and a proposal for a piece of information may be derived from different parts of the same packet.
  • each step of performing the one or more analyses of the data packet or frame may comprise actually extracting (copying) and/or simply analysing (reading) one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analysis.
  • the combination of the received (old) proposed information with the newly derived information, in order to generate the information which an actual analysis procedure transmits to a next procedure, may be performed in a number of manners.
  • One simple manner is to overwrite the "old" information with the "new” information.
  • a more complex, programmable and flexible manner is, however, one where each of one or more of the combining steps comprise, for each piece of information for which a proposed new piece of information was derived, using the received proposed piece of information and the new, derived piece of information as indexes to identify a combination method in a database of combination methods.
  • the database of combination methods is implemented as a two-dimensional matrix where the received proposed piece of information is used as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
  • This manner uses not the actual piece(s) of information but other information derived which relates to this information.
  • the receiving step comprises also receiving proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information
  • the deriving step comprises also deriving from the analysis a new proposal for at least one additional piece of information
  • the combining step comprises also combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information
  • the outputting step comprises also outputting the new, proposed piece(s) of additional information.
  • an additional piece of information relating to a piece of information derived during an analysis may be a weight relating to the uncertainty of the relating, determined piece of information. If the analysis is not quite certain that the information provided is correct (and it is required to provide a proposal for the information) a low weight may be provided.
  • the additional information may also be used for indicating that an option or alternative was present at the determination of a piece of information - where one alternative was selected but the other was there and could not be ruled out. Further below, another manner of handling alternatives is described.
  • the additional information is information relating to the piece(s) of information, which are desired as the overall result of the analysis.
  • the additional information is normally not in itself that result.
  • additional information is then generated in the deriving step (preferably originating from the first analysis procedure) and combined with the additional information received from a precious analysis procedure.
  • the step of combining the received, proposed piece of information and the new, derived proposed piece of information and generating the new, proposed piece of information preferably comprises performing the combination as a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information.
  • the mathematical combination is preferably derived from a look-up table or matrix defining a number of mathematical combinations and using the received piece(s) of additional information and a new, derived piece(s) of additional information as look-up keys.
  • the step of combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information comprises, for at least one, but preferably each, piece of additional information, performing the combination as a mathematical combination defined by the received proposed piece of additional information and the new, derived piece of additional information relating to the piece of information.
  • the mathematical combination may be derived from a look-up table or matrix defining a number of mathematical combinations and using the received piece of additional information and the new, derived piece of additional information as look-up keys.
  • the overall functionality of the analysis (the manner in which the information is combined to provide the result) may be altered.
  • the final procedure preferably also receives the one or more piece(s) of additional information and generates the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information.
  • the additional information may be interpreted as a weight describing an uncertainty in the correctness of the pertaining piece of information.
  • an ambiguity between different pieces of derived information may be resolved on the basis of the additional information.
  • a combination of pieces of information is preferably a combination of two pieces of information - the two corresponding pieces of information in the newly derived information and the received proposed information.
  • Received, proposed pieces of information to which no proposals are derived in the analysis are preferably not amended or combined and are output as received.
  • this programmability is mainly provided in the form of the tables or matrices in that a change in the contents thereof alters the results of the analysis.
  • the method also comprises the step of updating the tables or matrices.
  • At least one analysis procedure may derive other or further information useful in a subsequent analysis procedure.
  • the subsequent analysis procedure may itself derive this further information.
  • one analysis procedure provides further information for use in a second, subsequent analysis procedure, the one analysis procedure comprising the step of outputting the further information, the second analysis procedure comprising the step of receiving the further information, and any analysis steps interposed between the first and second analysis procedures comprise the step of forwarding the further information to the subsequent analysis procedure.
  • information is derived somewhere in the series of analyses, forwarded part of the way through the analyses and possibly removed from the stream of information passed on when having reached its destination.
  • the further information may reflect this and the second analysis step may be adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of information as the received proposed piece(s) of information.
  • the second analysis procedure performs no alterations on the received, proposed piece(s) of information.
  • the second analysis step may be adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information - in order to also pass this information unaltered.
  • one or more analysis procedures is/are preferably able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis step of the analysis procedure.
  • bits may represent knowledge not related to any particular one of the predetermined pieces of information.
  • the final procedure may be adapted to also receive the proposed information bits and generate, on the basis of the information bits and the received, proposed piece(s) of information and additional piece(s) of information received from the last analysis procedure, the one or more predetermined piece(s) of information relating to the data packet or frame. Then, the final procedure may generate the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits and/or the additional information.
  • the information bits may be used for a number of purposes and in a number of manners. Learning may take place by learning a pattern in the bits and the corresponding situation or solution, h fact, a step of comparing the information bits to a number of pre-defined patterns may take place and an alteration or interpretation of the one or more predetermined pieces of information may be performed on the basis thereon.
  • the pattern of the bits may represent a combination of a number of situations - a combination that defines a certain treatment of the information or a certain situation which may not be determinable from individual pieces of information derived from the packet/frame.
  • An analysis procedure may relate to an analysis relating to a certain overall grouping of analyses.
  • a group of analysis procedures may comprise a number of procedures each performing an analysis.
  • the analysis procedures are divided into one or more groups each comprising a plurality of serially performed analysis procedures, the groups of procedures being performed in series, and each group comprising the steps of receiving proposed piece(s) of information and outputting new, proposed piece(s) of information.
  • An advantage is seen when a deriving step of an analysis procedure of a group of procedures determines that the analyses of the actual procedure group should not be performed. Then the actual procedure group may output as the new, proposed piece(s) of information the proposed piece(s) of information received. Thus, when an analysis procedure determines that the analyses of the analysis procedures of the procedure group will not give e.g. a sensible result, the procedure group may not alter the received, proposed information.
  • This ability of outputting the received, proposed piece(s) of information may be obtained when one or more procedure groups comprises storing the proposed piece(s) of information received prior to a first combining step of a first analysis procedure of the procedure group. In this manner, it is possible to output the stored information in spite of any subsequent amendment to the information received.
  • Another manner is to have one or more procedures (preferably each analysis procedure but the last procedure) of a procedure group comprise outputting also the proposed piece(s) of information received by the procedure group.
  • both the amended information and the originally received information is transmitted through the analysis procedures in order for e.g. a last procedure of a procedure group to determine whether the amended information or the originally received infonnation should be output.
  • the one or more analysis procedures of at least one procedure group are able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis steps of the analysis procedure(s).
  • different information bits may be used by different analysis procedures or procedure groups and be used for signalling different situations such as possible options or suspicions regarding the data packet or frame. Also, these bits may indicate general instructions for subsequent procedures.
  • the at least one procedure group preferably has a last procedure being adapted to receive the information bits and generate, on the basis thereof and the received, proposed piece(s) of information from a previous analysis procedure of the procedure group, the proposed piece(s) of information to be output from the procedure group.
  • a simple manner of obtaining this is to have the last procedure generate the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits.
  • a bit pattern of the bits may be used for looking up or identifying the operation.
  • the data packet or frame preferably conforms to a standard, such as to the Ethernet, IEEE 802.3, SONET, and/or Token Ring standard.
  • a standard such as to the Ethernet, IEEE 802.3, SONET, and/or Token Ring standard.
  • at least one analysis procedure performs an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
  • the analysis procedure performs an analysis as to OSI Level 2, and the one or more predetermined piece(s) of information relates to an output port identity of e.g. a switch performing the present method and/or a NLAN identity or router leg.
  • the analysis procedure performs an analysis as to OSI Level 3, and the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
  • the analysis procedure may perform an analysis as to OSI Level 4, and the one or more predetermined piece(s) of information relates to an identification of an IP protocol (TCP/UDP, ..) in order to e.g. determine how to interpret Level 5 contents, to provide a priority (such as different priorities to FTP and HTTP frames) or to determine different routes for different types of frames.
  • the ordering of the analysis procedures or groups may be made in more or less intelligent ways. In some embodiments, one analysis procedure or group may find that a subsequent analysis or group is not relevant. This, however, can only be utilised if the ordering of the analysis procedures and groups is correct. If these two analysis procedures or groups were oppositely ordered, the finding of the, now latter, procedure or group that the results of the former one are not relevant may be useless - or the incorrect findmg of the former procedure may not be easily reversible.
  • the procedure groups relate to the OSI levels
  • the ordering is so that the knowledge of a former analysis or group may be used in a latter analysis or be used for skipping the latter analysis.
  • each analysis procedure and procedure group should receive at least the relevant parts of the packet or frame. Having set up the serial structure of the analysis, in the preferred embodiment, each analysis procedure comprises the steps of receiving the data packet or frame and outputting the data packet - preferably to a subsequent procedure. However, a last analysis procedure or group needs not output the packet but only the desired piece(s) of analysis information.
  • the further step of storing the data packet or frame in or between individual analysis procedures is desired in order to time the operation of the individual analysis and in order to facilitate serial, simultaneous analysis of a number of packets or frames.
  • the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses. This enhances the speed of data transmission.
  • any proposed piece(s) of additional information is preferably transmitted in the same data stream as the proposed piece(s) of information.
  • the steps of: receiving the at least part of the data packet or frame, performing the one or more analyses of the packet or frame, and deriving the new proposal for at least one of the one or more predetermined pieces of information, are performed during a first integer times a predetermined period of time, where these steps are, in the at least one of the analysis procedures, performed in parallel on a number of packets or frames corresponding to the first integer.
  • this defines the rate at which this/these analysis procedure(s) is/are able to process frames/packets. Normally, the transmission of packet/frame and information between analysis procedures should be adapted to this rate.
  • the predetermined time will normally be determined between the time where the first packet/frame cell reaches the procedure and the time where the proposed information reaches the procedure.
  • the steps are performed during the predetermined period of time (such as a predetermined number of clock cycles from a clock providing pulses equally spaced in time).
  • &s integer may be anything between 1 and 100 - or more. If a single operation, such as a lookup or calculation, in any of those steps cannot be performed within the predetermined period of time, it is preferably duplicated in order to ensure the timing of the steps.
  • One manner of easily splitting the above steps up into two groups of relatively independent steps would be to 1) receive the at least part of the data packet or frame and derive, as a part of the analysis step, part(s) of the frame or packet required in the analysis step, and transfer these parts to another super-step 2) wherein the one or more analyses of the (derived part(s)) of the packet or frame are performed, and the new proposal for at least one of the one or more predetermined pieces of information is derived.
  • These two groups of steps may be performed in parallel on two different packets/frames.
  • the steps of: receiving the proposed piece(s) of information from the previous procedure, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating the new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, are performed during a second integer times the predetermined period of time, where these steps are, in the analysis procedures, performed in parallel on a number of packets or frames corresponding to the second integer.
  • the "number of packets or frames corresponding to the integer" will be a number being the integer.
  • first and second integer need not be the same.
  • the complexity of a combination (or subpart thereof) and e.g. an analysis have no correlation even though they are performed in the same procedure.
  • this sub procedure is preferably duplicated in order for it to be performed in parallel on multiple packets/frames.
  • the storing of the packet/frame is preferably performed during the first- mentioned steps, whereas the packet/frame is preferably forwarded to a next procedure before or during the next-mentioned steps.
  • the packet/frame is no longer required, whereas a continued storing would only increase the latency of the system.
  • the proposed information from the previous procedure is not required until the proposed information is derived - that is until after the first-mentioned steps.
  • the receiving and/or outputting of the data packet and the receiving and/or outputting of the proposed piece(s) of information are offset in time by the predetermined period of time.
  • the predetermined period of time preferably corresponds (or at least is not smaller than) to the period of time it will take to transfer this minimum packet size from one analysis procedure to the next. More preferably, the predetermined period of time will correspond to the minimum packet size including a minimum packet interframe gap - which is also defined in e.g. Ethernet packets.
  • the minimum storage size for holding the packet/frame in an analysis procedure being able to perform the first-mentioned steps within the predetermined period of time should be able to hold a minimum size frame. If the integer is more than one, a corresponding increase in memory is suitable.
  • the packet/frame and the proposed information is clocked (offset in time) through the analysis procedures and that each procedure will be ready for receiving and analysing a packet/frame of a given minimum size for each predetermined period of time. Should an actual packet/frame actually be larger, the overall throughput rate (bits per second) will not be reduced (but the rate of packets per second will, naturally).
  • each procedure group comprises the steps of receiving the data packet or frame and outputting the data packet and possibly also the step of storing the data packet or frame in or between individual procedure groups.
  • the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses, and that the receipt of the packet/frame and the proposed information is offset by the predetermined period of time.
  • the advantage of the present serial design - and especially the above-mentioned preferred embodiment - is that a high throughput (defined by the predetermined period of time) is combined with a high degree of parallel processing (individual analysis procedures may act on different packets/frames at the same time) while obtaining the learning process of the serial nature.
  • the serial nature of the invention will cause the overall analysis time to be longer than a pure parallel processing, but the overall processing rate is not decreased.
  • the invention in a second aspect, relates to a system for providing one or more predetermined pieces of information relating to a data packet or frame, the system comprising: a plurality of serially interconnected analysis procedure means each comprising: means for receiving at least part of the data packet or frame, means for receiving proposed piece(s) of information from a previous analysis procedure, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, means for combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and means for outputting the new, proposed piece(s) of information, preferably to a subsequent analysis procedure means, and a final procedure means being adapted to receive the proposed piece(s) of information from a last analysis procedure means and to generate there from the one or more predetermined pieces of information relating to the data packet or frame.
  • the present system may be provided in a single chip or ASIC where each procedure may be a separate block in the chip/ ASIC.
  • the final procedure means is further adapted to: receive the data packet or frame, alter the data packet or frame in accordance with the piece(s) of information, and output the altered data packet or frame.
  • the final procedure means could be adapted to, during the altering step, introduce, into the received data packet or frame, one or more of the predetermined pieces of information.
  • the analysis procedure means are adapted to not alter the data packet or frame so that any and all alterations to the data packet or frame is performed by the final procedure means.
  • the system further comprises: a first analysis procedure means comprising: means for receiving the data packet or frame, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, and means for outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures, where the first analysis procedure means further may comprise means for providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and means for combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
  • a first analysis procedure means comprising: means for receiving the data packet or frame, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, and means for outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures, where
  • the means for performing the one or more analyses of the packet or frame in different analysis procedure means may be adapted to act on different parts of the packet or frame and derive proposals for different piece(s) of information.
  • Each means for performing the one or more analyses of the data packet or frame may comprise means for extracting and/or analysing one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analyses.
  • each of one or more of the combining means is adapted to, for each received piece of information for which a proposed new piece of information was derived, use the received proposed piece of information and the new, derived piece of information as indexes, identify a combination method in a database of combination methods.
  • the database of combination methods may be implemented as a two-dimensional matrix and where the combining means are adapted to use the received piece of information as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
  • the analysis procedures may be intercalated by other procedures not performing analysis on the packet/frame but which analyses the proposed information and may perform operations thereon.
  • One such procedure may be a policer or scheduler which monitors the number of frames/packets transmitted and which marks packets/frames (e.g. using the Action bits) to be dropped in order for the traffic to conform to e.g. a service agreement.
  • the receiving means are also adapted to receive proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information
  • the deriving means are adapted to also derive from the analyses a new proposal for at least one of the one or more additional piece(s) of information
  • the combining means are adapted to also combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generate new, proposed piece(s) of additional information
  • the outputting means are adapted to also output the new, proposed piece(s) of additional information.
  • the combination of information is preferably a combination of two corresponding pieces of information (one derived in the analysis means and one received thereby) and where received pieces of information, for which a corresponding proposal is not derived in the procedure, are simply output in un-amended form.
  • the combining means are preferably adapted to combine, for at least one, but preferably each, piece of information for which the deriving means is adapted to provide a proposal, the received proposed piece of information and the new, derived proposed piece of information using a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information.
  • the mathematical combination may be derived from a look-up table or matrix defining a number of mathematical combinations, and the combining means may be adapted to use the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
  • the combining means may be adapted to identify a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information and to combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information to generate new, proposed piece(s) of additional information using the identified mathematical combination.
  • the combination means could be adapted to derive the mathematical combination from a look-up table or matrix defining a number of mathematical combinations by using the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
  • any other combination of piece(s) of information and additional information may be used as look-up keys.
  • the final procedure means are also adapted to receive the one or more piece(s) of additional information and to generate the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information.
  • this manner of providing the functionality by providing the operations in tables brings about a high programmability, and the system would normally further comprise means for updating the tables or matrices.
  • At least one analysis procedure means comprises means for providing further information for use in a second, subsequent analysis procedure means, the one analysis procedure means comprising means for outputting the further information, the second analysis procedure comprising means for receiving the further information, and any procedure means interposed between the first and second analysis procedure means comprise means for forwarding the further information to a subsequent procedure means.
  • the combination means of the second analysis means is preferably adapted to, when having received the further information, generate the new, proposed piece(s) of information as the received proposed piece(s) of information - so that the analysis means make no amendments to the information.
  • the combination means of the second analysis means are preferably adapted to, when having received the further information, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information - in order to also have no amendment of the additional information. In effect, this is a surpassing or overruling of the analysis of the second procedure means.
  • one or more analysis procedure means preferably comprise means for receiving, amending, and outputting one or more information bits, where the amending means are adapted to amend the information bits in accordance with an output of the analysis means of the analysis procedure means.
  • the final procedure means may be adapted to also receive the information bits and the received, proposed piece(s) of information from the last procedure means and to generate there from the one or more predetermined piece(s) of information relating to the data packet or frame.
  • the final procedure means may also be adapted to generate the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the final procedure being adapted to identify the operation on the basis of the information bits.
  • a simple manner is to identify the operation on the basis of the actual bit pattern of the information bits.
  • an overall advantage is seen when the analysis procedure means are grouped into one or more procedure groups each comprising a number of serially interconnected analysis procedure means, the groups being serially interconnected, and at least one group comprising means for receiving proposed piece(s) of information from a previous group and output new, proposed piece(s) of information to a subsequent group.
  • a deriving means of an analysis procedure means is preferably adapted to determine whether the analyses of the actual or a subsequent procedure group should be performed, and wherein the actual procedure group, if the deriving means determines so, is adapted to output as the new, proposed piece(s) of information the proposed piece(s) of information received.
  • one or more procedure groups may comprise means for storing the proposed piece(s) of information received prior to a first combining means of a first analysis procedure means of the procedure group, and the outputting means of each analysis procedure means of the group could be adapted to output also the proposed piece(s) of information received by the procedure group.
  • At least some of the one or more analysis procedure means of at least one procedure group comprise means for receiving, amending, and outputting one or more information bits, where the amending means are adapted to amend information bits in accordance with a result of the analysis step of the analysis procedure.
  • the overall functionality of these bits is described above.
  • a series of procedures may be both analysing procedures actually performing analysis of the packet/frame and amending the proposed information transported there between - and procedures not performing analysis on parts of the packet/frame but which may perform operations on e.g. the proposed information.
  • the intercalated non-analysing procedures will forward (possibly amended) proposed information in the same manner as the analysing procedures.
  • the at least one analysis procedure group may have a last procedure means being adapted to receive the information bits and the proposed piece(s) of information from a previous analysis procedure of the procedure group, to generate the proposed piece(s) of information, and output this/these.
  • the last procedure means preferably comprises means for generating the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the generating means being adapted to identify the operation on the basis of the information bits.
  • bit pattern of the bits may be used for the identification of the operation.
  • the data packet or frame may conform to the Ethernet, IEEE 802.3, SONET, IP (IETF RFC 791), and/or Token Ring standard, and one analysis procedure means is preferably adapted to perform an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
  • the analysis procedure means may be adapted to perform an analysis as to OSI Level 2, and wherein the one or more predetermined piece(s) of information relates to an output port identity of e.g. a switch comprising the present system and/or a NLAN identity or router leg.
  • the analysis procedure means may be adapted to perform an analysis as to OSI Level 3, and wherein the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
  • the analysis procedure means could be adapted to perform an analysis as to OSI Level 4, and wherein the one or more predetermined piece(s) of information relates to an identification of an IP protocol (TCP/UDP, ..) in order to e.g. determine how to interpret Level 5 contents, to provide a priority (such as different priorities to FTP and HTTP frames) or to determine different routes for different types of frames.
  • IP protocol TCP/UDP, ..
  • each analysis procedure means comprises means for receiving the data packet or frame and outputting the data packet or frame - such as to a subsequent analysis procedure means.
  • the last procedure means may not output the data packet or frame.
  • system could further comprise means for storing the data packet or frame in or between individual analysis procedure means.
  • means are provided for transporting the data packet or frame and the proposed piece(s) of information in separate data streams, such as on separate busses, between analysis procedure means, any intercalated procedures, and procedure groups.
  • the proposed piece(s) of additional information could be transmitted in the same data stream as the proposed piece(s) of information.
  • At least one analysis procedure means is adapted to: receive the at least part of the data packet or frame, perform the one or more analyses of the packet or frame, and derive the new proposal for the at least one of the one or more predetermined pieces of information, within a first integer times a predetermined period of time, the at least one procedure means being able to perform these steps in parallel on a number of packets/frames corresponding to the first integer.
  • the integer may be any positive integer, and preferably, the analysis procedure means is adapted to handle an amount of data corresponding to a predetermined amount of data multiplied with the integer (in order for parallel processing of multiple packets/frames if required).
  • At least one other (or the same) analysis procedure means preferably is adapted to: receive the proposed piece(s) of information from the previous procedure, combine the received proposed piece(s) of information and the new, derived proposal(s) and generate the new, proposed piece(s) of information, and output the new, proposed piece(s) of information, within a second integer times a predetermined period of time, the at least one procedure means being able to perform these steps in parallel on a number of packets/frames corresponding to the second integer.
  • each analysis procedure means is adapted to receive the data packet and the proposed piece(s) of information offset in time by a predetermined period of time.
  • the system could further comprise means for providing a clocking signal comprising clocking pulses equally spaced in time and wherein the offset is a predetermined number of clocking pulses.
  • each procedure group preferably comprises means for receiving the data packet or frame and outputting the data packet or frame.
  • means could be provided for storing the data packet or frame in or between individual procedure groups, and the data packet or frame and the proposed piece(s) of information (also the additional information) may be transmitted in separate data streams, such as on separate busses.
  • each procedure group is adapted to receive the data packet and the proposed piece(s) of information offset in time by a predetermined period of time.
  • means may be used for providing a clocking signal comprising clocking pulses equally spaced in time and wherein the offset is a predetermined number of clocking pulses.
  • One of the advantages in the present serial design is both the increased analysis throughput and the possibility of parallel analysis of multiple data packets or frames.
  • Another advantage is that the individual analysis procedures or analysis procedure means as well as the groups may be used as standardized building blocks. In fact, these building blocks may be monolithic so that the output of one corresponds to the input of the next. In this manner, abutment is possible making the production of a chip or ASIC having the functionality easier.
  • the invention relates to a number of analysis procedure means for use in the above system, each analysis procedure means comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted.
  • the physical positioning of inputs and outputs are so that the means may be abutted toward or to each other in order to provide data transfer.
  • each analysis procedure means is adapted to receive a packet or frame on one input and proposed information relating thereto on the other.
  • the procedure means preferably outputs the packet or frame (and preferably after a predetermined period of time) and amended proposed information - amended in accordance with findings of the analysis performed.
  • a fourth aspect relates to a number of procedure groups for use in the above system, each group comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted. Naturally, the same physical input/output positions are desired.
  • Fig. 1 is a block diagram illustrating the structure of the preferred invention where a number of analysing units are used in series
  • Fig. 2 is a block diagram illustrating three of the units in more detail and with an exploded block diagram of a slice of a unit
  • Fig. 3 illustrates the use in one slice of pairs of matrices for providing information and weights for an FCR
  • Fig. 4 is a more detailed block diagram of a slice.
  • Ethernet frames or frames/packages conforming to other standards such as POS, IEEE 802.3, Token Ring, etc.
  • a number of these analyses derive different types of information from the frame - also depending on the reason for analysing the packet/frame.
  • Such information may be a priority thereof, information relating to switching ports (port identity, port group identity), NLAN information, information relating to flows, information relating to aggregation of links.
  • OSI has divided data traffic - and thereby also analysis of Ethernet packets/frames - into a number of layers, where higher layer analysis may bring about additional information vis-a-vis a lower layer analysis.
  • Fig. 1 illustrates the preferred embodiment, which comprises 5 serially positioned units for processing a packet or frame, preferably an Ethernet frame, which enters the system at an input 12.
  • the system comprises an initialising unit 14, an OSI Layer 2 processing unit 16, an OSI Layer 3 processing unit 18, an OSI Layer 4 processing unit 20, and a director unit 22. It is advantageous to perform lower layer analysis before higher layer analysis. In this situation, a piece of information proposed by both a lower layer analysis and a higher layer analysis may be finally selected as the higher layer analysis result as the higher layer analysis would normally provide the best proposal for the information. Also, lower level analysis may determine whether and which higher analysis should be performed.
  • the packet or frame is transported via conductors 12', and the information to be provided, in the form of a so-called Frame Control Record - FCR - is transported between units on conductors 13'.
  • a number of analyses under OSI Layers 2-4 are known, and the present invention is not dependent on which one(s) is/are used.
  • the FCR may in principle be made as large as required.
  • the FCR is transported in parallel over conductors 13'.
  • the packet or frame is transported over the conductors 12' in cells of size 64 bits - in parallel.
  • the output of the present invention may be a packet or frame (output 24) which is altered in order to reflect the information derived there from.
  • This alteration may be an alteration of a field thereof - such as the TTL field or an IP/MAC address.
  • the information derived may be positioned in a header portion thereof.
  • a further alternative will be to actually, together with the packet or frame, output e.g. the FCR (output 24') for use in a subsequent process (higher level analysis or switching/routing).
  • the frame/packet may simply be extended with a proprietary field holding all or some of the information.
  • Fig. 2 illustrates the units 16, 18, and 20 in more detail. From this figure, it is seen that the units have a sub-structure with a number of slices (in unit 18, the slices are numbered 32, 34, and 36) each receiving/transmitting the FCR and packet/frame via the conductors 12' and 13'. The slices perform under-analysis relating to the OSI layer of the pertaining unit.
  • FCRC Frame Control Record Contributions
  • Each of the parts of the FCRC is processed with the corresponding part of the FCR 52 received from the previous slice. This processing is performed in a number of Processing Units 46, 48, and 50 which each receives a part of the FCRC 44 and the corresponding part of the received FCR 52. Each Processing Unit outputs a resulting part for use in the FCR 54 to be transmitted to the next slice.
  • the FCR 52 may be transferred directly into FCR 54 so that any amendments already performed by Processing Units may be reversed- see arrow 58.
  • the desired pieces of information are derived on the basis of the packet/frame but also additional information describing the desired pieces of information are introduced into the FCR.
  • additional information describing the desired pieces of information are introduced into the FCR.
  • a simple manner of viewing this is that not only will the logics 42 derive e.g. a priority for the frame or packet but also a weight describing e.g. the certainty with which the derived priority is the correct priority.
  • the piece of information and pertaining weight will be denoted an information tupple.
  • Each Processing Unit is adapted to receive the information tupples from the received FCR 52 and the FCRC 44 and to there from generate one information tupple for the FCR 54 to be output.
  • the manner in which two pieces of information may be combined into a single piece of information will depend heavily on the actual nature of the information. If the information is a priority, the highest, lowest or mean (sum, difference, or either one of the two values), e.g., of the two may be chosen for the result. This is not possible if the result is e.g. an address or group identifier, where, more likely, the operation would be the selection of one thereof on the basis of e.g. the highest weight. If the information is a single bit, the combination may be any bit operator (and, or, xor, or assignment to one of the values, e.g.).
  • the operations required will be represented, for each tupple and in each Processing Unit, in two matrices - one for the operation on the information in the tupple and one for the additional information (e.g. weight) of the tupple. See Fig. 3.
  • the actual operation is identified, for each Processing Unit, using the additional information from the received FCR 52 and the FCRC 44 as the two coordinates.
  • the two weights (Wi, the weight from the received FCR 52, and Ws, the weight as proposed in the FCRC) are used as coordinates for determining both the additional information/weight, Wo, to be output and the operation, N-OPR, to be performed on the two pieces of information in order to obtain the information to be introduced in the FCR 54 to be output.
  • each Processing Unit has its own two matrices.
  • This provides a highly flexible programmability in that a change in a matrix at a given position will alter the manner in which a given type of situation is handled.
  • the position in the matrix relates to both what has been determined from the packet in the previous analysis and what the present analysis has derived. Thus, it is possible to pinpoint the precise point in the analysis (or the exact type of packet/frame) to affect.
  • the actual size of the individual matrices will depend on the number of possible values of the weights, W, at that Processing Unit. These values may very well vary from Processing Unit to Processing Unit.
  • the matrices may be set up and maintained by an operator and software/CPU may be provided for accessing and maintaining these matrices.
  • action bits may be used for indicating alternatives or suspicions. Alternatives being e.g. the least favoured of two alternatives - where the more favoured alternative is given in a piece of information in the FCR. A suspicion may be an indication for a subsequent procedure to check something using other fields of the packet/frame than those derived and analysed in the present slice/unit.
  • an Action bit may be set if the frame/packet should be discarded or if it should be mirrored (if it stems from a port/address, the traffic from which should be monitored and therefore copied to a given port or the like).
  • a pattern or the like of the action bits may be identified by a procedure/unit/slice - a pattern which no single unit/slice would recognize due to it e.g. not having all required information (not having read all relevant fields in the packet/frame).
  • These action bits provide programmability and learning possibility also after manufacture of the chip.
  • Action bits are used and each Action bit is followed, in the FCR, by a weight (3 bits).
  • An action bit is preferably assigned to be set to e.g. 0 when updating the FCR non-atomically. If an error is seen - that is, that the FCR is not correctly updated - this bit will then signal to the Director slice to e.g. drop the packet. After a correct non-atomical update of the FCR, the bit will again be set to 1 to signal that the FCR is correct.
  • a specific example of the operation of a slice/unit and one unit rendering a subsequent unit transparent may be seen when a slice in the unit 16 (OSI Layer 2) derives information relating to the Type/Length of the packet.
  • This slice will derive a base priority of the packet and determine whether the packet is an IP packet. The priority will be added to the FCR and, if the packet is not an IP packet, information will be added to the FCR, which will render the unit 18 (relating to OSI Level 3 - IP packets) transparent in that any analysis performed therein will then not make sense.
  • the FCR comprises one enabling bit for each unit. Each unit will examine this bit before performing any analysis. One manner of ensuring that a given slice will not alter a given part of the FCR would be to provide also enabling bits for each slice in the system.
  • a bit may be provided for each Processing Unit - or the additional information relating to the Processing Unit may be set so as to adapt to the contents of the matrices of the Processing Unit so that the incoming piece of information is output from the Processing Unit (if the situation is identified, the additional information is set to a value where the whole row of the matrices defines operations simply outputting the input information).
  • FIG. 4 This rendering transparent is illustrated in Fig. 4 where the received FCR is denoted 60, the output FCR 62, the FCRC 64 and the Processing Units 72.
  • a Processing Unit enabler 68 receiving enabling information from the received FCR and outputting a "1" if the FCR information instructs the slice to be transparent.
  • This "1" - or the alternative “0” - is transmitted to an OR gate 70 which also receives a "1" (for transparent mode) or "0" (for active mode) from an external source.
  • the output of the gate 70 is transmitted to all Processing Units in the slice, and these will act to either perform no alteration of the incoming FCR (transparent mode) or perform any alteration controlled by the normal operation of the units.
  • the signal from the external source may be a signal used during e.g. testing or debugging where it will be an advantage that individual slices/units may be inactivated in order to test individual parts of the system.
  • a first unit (14 in Fig. 1) is provided for providing an initial FCR. This is mainly due to the fact that a standard slice will only alter certain parts of the FCR and will require both a piece of information and a weight for identifying the operators required to provide the altered information. Thus, realistic information is provided in the FCR init unit, which simply outputs an FCR to the first unit - the Level 2 analysing unit.
  • most units apart from the FCR init unit and the director unit (see below), comprises one or more analysis slices (32 and 34) and an Action slice (36), which is always the last slice in the unit. This slice derives no parts from the packet/frame and performs no analysis on the frame/packet.
  • the Action slice compares the actual Action bits of the FCR to seven 16-bit patterns and, depending on the match, one of 8 (one for each of the 7 patterns and one if no match is obtained) FCRC's is identified. Also, two matrices are provided for the operators combining the input FCR and FCRC into the output FCR.
  • Action slice may be made transparent like all other slices.
  • the packets are preferably normalized.
  • any NLAN tags are removed from the packet and added to a 128 bit header preceding the actual packet through the pipeline.
  • the last unit (22 in Fig. 1) in the series of units is called a Director unit.
  • This unit is, as the only unit in the series, allowed to actually alter the frame/packet. This is due to the fact that subsequent analysis units may reverse decisions made by earlier analysis units. Amendments to a packet/frame may not be easily reversed.
  • the amendments actually performed in the packet/frame are only ones that do not increase the size of the packet/frame. This is due to the fact that a size increase of the packet/frame may provide bandwidth problems on the egress of the present system - or later on in the system. Instead of performing size increasing changes to the packet/frame, information to that effect is provided in the header of the packet/frame in order for that amendment to be performed later on in the network.
  • the Director unit actually outputs the result of the analysis - the predetermined pieces of information (see Fig. 1).
  • This information may be output in a number of manners. In some embodiments, it is desired to have the information in a packet/frame having a size not larger than that input. Thus, if the pieces of information are standard parts of the frame/packets (such as priority, DMAC address, IP address or the like), this information may be provided at the corresponding position in the packet. If not, the information may be provided in the header thereof. Ethernet frames comprise an 8-byte preamble, of which e.g. the last 7 bytes may be used for this information.
  • the pieces of information may be output from the Director in parallel to the frame/packet.
  • the actual FCR may be output. This embodiment is useful if the present system is used e.g. as a standardized pre-processor for use before a higher-level processor which performs additional analysis on the basis of the packet/frame and/or the FCR.
  • the Director slice If the Director slice receives an FCR with a drop-Action bit, it will simply not output the packet/frame. In this manner, the packet will not be dropped during analysis (as this decision might be reversed later on) but will not take up bandwidth after the present system.
  • the parallel processing is obtained by the overall embodiment being able to analyse multiple frames - one or more in each slice.
  • the bus 12' is 64 bits wide which means that it takes 10 clock cycles to transfer a minimum Ethernet frame (64 bytes and 20 byte interframe gap) from one slice to the next.
  • the steps of deriving the parts of the frame/packet, analysing the parts and deriving the FCRC, and the step of combining the received FCR with the FCRC and outputting a new FCR relating to another frame may each be performed on individual packets/frames and may be performed in parallel within a single slice.
  • each of these part "processings" be completed within 10 clock cycles when performed on an Ethernet frame - in each slice and each unit. If this is not possible, the pertaining part process should be able to handle multiple packets in parallel in order for each slice to be able to start analysing an Ethernet frame each 10 clock cycles.
  • the FCR on the bus 13' and the first 64 bits of the Ethernet frame on the bus 12' are offset 10 clock cycles so that the full analysis (in the slices actually able to perform a full analysis within the 10 clock cycles) will be finished at the point in time where the FCR to be amended arrives. Also, at that point in time, the packet is forwarded to the next slice, which will be ready to analyse it. Thereafter, the Processing Units now have the information they need in order to generate the new FCR to output to the next slice.
  • the frame may be analysed in one slice while its FCR is combined in the previous slice.
  • a clock frequency of 166 MHz is used providing a total bit throughput of over 10 Gbit/s.
  • Fig. 1 From Fig. 1, it is seen that, actually, the individual units are separated and may be positioned anywhere in relation to each other on a chip.
  • the units are standard, separate processes - or IP cores - which need not be re-tested when one unit is altered - or a new unit introduced.
  • All units are preferably physically prepared so that the parallel conductors 12' and 13' are positioned in the same positions (distance, direction, and number), so that these building blocks are easily assembled into an analysing chip.
  • This serial structure provides a number of advantages: easier backend process in ASIC development (routing/timing) in that additional levels of registers may be introduced between slices without interfering with the functional behaviour of the system, and functional blocks may be used and new ones be added with very little additional work.

Abstract

A pipelined packet processor comprises an initialising unit (14), an OSI Layer 2 processing unit (16), an OSI Layer 3 processing unit (18), an OSI Layer 4 processing unit (20), and a director unit (22). It is advantageous to perform lower layer analysis before higher layer analysis. In this situation, a piece of information proposed by both a lower layer analysis and a higher layer analysis may be finally selected as the higher layer analysis result as the higher layer analysis would normally provide the best proposal for the information. Also, lower level analysis may determine whether and which higher analysis should be performed.

Description

A METHOD AND A SYSTEM FOR PROVIDING INFORMATION RELATING TO A DATA PACKET OR FRAME
The present invention relates to a method and a system for providing information relating to a data packet or frame and more specifically to a method and a system for providing one or more pieces of information relating to the data packet or frame.
Normally, when analysing a data packet or frame in connection with switching, routing or the like, a number of fields therein are analysed in order to determine, e.g., on which port to transmit the data packet or frame. This analysis can be performed on a number of the so-called OSI levels and on a number of different fields in the data packet or frame.
It is desired to perform a number of analyses on a number of fields of the data packet or frame and to perform a determination on the basis of the set of results obtained. Exactly what information - or which pieces of information - is/are desired will depend on the situation. However, information such as output port identity, priority, NLAN information or the like is typical. If the analysis is more complicated and acts on higher OSI layers, also IP information may be desired from the data packet or frame.
A problem is encountered when the time available for analysing a single data packet or frame decreases. In this manner, a number of analyses must be performed and the final result provided within a small period of time.
Known methods and systems for performing such analysis perform a number of parallel analyses and forward the individual results to a central processing device receiving all results and generating the final result. A problem in this technology is the width of the bus transferring the individual results to the central processing device. Busses of this type give problems in the actual design and routing of the chip — and the obtainable speed is reduced. Also, the central processing device becomes a bottleneck.
WO 99/31581 relates to a programmable hardware processor where calculation rule operations may be added.
US 6,122,278 relates to a digital delay line where the packet is streamed into. In parallel thereof, the address is derived, an output port is resolved, and the streamed packet is routed to the resulting output.
US 5,825,774 relates to a hardware processor analysing a frame and generating, in hardware, a code vector for use in selecting a predetermined software routing used in a software programmable processor for controlling how the frame is to be transmitted to its destination.
US 6,377,998 relates to a pipelined processor clocking data through a number of steps in order to provide a uniform latency.
US 6,324,164 relates to a pipelined processor for ATM cells.
US 6,304,901 relates to a switch switching between two NLANs and converting between two different NLAN encapsulations. The present invention relates to an alternative in that the central processing device is replaced by a number of decentralised analysing means or procedures serially analysing the data packet or frame. A number of predetermined piece(s) of information are desired from each data packet or frame. Each analysing means or procedure performs its analysis and provides its own proposal to one or more of the pieces of information. The means or procedure may amend or overwrite a previous means' or procedure's proposal.
In this manner, a serial, decentralised analysis is provided. Due to the modular structure, a number of data packets or frames may be analysed at the same time while the individual analyses may be kept simple - and fast.
Thus, in a first aspect, the invention relates to a method of providing one or more predetermined pieces of information relating to a data packet or frame, the method comprising: a series of a plurality of analysis procedures each comprising the steps of: receiving at least part of the data packet or frame, receiving proposed piece(s) of information from a previous procedure, performing one or more analysis of the packet or frame, deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, and
A final procedure receiving the proposed piece(s) of information from a last analysis procedure and generating there from the one or more predetermined pieces of information relating to the data packet or frame.
In the present context, a data packet or frame may be any collection of data and other information. Normally, a data packet or frame will have a header with addressing or routing information and a data part or payload carrying the data to be routed or transported. The packet or frame may be of a type where the payload - in accordance with a standard to which the header conforms — actually is a data packet or frame having a header and a payload conforming to the same or another standard. This type of embedded data may be found in a number of switching or routing systems where an incoming data frame or packet is provided with a header which is maintained within that switching or routing system and is stripped away when outputting the original data packet or frame from that system.
Normally, the analysis is performed on fields/parts in the header(s) of the data packet or frame as the predetermined piece(s) of information normally relate(s) to the type of packet or frame and the addressee thereof. Additional interesting information relates to the results of a higher-level (e.g. OSI Level 3-7) evaluation of the packet in order to both determine the addressee and the flow/routing thereof. Also, a priority thereof may be determined. Preferably, a number of pieces of information are derived from each packet during the full analysis thereof.
In a simple embodiment, the final procedure simply outputs the proposed piece(s) of information received from the last analysis procedure. Alternatively, the final procedure may analyse the piece(s) of information and amend one or more thereof, if the combined information therein is erroneous or ambiguous.
Preferably, the final procedure further comprises the steps of: receiving the data packet or frame, altering the data packet or frame in accordance with the piece(s) of information, and outputting the altered data packet or frame.
One manner of outputting at least part of the pieces of information derived will be where the altering step comprises introducing, into the received data packet or frame, one or more of the predetermined pieces of information. This is especially useful when those pieces of information relate to the standard fields/parts of the frame, such as an address (MAC, IP, ..) or apriority.
It is especially preferred that the individual analysis procedures do not alter the data packet or frame. This is due to the fact that most of the analysis procedures will be succeeded by other analysis procedures, which may overrule decisions thereof. Such overruling may be difficult to perform if the decision has resulted in an amendment of the packet/frame. Thus, the analysis procedures merely read or copy all of or parts of the packet/frame - but only the final procedure is allowed to actually alter or amend the contents of the packet/frame.
Preferably, the method further comprises a first analysis procedure comprising the steps of: receiving the data packet or frame, performing one or more analysis of the packet or frame, deriving from the analysis a new proposal for at least one of the one or more predetermined pieces of information, and outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures.
The first analysis step may comprise, prior to the deriving step, the step of providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and may further comprise the step of combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
Providing the default information has the advantage that all pieces of information are only to be altered when the result of the analysis dictates this. If no default information was provided, the procedures should preferably be able to operate in two modes, one being used the first time the actual piece of information was provided and the other when a proposal to that information is received.
In the series of analysis procedures, one or more procedures may be intercalated which do not perform any analysis on the packet or frame but which analyse the proposed information and may perform operations thereon before outputting it to a next analysis procedure.
Normally, the step of performing the one or more analyses of the packet or frame in different analysis procedures are performed on different parts of the packet or frame and derive proposals for different piece(s) of information. In this situation, a part of a frame or packet may be a field as defined by a standard to which the packet or frame conforms.
A proposal for different pieces of information may be derived from the same part(s) of the packet, and a proposal for a piece of information may be derived from different parts of the same packet.
In general, each step of performing the one or more analyses of the data packet or frame may comprise actually extracting (copying) and/or simply analysing (reading) one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analysis.
The combination of the received (old) proposed information with the newly derived information, in order to generate the information which an actual analysis procedure transmits to a next procedure, may be performed in a number of manners. One simple manner is to overwrite the "old" information with the "new" information. A more complex, programmable and flexible manner is, however, one where each of one or more of the combining steps comprise, for each piece of information for which a proposed new piece of information was derived, using the received proposed piece of information and the new, derived piece of information as indexes to identify a combination method in a database of combination methods.
Thus, a number of combination methods may be provided, and which one is to be used is determined by the new and old information. In one situation, the database of combination methods is implemented as a two-dimensional matrix where the received proposed piece of information is used as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
However, a preferred manner is quite different there from. This manner uses not the actual piece(s) of information but other information derived which relates to this information.
In this preferred embodiment, in at least one analysis procedure: the receiving step comprises also receiving proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information, the deriving step comprises also deriving from the analysis a new proposal for at least one additional piece of information, the combining step comprises also combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information, and the outputting step comprises also outputting the new, proposed piece(s) of additional information.
In a simple interpretation, an additional piece of information relating to a piece of information derived during an analysis may be a weight relating to the uncertainty of the relating, determined piece of information. If the analysis is not quite certain that the information provided is correct (and it is required to provide a proposal for the information) a low weight may be provided.
The additional information may also be used for indicating that an option or alternative was present at the determination of a piece of information - where one alternative was selected but the other was there and could not be ruled out. Further below, another manner of handling alternatives is described.
In the broadest sense, the additional information is information relating to the piece(s) of information, which are desired as the overall result of the analysis. The additional information is normally not in itself that result.
As is the situation with the predetermined piece(s) of information, additional information is then generated in the deriving step (preferably originating from the first analysis procedure) and combined with the additional information received from a precious analysis procedure.
For at least one, but preferably each, piece of information for which the deriving step provides a proposal, the step of combining the received, proposed piece of information and the new, derived proposed piece of information and generating the new, proposed piece of information preferably comprises performing the combination as a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information.
Again, the mathematical combination is preferably derived from a look-up table or matrix defining a number of mathematical combinations and using the received piece(s) of additional information and a new, derived piece(s) of additional information as look-up keys.
In order to keep the operation and control simple, it is preferred to have only one piece of additional information describe a piece of information (such a pair of pieces of information is denoted an information tupple). Also, not all pieces of information need a corresponding piece of additional information.
In a preferred embodiment, the step of combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information comprises, for at least one, but preferably each, piece of additional information, performing the combination as a mathematical combination defined by the received proposed piece of additional information and the new, derived piece of additional information relating to the piece of information.
In that embodiment, the mathematical combination may be derived from a look-up table or matrix defining a number of mathematical combinations and using the received piece of additional information and the new, derived piece of additional information as look-up keys.
Thus, by simply altering the contents of that matrix, the overall functionality of the analysis (the manner in which the information is combined to provide the result) may be altered. This makes the overall programming or design of the software/hardware of the analysis simple while maintaining an extreme flexibility in the programmability thereof.
In this connection, it should be noted that it would also be possible to use as the look-up keys any two or more pieces of the new, derived additional information, the received, proposed additional information, the new, proposed additional information, the new, derived piece of information, the received, proposed piece of information, and the new, proposed piece of information. When using the additional information, the final procedure preferably also receives the one or more piece(s) of additional information and generates the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information. Again, in a simple situation, the additional information may be interpreted as a weight describing an uncertainty in the correctness of the pertaining piece of information.
Also, an ambiguity between different pieces of derived information may be resolved on the basis of the additional information.
In general, a combination of pieces of information is preferably a combination of two pieces of information - the two corresponding pieces of information in the newly derived information and the received proposed information. Received, proposed pieces of information to which no proposals are derived in the analysis are preferably not amended or combined and are output as received.
Programmability of the analysis is important to certain users. In the present method, this programmability is mainly provided in the form of the tables or matrices in that a change in the contents thereof alters the results of the analysis. Thus, preferably the method also comprises the step of updating the tables or matrices.
In addition to the actual piece(s) of information desired and the additional information relating to the piece(s) of information, at least one analysis procedure may derive other or further information useful in a subsequent analysis procedure. Naturally, the subsequent analysis procedure may itself derive this further information. This is, however, time consuming and superfluous when one analysis procedure provides further information for use in a second, subsequent analysis procedure, the one analysis procedure comprising the step of outputting the further information, the second analysis procedure comprising the step of receiving the further information, and any analysis steps interposed between the first and second analysis procedures comprise the step of forwarding the further information to the subsequent analysis procedure. Thus, information is derived somewhere in the series of analyses, forwarded part of the way through the analyses and possibly removed from the stream of information passed on when having reached its destination.
A situation may arise where a finding in one analysis procedure actually results in the analysis of a subsequent analysis procedure giving no meaning or being useless. Thus, the further information may reflect this and the second analysis step may be adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of information as the received proposed piece(s) of information. In this situation, the second analysis procedure performs no alterations on the received, proposed piece(s) of information. Also, in the situation where the additional information is used, the second analysis step may be adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information - in order to also pass this information unaltered.
As mentioned above, situations may arise during analysis of a data packet or frame where two solutions are possible or where a suspicion as to the nature of the packet arises. Also, it may be determined that the packet/frame for some reason (such as that it is defective) is to be dropped. This information may be relevant in subsequent analysis or at least in a final processing of the data packet. However that information is difficult to introduce into the predetermined piece(s) of information. It may not describe a single piece of that information so as to logically be introduced into the above additional piece(s) of information relating thereto. Thus, one or more analysis procedures is/are preferably able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis step of the analysis procedure.
These bits may represent knowledge not related to any particular one of the predetermined pieces of information.
Different bits may be used by different analysis procedures or procedure groups. h this situation, the final procedure may be adapted to also receive the proposed information bits and generate, on the basis of the information bits and the received, proposed piece(s) of information and additional piece(s) of information received from the last analysis procedure, the one or more predetermined piece(s) of information relating to the data packet or frame. Then, the final procedure may generate the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits and/or the additional information.
The information bits may be used for a number of purposes and in a number of manners. Learning may take place by learning a pattern in the bits and the corresponding situation or solution, h fact, a step of comparing the information bits to a number of pre-defined patterns may take place and an alteration or interpretation of the one or more predetermined pieces of information may be performed on the basis thereon.
The pattern of the bits may represent a combination of a number of situations - a combination that defines a certain treatment of the information or a certain situation which may not be determinable from individual pieces of information derived from the packet/frame.
An analysis procedure may relate to an analysis relating to a certain overall grouping of analyses. A group of analysis procedures may comprise a number of procedures each performing an analysis.
In that situation, preferably, the analysis procedures are divided into one or more groups each comprising a plurality of serially performed analysis procedures, the groups of procedures being performed in series, and each group comprising the steps of receiving proposed piece(s) of information and outputting new, proposed piece(s) of information.
As will be clear from the following, this grouping of the procedures has a number of advantages.
An advantage is seen when a deriving step of an analysis procedure of a group of procedures determines that the analyses of the actual procedure group should not be performed. Then the actual procedure group may output as the new, proposed piece(s) of information the proposed piece(s) of information received. Thus, when an analysis procedure determines that the analyses of the analysis procedures of the procedure group will not give e.g. a sensible result, the procedure group may not alter the received, proposed information.
This ability of outputting the received, proposed piece(s) of information may be obtained when one or more procedure groups comprises storing the proposed piece(s) of information received prior to a first combining step of a first analysis procedure of the procedure group. In this manner, it is possible to output the stored information in spite of any subsequent amendment to the information received.
Another manner is to have one or more procedures (preferably each analysis procedure but the last procedure) of a procedure group comprise outputting also the proposed piece(s) of information received by the procedure group. Thus, both the amended information and the originally received information is transmitted through the analysis procedures in order for e.g. a last procedure of a procedure group to determine whether the amended information or the originally received infonnation should be output. h one embodiment, the one or more analysis procedures of at least one procedure group are able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis steps of the analysis procedure(s).
As mentioned above, different information bits may be used by different analysis procedures or procedure groups and be used for signalling different situations such as possible options or suspicions regarding the data packet or frame. Also, these bits may indicate general instructions for subsequent procedures.
In this situation, the at least one procedure group preferably has a last procedure being adapted to receive the information bits and generate, on the basis thereof and the received, proposed piece(s) of information from a previous analysis procedure of the procedure group, the proposed piece(s) of information to be output from the procedure group.
A simple manner of obtaining this is to have the last procedure generate the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits. As mentioned above, a bit pattern of the bits may be used for looking up or identifying the operation.
In general, the data packet or frame preferably conforms to a standard, such as to the Ethernet, IEEE 802.3, SONET, and/or Token Ring standard. Also, normally at least one analysis procedure performs an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
In one situation, the analysis procedure performs an analysis as to OSI Level 2, and the one or more predetermined piece(s) of information relates to an output port identity of e.g. a switch performing the present method and/or a NLAN identity or router leg.
In another situation, the analysis procedure performs an analysis as to OSI Level 3, and the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
Also, the analysis procedure may perform an analysis as to OSI Level 4, and the one or more predetermined piece(s) of information relates to an identification of an IP protocol (TCP/UDP, ..) in order to e.g. determine how to interpret Level 5 contents, to provide a priority (such as different priorities to FTP and HTTP frames) or to determine different routes for different types of frames. The ordering of the analysis procedures or groups may be made in more or less intelligent ways. In some embodiments, one analysis procedure or group may find that a subsequent analysis or group is not relevant. This, however, can only be utilised if the ordering of the analysis procedures and groups is correct. If these two analysis procedures or groups were oppositely ordered, the finding of the, now latter, procedure or group that the results of the former one are not relevant may be useless - or the incorrect findmg of the former procedure may not be easily reversible.
In general, when the procedure groups relate to the OSI levels, it is preferred to perform lower level analysis before higher-level analysis. Preferably, the ordering is so that the knowledge of a former analysis or group may be used in a latter analysis or be used for skipping the latter analysis.
In order to be able to actually analyse the data packet or frame, each analysis procedure and procedure group should receive at least the relevant parts of the packet or frame. Having set up the serial structure of the analysis, in the preferred embodiment, each analysis procedure comprises the steps of receiving the data packet or frame and outputting the data packet - preferably to a subsequent procedure. However, a last analysis procedure or group needs not output the packet but only the desired piece(s) of analysis information.
In this situation, the further step of storing the data packet or frame in or between individual analysis procedures is desired in order to time the operation of the individual analysis and in order to facilitate serial, simultaneous analysis of a number of packets or frames.
Preferably, the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses. This enhances the speed of data transmission.
In that embodiment, any proposed piece(s) of additional information is preferably transmitted in the same data stream as the proposed piece(s) of information.
In the preferred embodiment, in at least one of the analysis procedures, the steps of: receiving the at least part of the data packet or frame, performing the one or more analyses of the packet or frame, and deriving the new proposal for at least one of the one or more predetermined pieces of information, are performed during a first integer times a predetermined period of time, where these steps are, in the at least one of the analysis procedures, performed in parallel on a number of packets or frames corresponding to the first integer.
Thus, this defines the rate at which this/these analysis procedure(s) is/are able to process frames/packets. Normally, the transmission of packet/frame and information between analysis procedures should be adapted to this rate.
In the preferred embodiment where the proposed information is transported in parallel between procedures and the packet or frame in parallel cells (but serially in cells), the predetermined time will normally be determined between the time where the first packet/frame cell reaches the procedure and the time where the proposed information reaches the procedure.
When the integer is one, the steps are performed during the predetermined period of time (such as a predetermined number of clock cycles from a clock providing pulses equally spaced in time). However, &s integer may be anything between 1 and 100 - or more. If a single operation, such as a lookup or calculation, in any of those steps cannot be performed within the predetermined period of time, it is preferably duplicated in order to ensure the timing of the steps.
One manner of easily splitting the above steps up into two groups of relatively independent steps would be to 1) receive the at least part of the data packet or frame and derive, as a part of the analysis step, part(s) of the frame or packet required in the analysis step, and transfer these parts to another super-step 2) wherein the one or more analyses of the (derived part(s)) of the packet or frame are performed, and the new proposal for at least one of the one or more predetermined pieces of information is derived. These two groups of steps may be performed in parallel on two different packets/frames.
One reason for not being able to perform all the steps within the predetermined period of time would be when a number of e.g. lookups in external memories are performed. These normally take some time, whereby the procedure will hold proposed information relating to the number of packets/frames as time goes by and more of the information is provided. When the full providing of information relating to a frame/packet has finished, this is forwarded to the remaining steps of the procedure.
In that respect, preferably, in the at least one of the analysis procedures, the steps of: receiving the proposed piece(s) of information from the previous procedure, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating the new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, are performed during a second integer times the predetermined period of time, where these steps are, in the analysis procedures, performed in parallel on a number of packets or frames corresponding to the second integer.
In this context, normally, the "number of packets or frames corresponding to the integer" will be a number being the integer.
It is noted that the first and second integer need not be the same. The complexity of a combination (or subpart thereof) and e.g. an analysis have no correlation even though they are performed in the same procedure.
Again, if any sub procedure of these steps cannot be completed within the predetermined period of time, this sub procedure is preferably duplicated in order for it to be performed in parallel on multiple packets/frames.
Now, it is clear that the storing of the packet/frame is preferably performed during the first- mentioned steps, whereas the packet/frame is preferably forwarded to a next procedure before or during the next-mentioned steps. During the next-mentioned steps, the packet/frame is no longer required, whereas a continued storing would only increase the latency of the system.
On the other hand, the proposed information from the previous procedure is not required until the proposed information is derived - that is until after the first-mentioned steps. Thus, preferably, in each analysis procedure, the receiving and/or outputting of the data packet and the receiving and/or outputting of the proposed piece(s) of information are offset in time by the predetermined period of time.
If the packet/frame can have a minimum size (as it does in e.g. Ethernet packets), the predetermined period of time preferably corresponds (or at least is not smaller than) to the period of time it will take to transfer this minimum packet size from one analysis procedure to the next. More preferably, the predetermined period of time will correspond to the minimum packet size including a minimum packet interframe gap - which is also defined in e.g. Ethernet packets.
In this situation, it is also seen that the minimum storage size for holding the packet/frame in an analysis procedure being able to perform the first-mentioned steps within the predetermined period of time (the integer is one), should be able to hold a minimum size frame. If the integer is more than one, a corresponding increase in memory is suitable.
In this preferred embodiment, it is seen that the packet/frame and the proposed information is clocked (offset in time) through the analysis procedures and that each procedure will be ready for receiving and analysing a packet/frame of a given minimum size for each predetermined period of time. Should an actual packet/frame actually be larger, the overall throughput rate (bits per second) will not be reduced (but the rate of packets per second will, naturally).
In the same or another embodiment, each procedure group comprises the steps of receiving the data packet or frame and outputting the data packet and possibly also the step of storing the data packet or frame in or between individual procedure groups.
Again, it is preferred that the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses, and that the receipt of the packet/frame and the proposed information is offset by the predetermined period of time.
The advantage of the present serial design - and especially the above-mentioned preferred embodiment - is that a high throughput (defined by the predetermined period of time) is combined with a high degree of parallel processing (individual analysis procedures may act on different packets/frames at the same time) while obtaining the learning process of the serial nature. The serial nature of the invention will cause the overall analysis time to be longer than a pure parallel processing, but the overall processing rate is not decreased.
In a second aspect, the invention relates to a system for providing one or more predetermined pieces of information relating to a data packet or frame, the system comprising: a plurality of serially interconnected analysis procedure means each comprising: means for receiving at least part of the data packet or frame, means for receiving proposed piece(s) of information from a previous analysis procedure, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, means for combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and means for outputting the new, proposed piece(s) of information, preferably to a subsequent analysis procedure means, and a final procedure means being adapted to receive the proposed piece(s) of information from a last analysis procedure means and to generate there from the one or more predetermined pieces of information relating to the data packet or frame.
In order to achieve a sufficiently high analysis speed, the present system may be provided in a single chip or ASIC where each procedure may be a separate block in the chip/ ASIC.
Preferably, the final procedure means is further adapted to: receive the data packet or frame, alter the data packet or frame in accordance with the piece(s) of information, and output the altered data packet or frame.
The final procedure means could be adapted to, during the altering step, introduce, into the received data packet or frame, one or more of the predetermined pieces of information.
Preferably, the analysis procedure means are adapted to not alter the data packet or frame so that any and all alterations to the data packet or frame is performed by the final procedure means.
Preferably the system further comprises: a first analysis procedure means comprising: means for receiving the data packet or frame, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, and means for outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures, where the first analysis procedure means further may comprise means for providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and means for combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
In general, the means for performing the one or more analyses of the packet or frame in different analysis procedure means may be adapted to act on different parts of the packet or frame and derive proposals for different piece(s) of information.
Each means for performing the one or more analyses of the data packet or frame may comprise means for extracting and/or analysing one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analyses.
In one embodiment, each of one or more of the combining means is adapted to, for each received piece of information for which a proposed new piece of information was derived, use the received proposed piece of information and the new, derived piece of information as indexes, identify a combination method in a database of combination methods. In that embodiment, the database of combination methods may be implemented as a two-dimensional matrix and where the combining means are adapted to use the received piece of information as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
As mentioned above, the analysis procedures may be intercalated by other procedures not performing analysis on the packet/frame but which analyses the proposed information and may perform operations thereon. One such procedure may be a policer or scheduler which monitors the number of frames/packets transmitted and which marks packets/frames (e.g. using the Action bits) to be dropped in order for the traffic to conform to e.g. a service agreement.
In a preferred embodiment, in at least one analysis procedure means: the receiving means are also adapted to receive proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information, the deriving means are adapted to also derive from the analyses a new proposal for at least one of the one or more additional piece(s) of information, the combining means are adapted to also combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generate new, proposed piece(s) of additional information, and the outputting means are adapted to also output the new, proposed piece(s) of additional information.
As mentioned above, the combination of information is preferably a combination of two corresponding pieces of information (one derived in the analysis means and one received thereby) and where received pieces of information, for which a corresponding proposal is not derived in the procedure, are simply output in un-amended form.
In this situation, the combining means are preferably adapted to combine, for at least one, but preferably each, piece of information for which the deriving means is adapted to provide a proposal, the received proposed piece of information and the new, derived proposed piece of information using a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information. The mathematical combination may be derived from a look-up table or matrix defining a number of mathematical combinations, and the combining means may be adapted to use the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
Also, the combining means may be adapted to identify a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information and to combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information to generate new, proposed piece(s) of additional information using the identified mathematical combination. Then, the combination means could be adapted to derive the mathematical combination from a look-up table or matrix defining a number of mathematical combinations by using the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
In this connection, any other combination of piece(s) of information and additional information may be used as look-up keys. Preferably, the final procedure means are also adapted to receive the one or more piece(s) of additional information and to generate the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information.
As described, this manner of providing the functionality by providing the operations in tables brings about a high programmability, and the system would normally further comprise means for updating the tables or matrices.
In a preferred embodiment, at least one analysis procedure means comprises means for providing further information for use in a second, subsequent analysis procedure means, the one analysis procedure means comprising means for outputting the further information, the second analysis procedure comprising means for receiving the further information, and any procedure means interposed between the first and second analysis procedure means comprise means for forwarding the further information to a subsequent procedure means.
Naturally, the same functionality is desired for the overall groups of procedures (see below).
The combination means of the second analysis means is preferably adapted to, when having received the further information, generate the new, proposed piece(s) of information as the received proposed piece(s) of information - so that the analysis means make no amendments to the information. Also, the combination means of the second analysis means are preferably adapted to, when having received the further information, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information - in order to also have no amendment of the additional information. In effect, this is a surpassing or overruling of the analysis of the second procedure means.
Also, one or more analysis procedure means preferably comprise means for receiving, amending, and outputting one or more information bits, where the amending means are adapted to amend the information bits in accordance with an output of the analysis means of the analysis procedure means. hi that situation, the final procedure means may be adapted to also receive the information bits and the received, proposed piece(s) of information from the last procedure means and to generate there from the one or more predetermined piece(s) of information relating to the data packet or frame. The final procedure means may also be adapted to generate the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the final procedure being adapted to identify the operation on the basis of the information bits.
A simple manner is to identify the operation on the basis of the actual bit pattern of the information bits.
An overall advantage is seen when the analysis procedure means are grouped into one or more procedure groups each comprising a number of serially interconnected analysis procedure means, the groups being serially interconnected, and at least one group comprising means for receiving proposed piece(s) of information from a previous group and output new, proposed piece(s) of information to a subsequent group. Then, a deriving means of an analysis procedure means is preferably adapted to determine whether the analyses of the actual or a subsequent procedure group should be performed, and wherein the actual procedure group, if the deriving means determines so, is adapted to output as the new, proposed piece(s) of information the proposed piece(s) of information received.
Also, one or more procedure groups may comprise means for storing the proposed piece(s) of information received prior to a first combining means of a first analysis procedure means of the procedure group, and the outputting means of each analysis procedure means of the group could be adapted to output also the proposed piece(s) of information received by the procedure group.
In this manner, when both the received proposals and those amended by the analysis means of the group are forwarded, it may at any time be decided to overrule or reverse the analysis performed so far by simply using the received proposals.
In one embodiment, at least some of the one or more analysis procedure means of at least one procedure group comprise means for receiving, amending, and outputting one or more information bits, where the amending means are adapted to amend information bits in accordance with a result of the analysis step of the analysis procedure. The overall functionality of these bits is described above.
Again, a series of procedures may be both analysing procedures actually performing analysis of the packet/frame and amending the proposed information transported there between - and procedures not performing analysis on parts of the packet/frame but which may perform operations on e.g. the proposed information. Naturally, the intercalated non-analysing procedures will forward (possibly amended) proposed information in the same manner as the analysing procedures.
In this situation, the at least one analysis procedure group may have a last procedure means being adapted to receive the information bits and the proposed piece(s) of information from a previous analysis procedure of the procedure group, to generate the proposed piece(s) of information, and output this/these. Also, the last procedure means preferably comprises means for generating the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the generating means being adapted to identify the operation on the basis of the information bits.
Again, the bit pattern of the bits may be used for the identification of the operation.
In general, the data packet or frame may conform to the Ethernet, IEEE 802.3, SONET, IP (IETF RFC 791), and/or Token Ring standard, and one analysis procedure means is preferably adapted to perform an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
Then, the analysis procedure means may be adapted to perform an analysis as to OSI Level 2, and wherein the one or more predetermined piece(s) of information relates to an output port identity of e.g. a switch comprising the present system and/or a NLAN identity or router leg. Alternatively, the analysis procedure means may be adapted to perform an analysis as to OSI Level 3, and wherein the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
Also, the analysis procedure means could be adapted to perform an analysis as to OSI Level 4, and wherein the one or more predetermined piece(s) of information relates to an identification of an IP protocol (TCP/UDP, ..) in order to e.g. determine how to interpret Level 5 contents, to provide a priority (such as different priorities to FTP and HTTP frames) or to determine different routes for different types of frames.
Preferably, each analysis procedure means comprises means for receiving the data packet or frame and outputting the data packet or frame - such as to a subsequent analysis procedure means. However, the last procedure means may not output the data packet or frame.
Also, the system could further comprise means for storing the data packet or frame in or between individual analysis procedure means.
Preferably, means are provided for transporting the data packet or frame and the proposed piece(s) of information in separate data streams, such as on separate busses, between analysis procedure means, any intercalated procedures, and procedure groups. Also, the proposed piece(s) of additional information could be transmitted in the same data stream as the proposed piece(s) of information.
In the preferred embodiment, at least one analysis procedure means is adapted to: receive the at least part of the data packet or frame, perform the one or more analyses of the packet or frame, and derive the new proposal for the at least one of the one or more predetermined pieces of information, within a first integer times a predetermined period of time, the at least one procedure means being able to perform these steps in parallel on a number of packets/frames corresponding to the first integer.
Again, the integer may be any positive integer, and preferably, the analysis procedure means is adapted to handle an amount of data corresponding to a predetermined amount of data multiplied with the integer (in order for parallel processing of multiple packets/frames if required).
As mentioned above, at least one other (or the same) analysis procedure means preferably is adapted to: receive the proposed piece(s) of information from the previous procedure, combine the received proposed piece(s) of information and the new, derived proposal(s) and generate the new, proposed piece(s) of information, and output the new, proposed piece(s) of information, within a second integer times a predetermined period of time, the at least one procedure means being able to perform these steps in parallel on a number of packets/frames corresponding to the second integer.
This brings about the preferred serial behaviour with parallel processing capability and minimal latency. As mentioned above, preferably each analysis procedure means is adapted to receive the data packet and the proposed piece(s) of information offset in time by a predetermined period of time.
To that effect, the system could further comprise means for providing a clocking signal comprising clocking pulses equally spaced in time and wherein the offset is a predetermined number of clocking pulses.
Also, each procedure group preferably comprises means for receiving the data packet or frame and outputting the data packet or frame.
Also, means could be provided for storing the data packet or frame in or between individual procedure groups, and the data packet or frame and the proposed piece(s) of information (also the additional information) may be transmitted in separate data streams, such as on separate busses.
Preferably, each procedure group is adapted to receive the data packet and the proposed piece(s) of information offset in time by a predetermined period of time. Then, means may be used for providing a clocking signal comprising clocking pulses equally spaced in time and wherein the offset is a predetermined number of clocking pulses.
One of the advantages in the present serial design is both the increased analysis throughput and the possibility of parallel analysis of multiple data packets or frames. Another advantage is that the individual analysis procedures or analysis procedure means as well as the groups may be used as standardized building blocks. In fact, these building blocks may be monolithic so that the output of one corresponds to the input of the next. In this manner, abutment is possible making the production of a chip or ASIC having the functionality easier.
Thus, in a third aspect, the invention relates to a number of analysis procedure means for use in the above system, each analysis procedure means comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted. Preferably, the physical positioning of inputs and outputs are so that the means may be abutted toward or to each other in order to provide data transfer.
Thus, each analysis procedure means is adapted to receive a packet or frame on one input and proposed information relating thereto on the other. The procedure means preferably outputs the packet or frame (and preferably after a predetermined period of time) and amended proposed information - amended in accordance with findings of the analysis performed.
Similarly, a fourth aspect relates to a number of procedure groups for use in the above system, each group comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted. Naturally, the same physical input/output positions are desired.
In the following, a preferred embodiment of the invention will be described with reference to the drawing, wherein:
Fig. 1 is a block diagram illustrating the structure of the preferred invention where a number of analysing units are used in series, Fig. 2 is a block diagram illustrating three of the units in more detail and with an exploded block diagram of a slice of a unit,
Fig. 3 illustrates the use in one slice of pairs of matrices for providing information and weights for an FCR, and
Fig. 4 is a more detailed block diagram of a slice.
A large number of different analyses are performed on frames, such as Ethernet frames or frames/packages conforming to other standards, such as POS, IEEE 802.3, Token Ring, etc.
A number of these analyses derive different types of information from the frame - also depending on the reason for analysing the packet/frame. Such information may be a priority thereof, information relating to switching ports (port identity, port group identity), NLAN information, information relating to flows, information relating to aggregation of links. OSI has divided data traffic - and thereby also analysis of Ethernet packets/frames - into a number of layers, where higher layer analysis may bring about additional information vis-a-vis a lower layer analysis.
Fig. 1 illustrates the preferred embodiment, which comprises 5 serially positioned units for processing a packet or frame, preferably an Ethernet frame, which enters the system at an input 12.
The system comprises an initialising unit 14, an OSI Layer 2 processing unit 16, an OSI Layer 3 processing unit 18, an OSI Layer 4 processing unit 20, and a director unit 22. It is advantageous to perform lower layer analysis before higher layer analysis. In this situation, a piece of information proposed by both a lower layer analysis and a higher layer analysis may be finally selected as the higher layer analysis result as the higher layer analysis would normally provide the best proposal for the information. Also, lower level analysis may determine whether and which higher analysis should be performed.
Between the units, the packet or frame is transported via conductors 12', and the information to be provided, in the form of a so-called Frame Control Record - FCR - is transported between units on conductors 13'.
A number of analyses under OSI Layers 2-4 are known, and the present invention is not dependent on which one(s) is/are used. The FCR may in principle be made as large as required. In the present embodiment, the FCR is transported in parallel over conductors 13'.
The packet or frame is transported over the conductors 12' in cells of size 64 bits - in parallel.
The output of the present invention may be a packet or frame (output 24) which is altered in order to reflect the information derived there from. This alteration may be an alteration of a field thereof - such as the TTL field or an IP/MAC address. Alternatively, the information derived may be positioned in a header portion thereof. A further alternative will be to actually, together with the packet or frame, output e.g. the FCR (output 24') for use in a subsequent process (higher level analysis or switching/routing). Also, the frame/packet may simply be extended with a proprietary field holding all or some of the information.
Fig. 2 illustrates the units 16, 18, and 20 in more detail. From this figure, it is seen that the units have a sub-structure with a number of slices (in unit 18, the slices are numbered 32, 34, and 36) each receiving/transmitting the FCR and packet/frame via the conductors 12' and 13'. The slices perform under-analysis relating to the OSI layer of the pertaining unit.
The internal structure of operation of the slice 34 of the unit 18 is illustrated in more detail in Fig. 2.
In this figure, it is seen that the frame/packet is received from the previous slice and stored in a storage 40. Logics 42 act on the received frame/packet in order to derive parts from the packet/frame, analyse these and derive Frame Control Record Contributions (FCRC) 44 to selected parts of the FCR - parts relating to the analysis performed by the present slice.
Each of the parts of the FCRC is processed with the corresponding part of the FCR 52 received from the previous slice. This processing is performed in a number of Processing Units 46, 48, and 50 which each receives a part of the FCRC 44 and the corresponding part of the received FCR 52. Each Processing Unit outputs a resulting part for use in the FCR 54 to be transmitted to the next slice.
It is seen that, naturally, not all parts of the FCR 52 are altered in a slice. Parts of the received FCR 52 are directly transferred to the FCR 54 output due to these not relating to the type of processing performed in the present slice.
Finally, if a Processing Unit determines that the analysis of the slice will not make sense - such as if the Processing Unit has found that the packet/frame is defective, the FCR 52 may be transferred directly into FCR 54 so that any amendments already performed by Processing Units may be reversed- see arrow 58.
The Processing Units
The actual operation of the Processing Units is as follows:
In fact, in this embodiment, not only the desired pieces of information are derived on the basis of the packet/frame but also additional information describing the desired pieces of information are introduced into the FCR. A simple manner of viewing this is that not only will the logics 42 derive e.g. a priority for the frame or packet but also a weight describing e.g. the certainty with which the derived priority is the correct priority. The piece of information and pertaining weight will be denoted an information tupple.
Each Processing Unit is adapted to receive the information tupples from the received FCR 52 and the FCRC 44 and to there from generate one information tupple for the FCR 54 to be output.
The manner in which two pieces of information may be combined into a single piece of information will depend heavily on the actual nature of the information. If the information is a priority, the highest, lowest or mean (sum, difference, or either one of the two values), e.g., of the two may be chosen for the result. This is not possible if the result is e.g. an address or group identifier, where, more likely, the operation would be the selection of one thereof on the basis of e.g. the highest weight. If the information is a single bit, the combination may be any bit operator (and, or, xor, or assignment to one of the values, e.g.).
In the presently preferred embodiment, the operations required will be represented, for each tupple and in each Processing Unit, in two matrices - one for the operation on the information in the tupple and one for the additional information (e.g. weight) of the tupple. See Fig. 3.
The actual operation is identified, for each Processing Unit, using the additional information from the received FCR 52 and the FCRC 44 as the two coordinates.
From Fig. 3 it is seen that the two weights (Wi, the weight from the received FCR 52, and Ws, the weight as proposed in the FCRC) are used as coordinates for determining both the additional information/weight, Wo, to be output and the operation, N-OPR, to be performed on the two pieces of information in order to obtain the information to be introduced in the FCR 54 to be output.
Thus, each Processing Unit has its own two matrices.
This provides a highly flexible programmability in that a change in a matrix at a given position will alter the manner in which a given type of situation is handled. The position in the matrix relates to both what has been determined from the packet in the previous analysis and what the present analysis has derived. Thus, it is possible to pinpoint the precise point in the analysis (or the exact type of packet/frame) to affect.
The actual size of the individual matrices will depend on the number of possible values of the weights, W, at that Processing Unit. These values may very well vary from Processing Unit to Processing Unit.
The matrices may be set up and maintained by an operator and software/CPU may be provided for accessing and maintaining these matrices.
Action bits
In addition to the above pieces of information (the actually desired information relating to the packet/frame) and the additional information, it is desired to have in the FCR a number of bits - so- called action bits - which do not relate to or describe any particular piece of information in the FCR. These action bits may be used for indicating alternatives or suspicions. Alternatives being e.g. the least favoured of two alternatives - where the more favoured alternative is given in a piece of information in the FCR. A suspicion may be an indication for a subsequent procedure to check something using other fields of the packet/frame than those derived and analysed in the present slice/unit.
Also, an Action bit may be set if the frame/packet should be discarded or if it should be mirrored (if it stems from a port/address, the traffic from which should be monitored and therefore copied to a given port or the like).
Especially, a pattern or the like of the action bits may be identified by a procedure/unit/slice - a pattern which no single unit/slice would recognize due to it e.g. not having all required information (not having read all relevant fields in the packet/frame). These action bits provide programmability and learning possibility also after manufacture of the chip.
In the present embodiment, 16 Action bits are used and each Action bit is followed, in the FCR, by a weight (3 bits).
In Processing Units relating to an Action bit, two matrices (however slightly simpler ones) are provided for this amendment when the actual slice does not provide a weight proposal, Ws, of its own but merely uses the input weight Wi. In this manner, the matrices are reduced to columns.
An action bit is preferably assigned to be set to e.g. 0 when updating the FCR non-atomically. If an error is seen - that is, that the FCR is not correctly updated - this bit will then signal to the Director slice to e.g. drop the packet. After a correct non-atomical update of the FCR, the bit will again be set to 1 to signal that the FCR is correct.
Transparency
A specific example of the operation of a slice/unit and one unit rendering a subsequent unit transparent may be seen when a slice in the unit 16 (OSI Layer 2) derives information relating to the Type/Length of the packet. This slice will derive a base priority of the packet and determine whether the packet is an IP packet. The priority will be added to the FCR and, if the packet is not an IP packet, information will be added to the FCR, which will render the unit 18 (relating to OSI Level 3 - IP packets) transparent in that any analysis performed therein will then not make sense.
The FCR comprises one enabling bit for each unit. Each unit will examine this bit before performing any analysis. One manner of ensuring that a given slice will not alter a given part of the FCR would be to provide also enabling bits for each slice in the system.
In fact, if a single Processing Unit of a slice is to be "disabled" in a certain situation (which has been identified previously during the analysis), a bit may be provided for each Processing Unit - or the additional information relating to the Processing Unit may be set so as to adapt to the contents of the matrices of the Processing Unit so that the incoming piece of information is output from the Processing Unit (if the situation is identified, the additional information is set to a value where the whole row of the matrices defines operations simply outputting the input information).
In the situation where a full unit is to be transparent, all the individual slices therein will be transparent. Alternatively, it may be desired to render only part of the slices transparent. This may be in a situation where some slices of e.g. a Layer 3 analyser relate only to IPv4 analysis and others only to IPv6 analysis, h this manner, these slices will never be active on the same frame.
This rendering transparent is illustrated in Fig. 4 where the received FCR is denoted 60, the output FCR 62, the FCRC 64 and the Processing Units 72.
Also illustrated is a Processing Unit enabler 68 receiving enabling information from the received FCR and outputting a "1" if the FCR information instructs the slice to be transparent. This "1" - or the alternative "0" - is transmitted to an OR gate 70 which also receives a "1" (for transparent mode) or "0" (for active mode) from an external source. The output of the gate 70 is transmitted to all Processing Units in the slice, and these will act to either perform no alteration of the incoming FCR (transparent mode) or perform any alteration controlled by the normal operation of the units.
The signal from the external source may be a signal used during e.g. testing or debugging where it will be an advantage that individual slices/units may be inactivated in order to test individual parts of the system.
FCR init
In the present embodiment, a first unit (14 in Fig. 1) is provided for providing an initial FCR. This is mainly due to the fact that a standard slice will only alter certain parts of the FCR and will require both a piece of information and a weight for identifying the operators required to provide the altered information. Thus, realistic information is provided in the FCR init unit, which simply outputs an FCR to the first unit - the Level 2 analysing unit.
An alternative would be to provide most or all of the slices and Processing Units with two modes of operation: one for the first insertion into the FCR and one for subsequent amendment thereof.
Action slice
In the present embodiment, most units, apart from the FCR init unit and the director unit (see below), comprises one or more analysis slices (32 and 34) and an Action slice (36), which is always the last slice in the unit. This slice derives no parts from the packet/frame and performs no analysis on the frame/packet.
The Action slice compares the actual Action bits of the FCR to seven 16-bit patterns and, depending on the match, one of 8 (one for each of the 7 patterns and one if no match is obtained) FCRC's is identified. Also, two matrices are provided for the operators combining the input FCR and FCRC into the output FCR.
Naturally, the Action slice may be made transparent like all other slices.
Packet normalization
In order for the analyser to be able to know where the individual fields in the packet are, the packets are preferably normalized. In the present embodiment, any NLAN tags are removed from the packet and added to a 128 bit header preceding the actual packet through the pipeline.
Director unit
The last unit (22 in Fig. 1) in the series of units is called a Director unit. This unit is, as the only unit in the series, allowed to actually alter the frame/packet. This is due to the fact that subsequent analysis units may reverse decisions made by earlier analysis units. Amendments to a packet/frame may not be easily reversed. Preferably, the amendments actually performed in the packet/frame are only ones that do not increase the size of the packet/frame. This is due to the fact that a size increase of the packet/frame may provide bandwidth problems on the egress of the present system - or later on in the system. Instead of performing size increasing changes to the packet/frame, information to that effect is provided in the header of the packet/frame in order for that amendment to be performed later on in the network. This is an advantage when the present system is, e.g. used as a processor before a switch. The bandwidth in the switch is critical whereby it is desired that the size increasing procedure be performed after switching. Any suitable unit, such as an egress part of the present system, may then perform the "post processing" of the frame or packet after it has been switched.
The Director unit actually outputs the result of the analysis - the predetermined pieces of information (see Fig. 1). This information may be output in a number of manners. In some embodiments, it is desired to have the information in a packet/frame having a size not larger than that input. Thus, if the pieces of information are standard parts of the frame/packets (such as priority, DMAC address, IP address or the like), this information may be provided at the corresponding position in the packet. If not, the information may be provided in the header thereof. Ethernet frames comprise an 8-byte preamble, of which e.g. the last 7 bytes may be used for this information.
In another embodiment, the pieces of information may be output from the Director in parallel to the frame/packet. Thus, the actual FCR may be output. This embodiment is useful if the present system is used e.g. as a standardized pre-processor for use before a higher-level processor which performs additional analysis on the basis of the packet/frame and/or the FCR.
If the Director slice receives an FCR with a drop-Action bit, it will simply not output the packet/frame. In this manner, the packet will not be dropped during analysis (as this decision might be reversed later on) but will not take up bandwidth after the present system.
Timing
In order for the above embodiment to actually be able to analyse more than 16 million Ethernet frames per second (10 Gbit/s of minimum Ethernet frames of 64 bytes with a 20 byte minimum interframe gap), parallel processing is required.
In the present embodiment, the parallel processing is obtained by the overall embodiment being able to analyse multiple frames - one or more in each slice.
The bus 12' is 64 bits wide which means that it takes 10 clock cycles to transfer a minimum Ethernet frame (64 bytes and 20 byte interframe gap) from one slice to the next.
It is clear that the steps of deriving the parts of the frame/packet, analysing the parts and deriving the FCRC, and the step of combining the received FCR with the FCRC and outputting a new FCR relating to another frame may each be performed on individual packets/frames and may be performed in parallel within a single slice. In fact, it is required that each of these part "processings" be completed within 10 clock cycles when performed on an Ethernet frame - in each slice and each unit. If this is not possible, the pertaining part process should be able to handle multiple packets in parallel in order for each slice to be able to start analysing an Ethernet frame each 10 clock cycles.
This, naturally, requires storage etc. adapted to this need. This is obvious and standard.
The FCR on the bus 13' and the first 64 bits of the Ethernet frame on the bus 12' are offset 10 clock cycles so that the full analysis (in the slices actually able to perform a full analysis within the 10 clock cycles) will be finished at the point in time where the FCR to be amended arrives. Also, at that point in time, the packet is forwarded to the next slice, which will be ready to analyse it. Thereafter, the Processing Units now have the information they need in order to generate the new FCR to output to the next slice.
Thus, actually, the frame may be analysed in one slice while its FCR is combined in the previous slice.
When the packet/frame to be analysed is longer than the minimum length, it will take more than 10 clock cycles to transfer it from slice to slice. In that situation, the slices will not start processing a new frame/packet until this arrives - which means not before the present packet is output. Naturally, this does not reduce the overall bit rate of the system.
At present, a clock frequency of 166 MHz is used providing a total bit throughput of over 10 Gbit/s.
From Fig. 1, it is seen that, actually, the individual units are separated and may be positioned anywhere in relation to each other on a chip. The units are standard, separate processes - or IP cores - which need not be re-tested when one unit is altered - or a new unit introduced.
All units are preferably physically prepared so that the parallel conductors 12' and 13' are positioned in the same positions (distance, direction, and number), so that these building blocks are easily assembled into an analysing chip.
This serial structure provides a number of advantages: easier backend process in ASIC development (routing/timing) in that additional levels of registers may be introduced between slices without interfering with the functional behaviour of the system, and functional blocks may be used and new ones be added with very little additional work.

Claims

1. A method of providing one or more predetermined pieces of information relating to a data packet or frame, the method comprising: a series of a plurality of analysis procedures each comprising the steps of: receiving at least part of the data packet or frame, receiving proposed piece(s) of information from a previous procedure, performing one or more analyses of the packet or frame, deriving from the analysis a new proposal for at least one of the one or more predetermined pieces of information, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, and a final procedure receiving the proposed piece(s) of information from a last analysis procedure and generating there from the one or more predetermined pieces of information relating to the data packet or frame.
2. A method according to claim 1, wherein the final procedure further comprises the steps of: receiving the data packet or frame, altering the data packet or frame in accordance with the piece(s) of information, and outputting the altered data packet or frame.
3. A method according to claim 2, wherein the altering step comprises introducing, into the received data packet or frame, one or more of the predetermined pieces of information.
4. A method according to claim 2 or 3, wherein the analysis procedures do not alter the data packet or frame.
5. A method according to any of the preceding claims, further comprising a first analysis procedure comprising the steps of: receiving the data packet or frame, performing one or more analyses of the packet or frame, deriving from the analysis a new proposal for at least one of the one or more predetermined pieces of information, and outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures.
6. A method according to claim 5, wherein the first analysis step comprises, prior to the deriving step, the step of providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and further comprising the step of combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
7. A method according to any of the preceding claims, wherein the step of performing the one or more analyses of the packet or frame in different analysis procedures are performed on different parts of the packet or frame and derive proposals for different piece(s) of information.
8. A method according to any of the preceding claims, wherein each step of performing the one or more analyses of the data packet or frame comprises extracting and/or analysing one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analysis.
9. A method according to any of the preceding claims, wherein each of the combining steps comprises, for each piece of information for which a proposed new piece of information was derived, using the received proposed piece of information and the new, derived piece of information as indexes to identify a combination method in a database of combination methods.
10. A method according to claim 9, wherein the database of combination methods is implemented as a two-dimensional matrix and where the received piece of information is used as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
11. A method according to any of the preceding claims, wherein, in at least one analysis procedure: the receiving step comprises also receiving proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information, the deriving step comprises also deriving from the analysis a new proposal for at least one additional piece of information, the combining step comprises also combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information, and the outputting step comprises also outputting the new, proposed piece(s) of additional information.
12. A method according to claim 11, wherein, for at least one piece of information for which the deriving step provided a proposal, the step of combining the received proposed piece of information and the new, derived proposed piece of information and generating the new, proposed piece of information comprises performing the combination as a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information.
13. A method according to claim 12, wherein the mathematical combination is derived from a lookup table or matrix defining a number of mathematical combinations and using the received piece(s) of additional information and anew, derived piece(s) of additional information as look-up keys.
14. A method according to any of steps 11-13, wherein the step of combining the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generating new, proposed piece(s) of additional information comprises, for at least one piece of additional infoπnation, performing the combination as a mathematical combination defined by the received proposed piece of additional information and the new, derived piece of additional information.
15. A method according to claim 14, wherein the mathematical combination is derived from a lookup table or matrix defining a number of mathematical combinations and using the received piece of additional information and a new, derived piece of additional information as look-up keys.
16. A method according to any of claims 11-15, wherein the final procedure also receives the one or more piece(s) of additional information and generates the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information.
17. A method according to claim 15, further comprising the step of updating the table or matrix.
18. A method according to any of the preceding claims, wherein one analysis procedure provides further information for use in a second, subsequent analysis procedure, the one analysis procedure comprising the step of outputting the further information, the second analysis procedure comprising the step of receiving the further information, and any analysis steps interposed between the first and second analysis procedures comprise the step of forwarding the further information to the subsequent analysis procedure.
19. A method according to claim 18, wherein the second analysis step is adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of information as the received proposed piece(s) of information.
20. A method according to claim 11 and 19, wherein the second analysis step is adapted to, when having received the further information and in the combining step, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information.
21. A method according to any of the preceding claims, wherein one or more analysis procedures is/are able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis step of the analysis procedure.
22. A method according to claim 21, wherein the final procedure is adapted to also receive the information bits and generate, on the basis thereof and the received, proposed piece(s) of information from the last analysis procedure the one or more predetermined piece(s) of information relating to the data packet or frame.
23. A method according to claim 22, wherein the final procedure generates the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits.
24. A method according to any of the preceding claims, wherein the analysis procedures are divided into one or more groups each comprising a plurality of serially performed analysis procedures, the groups of procedures being performed in series, and each group comprising the steps of receiving proposed piece(s) of information and outputting new, proposed piece(s) of information.
25. A method according to claim 24, wherein a deriving step of an analysis procedure of a group of procedures determines that the actual group of procedures should not be performed and wherein the actual group of procedures outputs as the new, proposed piece(s) of information the proposed piece(s) of information received.
26. A method according to claim 24 or 25, wherein one or more groups of procedures comprises storing the proposed piece(s) of information received prior to a first combining step of a first analysis procedure of the procedure group.
27. A method according to claim 24, wherein the outputting step of one or more analysis procedures of a procedure group comprises outputting also the proposed piece(s) of information received by the procedure group.
28. A method according to any of claims 24-27, wherein the one or more analysis procedures of at least one procedure group are able to receive, amend and output one or more information bits, where the amendment of the information bits is made in accordance with a result of the analysis step of the analysis procedure(s).
29. A method according to claim 28, wherein the at least one procedure group has a last procedure being adapted to receive the information bits and generate, on the basis thereof and the received, proposed piece(s) of information from a previous analysis procedure of the procedure group, the proposed piece(s) of information to be output from the procedure group.
30. A method according to claim 29, wherein the last procedure generates the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the operation being identified on the basis of the information bits.
31. A method according to any of the preceding claims, wherein the data packet or frame conforms to the IEEE 801.2, Ethernet, SONET, and/or the Token Ring standard, and wherein one analysis procedure performs an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
32. A method according to claim 31, wherein the analysis procedure performs an analysis as to OSI Level 2, and wherein the one or more predetermined piece(s) of information relates to an output port identity, a NLAN identity and/or a router leg.
33. A method according to claim 31 or 32, wherein the analysis procedure performs an analysis as to OSI Level 3, and wherein the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
34. A method according to claim 31, 32, or 33, wherein the analysis procedure performs an analysis as to OSI Level 4, and wherein the one or more predetermined piece(s) of information relates to an identification of an IP protocol (TCP/UDP, ..), and/or a priority.
35. A method according to any of the preceding claims, wherein each analysis procedure comprises the steps of receiving the data packet or frame and outputting the data packet.
36. A method according to claim 35, further comprising the step of storing the data packet or frame in or between individual analysis procedures.
37. A method according to claim 35 or 36, wherein the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses.
38. A method according to claim 37 and 11, wherein the proposed piece(s) of additional information is transmitted in the same data stream as the proposed piece(s) of information.
39. A method according to any of claims 36-38, and wherein, in at least one of the analysis procedures, the steps of: receiving the at least part of the data packet or frame, performing the one or more analyses of the packet or frame, and deriving the new proposal for at least one of the one or more predetermined pieces of information, are performed during a first integer times a predetermined period of time, where these steps are, in the at least one of the analysis procedures, performed in parallel on a number of packets or frames corresponding to the first integer.
40. A method according to claim 39, wherein, in the at least one of the analysis procedures, the steps of: receiving the proposed piece(s) of information from a previous procedure, combining the received proposed piece(s) of information and the new, derived proposal(s) and generating the new, proposed piece(s) of information, and outputting the new, proposed piece(s) of information, are performed during a second integer times the predetermined period of time, where these steps are, in the analysis procedures, performed in parallel on a number of packets or frames corresponding to the second integer.
41. A method according to any of claims 39 or 40, wherein, in each analysis procedure, the receiving and/or outputting of the data packet and the receiving and/or outputting of the proposed piece(s) of information are offset in time by the predetermined period of time.
42. A method according to any of claims 39-41, further comprising the step of providing a clocking signal comprising clocking pulses equally spaced in time and wherein the predetermined period of time is a predetermined number of clocking pulses.
43. A method according to claim 24, wherein each procedure group comprises the steps of receiving the data packet or frame and outputting the data packet.
44. A method according to claim 43, further comprising the step of storing the data packet or frame in or between individual procedure groups.
45. A method according to claim 43 or 44, wherein the data packet or frame and the proposed piece(s) of information are transmitted in separate data streams, such as on separate busses.
46. A system for providing one or more predetermined pieces of information relating to a data packet or frame, the system comprising: a plurality of serially interconnected analysis procedure means each comprising: means for receiving at least part of the data packet or frame means for receiving proposed piece(s) of information from a previous analysis procedure, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal for at least one of the one or more predetermined pieces of information, means for combining the received proposed piece(s) of information and the new, derived proposal(s) and generating new, proposed piece(s) of information, and means for outputting the new, proposed piece(s) of information, and a final procedure means being adapted to receive the proposed piece(s) of information from a last analysis procedure and to generate there from the one or more predetermined pieces of information relating to the data packet or frame.
47. A system according to claim 46, wherein the final procedure means are further adapted to: receive the data packet or frame, alter the data packet or frame in accordance with the piece(s) of information, and output the altered data packet or frame.
48. A system according to claim 47, wherein the final procedure means are adapted to, during the altering step, introduce, into the received data packet or frame, one or more of the predetermined pieces of information.
49. A system according to claim 47 or 48, wherein the analysis procedure means are adapted to not alter the data packet or frame.
50. A system according to any of claims 46-49, further comprising a first analysis procedure means comprising: means for receiving the data packet or frame, means for performing one or more analyses of the packet or frame, means for deriving from the analyses a new proposal at least one of the one or more predetermined pieces of information, and means for outputting the derived proposed piece(s) of information to a first analysis procedure of the series of analysis procedures.
51. A system according to claim 50, wherein the first analysis procedure means further comprise means for providing proposed piece(s) of information as predetermined (default) information relating to the predetermined piece(s) of information, and means for combining the provided proposed piece(s) of information and the new derived proposal(s) and generating the proposed piece(s) of information.
52. A system according to any of claims 46-51, wherein the means for performing the one or more analyses of the packet or frame in different analysis procedure means are adapted to act on different parts of the packet or frame and derive proposals for different piece(s) of information.
53. A system according to any of claims 46-52, wherein each means for performing the one or more analyses of the data packet or frame comprises means for extracting and/or analysing one or more predetermined parts of the data packet or frame and deriving the proposed piece(s) of information from the analyses.
54. A system according to any of claims 46-53 wherein each of one or more of the combining means is adapted to, for each piece of information for which a proposed new piece of information was derived, use the received proposed piece of information and the new, derived piece of information as indexes, identify a combination method in a database of combination methods.
55. A system according to claim 54, wherein the database of combination methods is implemented as a two-dimensional matrix and where combining means are adapted to use the received piece of information as a first coordinate and the new, derived piece of information as another coordinate, the identified combination method being identified at the matrix field having the two coordinates.
56. A system according to any of claims 46-55, wherein, in at least one analysis procedure means: the receiving means are also adapted to receive proposed piece(s) of additional information each relating to one or more of the one or more predetermined piece(s) of information, the deriving means are adapted to also derive from the analysis a new proposal for at least one of the one or more additional pieces of information, the combining means are adapted to also combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information and generate new, proposed piece(s) of additional information, and the outputting means are adapted to also output the new, proposed piece(s) of additional information.
57. A system according to claim 56, wherein, for at least one piece of information for which the deriving means is adapted to provide a proposal, the combining means are adapted to combine the received proposed piece of information and the new, derived proposed piece of information using a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information relating to the piece of information.
58. A system according to claim 57, wherein the mathematical combination is derived from a lookup table or matrix defining a number of mathematical combinations and wherein the combining means are adapted to use the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
59. A system according to any of claims 56-58, wherein the combining means are adapted to identify a mathematical combination defined by the received proposed piece(s) of additional information and the new, derived piece(s) of additional information and to combine the received proposed piece(s) of additional information and the new derived proposal(s) for additional information to generate new, proposed piece(s) of additional information using the identified mathematical combination.
60. A system according to claim 59, wherein the combination means are adapted to derive the mathematical combination from a look-up table or matrix defining a number of mathematical combinations by using the received piece(s) of additional information and new, derived piece(s) of additional information as look-up keys.
61. A system according to any of claims 56-60, wherein the final procedure means also are adapted to receive the one or more piece(s) of additional information and to generate the one or more predetermined pieces of information relating to the data packet or frame also on the basis of the additional information.
62. A system according to claim 58 or 60, further comprising means for updating the table or matrix.
63. A system according to any of claims 46-62, wherein at least one analysis procedure means comprises means for providing further information for use in a second, subsequent analysis procedure means, the one analysis procedure means comprising means for outputting the further information, the second analysis procedure comprising means for receiving the further information, and any analysis procedure means interposed between the first and second analysis procedure means comprise means for forwarding the further information to the subsequent analysis procedure means.
64. A system according to claim 63, wherein the combination means of the second analysis means is adapted to, when having received the further information, generate the new, proposed piece(s) of information as the received proposed piece(s) of information.
65. A system according to claim 56 and 63 or 64, wherein the combination means of the second analysis means is adapted to, when having received the further information, generate the new, proposed piece(s) of additional information as the received proposed piece(s) of additional information.
66. A system according to any of claims 46-65, wherein one or more analysis procedure means comprise means for receiving, amending, and outputting one or more information bits, where the amending means is adapted to amend the information bits in accordance with an output of the analysis means of the analysis procedure means
67. A system according to claim 66, wherein the final procedure means is adapted to also receive the information bits and the received, proposed piece(s) of information from the last analysis procedure means and to generate there from the one or more predetermined piece(s) of information relating to the data packet or frame.
68. A system according to claim 67, wherein the final procedure means is adapted to generate the one or more predetermined piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the final procedure being adapted to identify the operation on the basis of the information bits.
69. A system according to any of claims 46-68, wherein the analysis procedure means are grouped into one or more procedure groups each comprising a number of serially interconnected analysis procedure means, the groups being serially interconnected, and at least one group comprising means for receiving proposed piece(s) of information from a previous group and output new, proposed piece(s) of information to a subsequent group.
70. A system according to claim 69, wherein a deriving means of an analysis procedure means is adapted to determine whether the analysis of the actual procedure group should be performed, and wherein the actual procedure group, if the deriving means determines so, is adapted to output as the new, proposed piece(s) of information the proposed piece(s) of information received.
71. A system according to claim 70, wherein one or more procedure groups comprises means for storing the proposed piece(s) of information received prior to a first combining means of a first analysis procedure means of the procedure group.
72. A system according to claim 69 or 70, wherein the outputting means of each analysis procedure means is adapted to output also the proposed piece(s) of information received by the procedure group.
73. A system according to any of claims 69-72, wherein at least some of the one or more analysis procedure means of at least one procedure group comprise means for receiving, amending, and outputting one or more information bits, where the amending means are adapted to amend information bits in accordance with a result of the analysis step of the analysis procedure.
74. A system according to claim 73, wherein the at least one analysis procedure group has a last procedure means being adapted to receive the information bits and the proposed piece(s) of information from a previous analysis procedure of the procedure group, to generate the proposed piece(s) of information, and to output this/these.
75. A system according to claim 74, wherein the last procedure means comprises means for generating the proposed piece(s) of information by performing a predetermined operation on the received, proposed piece(s) of information, the generating means being adapted to identify the operation on the basis of the information bits.
76. A system according to any of claims 46-75, wherein the data packet or frame conforms to the IEEE 802.3, Ethernet, SONET, and/or Token Ring standard, and wherein one analysis procedure means is adapted to perform an analysis as to one or more of the group consisting of: OSI Level 2, OSI Level 3, and OSI level 4.
77. A system according to claim 76, wherein the analysis procedure means is adapted to perform an analysis as to OSI Level 2, and wherein the one or more predetermined piece(s) of infoπnation relates to an output port identity, a NLAN identity and/or a router leg.
78. A system according to claim 76 or 77, wherein the analysis procedure means is adapted to perform an analysis as to OSI Level 3, and wherein the one or more predetermined piece(s) of information relates to a Time To Live, Quality of Service, or a Destination/Source IP Address.
79. A system according to claim 76, 77, or 78, wherein the analysis procedure means is adapted to perform an analysis as to OSI Level 4, and wherein the one or more predetermined piece(s) of information relates to an identification of an IP protocol and/or a priority.
80. A system according to any of claims 46-79, wherein each analysis procedure means comprises means for receiving the data packet or frame and outputting the data packet or frame.
81. A system according to claim 80, further comprising means for storing the data packet or frame in or between individual analysis procedure means.
82. A system according to claim 80 or 81, comprising means for transporting the data packet or frame and the proposed piece(s) of information in separate data streams, such as on separate busses, between analysing procedure means and procedure groups.
83. A system according to claim 81 and 56, being adapted to transmit the proposed piece(s) of additional information in the same data stream as the proposed piece(s) of information.
84. A system according to any of claims 80-83, wherein at least one analysis procedure means is adapted to: receive the data packet or frame, perform the one or more analyses of the packet or frame, and derive the new proposal for the at least one of the one or more predetermined pieces of information, within a first integer times a predetermined period of time, the at least one procedure being able to perform these steps in parallel on a number of packets/frames coπesponding to the first integer.
85. A system according to claim 84, wherein at least one other analysis procedure means is adapted to: receive the proposed piece(s) of information from the previous procedure, combine the received proposed piece(s) of information and the new, derived proposal(s) and generate the new, proposed piece(s) of information, and output the new, proposed piece(s) of information, within a second integer times a predetermined period of time, the at least one procedure being able to perform these steps in parallel on a number of packets/frames coπesponding to the second integer.
86. A system according to claim 84, wherein the at least one analysis procedure comprises storing means for storing at least a predetermined portion of packet or frame data.
87. A system according to any of claims 84-86, wherein at least one analysis procedure means is adapted to receive and/or output the data packet and the proposed piece(s) of information offset in time by the predetermined period of time.
88. A system according to any of claims 84-87, further comprising means for providing a clocking signal comprising clocking pulses equally spaced in time and wherein the predetermined period of time is a predetermined number of clocking pulses.
89. A system according to claim 69, wherein each procedure group comprises means for receiving the data packet or frame and outputting the data packet or frame.
90. A system according to claim 89, further comprising means for storing the data packet or frame in or between individual procedure groups.
91. A system according to claim 89 or 90, being adapted to transmit the data packet or frame and the proposed piece(s) of information in separate data streams, such as on separate busses.
92. A number of analysis procedure means for use in the system according to any of claims 46-91, each analysis procedure means comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted.
93. A number of procedure groups for use in the system according to any of claims 46-91, each group comprising two data input means and two data output means, the data input and output means being positioned so that the analysis procedure means are adapted to be abutted.
PCT/US2002/019489 2001-06-22 2002-06-21 A method and a system for providing information relating to a data packet or frame WO2003001750A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US29976301P 2001-06-22 2001-06-22
US60/299,763 2001-06-22

Publications (1)

Publication Number Publication Date
WO2003001750A1 true WO2003001750A1 (en) 2003-01-03

Family

ID=23156189

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2002/019489 WO2003001750A1 (en) 2001-06-22 2002-06-21 A method and a system for providing information relating to a data packet or frame

Country Status (1)

Country Link
WO (1) WO2003001750A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6308228B1 (en) * 1998-11-23 2001-10-23 Duke University System and method of adaptive message pipelining
US6430198B1 (en) * 1997-11-14 2002-08-06 3Com Corporation Apparatus and method of reducing packet length count processing

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6430198B1 (en) * 1997-11-14 2002-08-06 3Com Corporation Apparatus and method of reducing packet length count processing
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6308228B1 (en) * 1998-11-23 2001-10-23 Duke University System and method of adaptive message pipelining

Similar Documents

Publication Publication Date Title
CA2375397C (en) Packet processing unit
US5949786A (en) Stochastic circuit identification in a multi-protocol network switch
US7647472B2 (en) High speed and high throughput digital communications processor with efficient cooperation between programmable processing components
US9111013B2 (en) Hierarchical associative memory-based classification system
US7218632B1 (en) Packet processing engine architecture
US6532229B1 (en) Low cost link aggregation method and system
US6856981B2 (en) High speed data stream pattern recognition
US6256306B1 (en) Atomic network switch with integrated circuit switch nodes
US5546390A (en) Method and apparatus for radix decision packet processing
KR101371858B1 (en) Method for processing a plurality of data and switching device for switching communication packets
US8761182B2 (en) Targeted flow sampling
EP1729462B1 (en) Policy based routing using a fast filter processor
US7245623B1 (en) System and method using hierarchical parallel banks of associative memories
US7433307B2 (en) Flow control in a network environment
KR101989586B1 (en) Intelligent phy with security detection for ethernet networks
US20030007489A1 (en) Data extraction system for packet analysis
US20010049808A1 (en) Checksum engine and a method of operation thereof
US7787463B2 (en) Content aware apparatus and method
US20060114900A1 (en) Fast filter processor metering and chaining
EP1224773A1 (en) Apparatus and method for identifying data packet types in real time on a network switch port
EP3419226A1 (en) Hash-based selection of network packets for packet flow sampling in network communications systems
WO1999059078A9 (en) Digital communications processor
EP1432181A2 (en) packet classifier
CN100574312C (en) Analyze the analyzer of packet
WO2000010297A1 (en) Packet processing architecture and methods

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ CZ DE DE DK DK DM DZ EC EE EE ES FI FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

Kind code of ref document: A1

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SD SE SG SI SK SL TJ TM TN TR TT TZ UA UG US UZ VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase
NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP