Data packet filter using contents addressable memory (CAM) and method
First Claim
1. A method of identifying a target data packet from a series of data packets being received or transmitted by a communications device, each data packet having a series of data values, comprising the steps of:
- (a) establishing at least one condition for the target data packet, each of the at least one condition specifying a particular data value being located in a particular position of the target data packet;
(b) determining whether a present data value from a data packet is located in the particular position specified by any of the at least one condition and generating a position match indicator;
(c) determining whether the present data value contains the particular data value specified by any of the at least one condition and generating a data value match indicator;
(d) comparing the position match indicator for the present data value and the data value match indicator for the present data value and generating a positive condition match indicator for the present data value when both the position match indicator and the data value match indicator are positive; and
(e) generating a positive evaluation result indicative of the presence of the target data packet when an alive indicator associated with a last condition match indicator of the present data value is alive, the alive indicator associated with a last condition match indicator being alive when a last condition and any preceding conditions of the at least one condition have sequentially been satisfied by the data packet and the data packet thereby having generated a positive match indicator for each of the at least one condition.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of identifying a target data packet from a series of data packets being received or transmitted by a communications device, each data packet having a series of data values. The method having the steps of establishing a condition for the target data packet, the condition having a particular data position value and an associated particular data value; storing the particular data position value in a first content addressable memory, the first content addressable memory receiving a value related to a data position of a data value and the first content addressable memory generating a position match indicator; storing the particular data value in a second content addressable memory, the second content addressable memory receiving the data value and the second content addressable memory generating the data value match indicator; comparing the position match indicator and the data value match indicator to determine if the condition for the target data packet has been satisfied by the transmitted data value. Also discussed are various embodiments of port filter devices to implement the method.
-
Citations
29 Claims
-
1. A method of identifying a target data packet from a series of data packets being received or transmitted by a communications device, each data packet having a series of data values, comprising the steps of:
-
(a) establishing at least one condition for the target data packet, each of the at least one condition specifying a particular data value being located in a particular position of the target data packet;
(b) determining whether a present data value from a data packet is located in the particular position specified by any of the at least one condition and generating a position match indicator;
(c) determining whether the present data value contains the particular data value specified by any of the at least one condition and generating a data value match indicator;
(d) comparing the position match indicator for the present data value and the data value match indicator for the present data value and generating a positive condition match indicator for the present data value when both the position match indicator and the data value match indicator are positive; and
(e) generating a positive evaluation result indicative of the presence of the target data packet when an alive indicator associated with a last condition match indicator of the present data value is alive, the alive indicator associated with a last condition match indicator being alive when a last condition and any preceding conditions of the at least one condition have sequentially been satisfied by the data packet and the data packet thereby having generated a positive match indicator for each of the at least one condition. - View Dependent Claims (2, 3, 4, 5, 6, 7)
storing a value related to the particular position in a first content addressable memory, the first content addressable memory receiving a value related to the position of the data value and the first content addressable memory generating the position match indicator; and
storing the particular data value in a second content addressable memory, the second content addressable memory receiving the data value and the second content addressable memory generating the data value match indicator.
-
-
3. The method according to claim 2, wherein the second content addressable memory is a ternary content addressable memory.
-
4. The method according to claim 1, further comprising the steps of:
-
establishing criteria related to the target data packet, and translating the criteria into a the particular data value and associated particular position to derive the at least one condition used to identify the target data packet.
-
-
5. The method according to claim 1, wherein the particular position is a byte position of the data values.
-
6. The method according to claim 1, wherein steps (b) and (c) are conducted independently of one another and simultaneously for each present data value.
-
7. The method according to claim 1, further comprising the step of strobing the evaluation result upon the receipt of an end of packet indication.
-
8. A method of identifying a target data packet from a series of data packets being received or transmitted by a communications device, each data packet having a series of data values, comprising the steps of:
-
establishing a plurality of conditions for the target data packet, each condition having a particular data position value and an associated particular data value;
storing associated particular data position values and particular data values from the conditions in associated pairs of content addressable memory addresses, each pair of addresses having a first address located in a first content addressable memory and a second address located in a second content addressable memory, the first content addressable memory receiving a value related to a data position of a data value and the first content addressable memory generating a position match indicator, and the second content addressable memory receiving the data value and the second content addressable memory generating a data value match indicator;
comparing the position match indicator and the data value match indicator to determine if one of the conditions for the target data packet has been satisfied by the transmitted data value; and
updating an alive register having a series of values, each value associated with one of the pair of addresses being used to store each of the conditions, each value of the alive register based on an associated value of the comparison of the position match indicator and the data value match indicator. - View Dependent Claims (9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
establishing criteria related to the target data packet, and translating the criteria into the particular data value and the associated particular data position to derive the condition.
-
-
17. The method according to claim 8, wherein the particular data position value corresponds to a byte position of the data values.
-
18. The method according to claim 8, further comprising the step of strobing at least one value of the alive register upon receipt of an end of packet indication to determine whether the target data packet was received or transmitted by the communications device.
-
19. A port filter for identifying at least one target data packet from a plurality of data packets comprising:
-
a first content addressable memory having a plurality of entries, the first content addressable memory storing a position value in each of the plurality of entry addresses;
a second content addressable memory having a plurality of entries, the second content addressable memory storing an expected data value in each of the plurality of entry addresses, the entries of the first content addressable memory and the second content addressable memory being logically paired such that the values stored in each pair of entries correspond to a condition used to identify the at least one target data packet; and
an alive indication memory, the alive indication memory being progressively updated as a data packet is being received or transmitted to indicate whether each condition has been satisfied by the received or transmitted data packet. - View Dependent Claims (20, 21, 22, 23, 24, 25, 26, 27, 28, 29)
-
Specification