Patent ID: 6385205
Filing Date: 2002-05-07
Classification: H04L

Abstract:
Hardware-only filter means for use in selecting from a stream of packets containing binary information a given packet having a predetermined characteristic, comprising:(a) grid means including a plurality of columns, a plurality of rows, a column header including a succession of column header memories, and a row header including a succession of row memories, said columns and said rows intersecting to define a plurality of squares; (b) column header placing means for placing into said columns header memory means values that are characteristic of the packets in the stream, respectively; (c) row header supply means for supplying a succession of predetermined row header values for each row, respectively; (d) row header placing means for successively placing each of said predetermined row header values into said row header memory means; (e) column pointer means for identifying a specific column of said grid; (f) column initializing means for operating said column pointer means to initially identify a first column of said grid; (g) row pointer means for identifying a specific row of said grid; (h) row initializing means for operating said row pointer means to identify a given row of said grid; (i) comparison means for comparing a first header octet value with the corresponding row octet value and for producing a first binary number the value of which is a function of the matching and non-matching of the respective header and row values, respectively; (j) offset supply means for supplying a succession of predetermined offset values for each row, respectively; (k) grid populating means connected with said comparison means and said offset means for introducing said first binary number into the square of said grid defined by the current positions of said column pointer means and said row pointer means, as modified by said offset means; (l) row incrementing means for moving said row pointer one row in either an up or down direction in said column; (m) last row detecting and reinitializing means for detecting when said row pointer is at the last row of said grid, and for resetting said row pointer means to said given row; (n) column evaluating means operable by said last row detecting means for detecting when all of the squares of any column contain positive binary values; (o) column incrementing means operable in the event that there is no given binary match in a column for moving said column pointer one column to either the right or the left; (p) last column detecting and reinitializing means for detecting when said column pointer is at the last column of said grid, and for resetting said column pointer means to said given column, and (q) means operable by said column evaluating means when a binary match occurs in all of the squares of a given column to select said given packet from said packet stream.