A method of address compression for a data stream structured in packets or cells, each including a destination identifier consisting of a string of N bits (INCVECT) constituting an address space (U) of size 2N, consisting in an algorithm, executable in a predictable time span, mapping different points or domains of said address space (U) belonging to a certain number (Nclasses) of subsets (S1, S2, Sj, SNclasses) of identifiers to be compressed to a number of strings, being said number equal to the said number of subsets (Nclasses), these strings constituting different compressed address spaces (C1, C2, Cj, CNclasses), characterized in that the method comprises the steps of:
- a) splitting said address space (U) of incoming N-bit identifiers into a plurality of subspaces by the use of a direct addressing table (DAT), a row of which is pointed by a first predefined slice of the incoming N-bit identifier (INCVECT) for outputting a first pointer datum;
- b) clustering said subsets (S1, S2, Sj, SNclasses) of N-bit identifiers contained in said subspaces by the use of a plurality of routing tables (RTij), the tables being organized in a tree, a page of the firsttable (RT11) being pointed by said first pointer datum and the row of the pointed page being selected by a predefined second slice of the incoming N-bit identifier (INCVECT), for outputting a second pointer datum, used to point a page of the following tables of the cascade (RT12) if the same subset S1 has to be clustered or to point to at least two different tables (RT21, and RT22, . . . ), downstream of a branching of said tree, if different subsets must be clustered to different compressed address spaces, for selecting, by means of a predefined slice of the incoming N-bit identifier (INCVECT), at least two different pointer data suitable to point to a next stage of Routing Table of said tree (RTij), and so forth until all bits of the incoming N-bit identifier (INCVECT), have been utilized, outputting from the last pointed routing tables (RTnj) a plurality of final pointer data (CLID1, CLID2, CLIDj, CLIDNclasses) identifying as many clusters in different sequential search tables (SST1, SST2, SSTj, SSTNclasses) each organized in pages composed by a number of rows equal to said predefined number (SSLLj), each page corresponding to a cluster, and each sequential search table corresponding to points or domains or subsets Sj belonging to said address space (U), each cluster being smaller of or equal to said predefined number of rows (SSLL1, SSLL2, SSLLj, SSLLNclasses) and storing only points belonging to the said subset of N-bit identifiers (S1, S2, Sj, SNclasses) which map to the corresponding said (C1, C2, Cj, CNclasses) subsets of compressed addresses.
- c) performing, on the clusters belonging to each sequential search table (SST1, SST2, SSTj, SSTNclasses) pointed by said final pointer data (CLID1, CLID2, CLIDj, CLIDNclasses) a sequential search by means of different address generators, one for each sequential search table, verifying the match of the data stored in said sequential search tables (OUTVECTj) with said incoming N-bit identifier (INCVECT), identifying said compressed addresses subsets (C1, C2, Cj, CNclasses) of compressed addresses.