WO2001063852A1 - A method and arrangement for constructing, maintaining and using lookup tables for packet routing - Google Patents

A method and arrangement for constructing, maintaining and using lookup tables for packet routing Download PDF

Info

Publication number
WO2001063852A1
WO2001063852A1 PCT/FI2001/000163 FI0100163W WO0163852A1 WO 2001063852 A1 WO2001063852 A1 WO 2001063852A1 FI 0100163 W FI0100163 W FI 0100163W WO 0163852 A1 WO0163852 A1 WO 0163852A1
Authority
WO
WIPO (PCT)
Prior art keywords
record
search tree
memory
subtree
address
Prior art date
Application number
PCT/FI2001/000163
Other languages
English (en)
French (fr)
Inventor
Jukka HEIKKILÄ
Mikko Takala
Original Assignee
Tellabs Oy
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 Tellabs Oy filed Critical Tellabs Oy
Priority to AU2001240713A priority Critical patent/AU2001240713A1/en
Publication of WO2001063852A1 publication Critical patent/WO2001063852A1/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
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables

Definitions

  • the invention concerns generally the technology of routing packets through a packet-switched data network. Especially the invention concerns the technology of constructing, mamtaining and using lookup tables for the routing task so that the number of memory accesses and the amount of required memory are as small as possible.
  • Figs. 1 and 2 illustrate schematically some aspects of the known task of routing a data packet 101 from a sender node 102 to a recipient node 103 (or sender subnetwork to recipient sub-network) through a packet-switched data network 100 consisting of a number of interconnected routers.
  • a packet-switched data network 100 consisting of a number of interconnected routers.
  • 01 routers 104, 105, 106 and 107 are shown in Fig. 1; practical packet-switched data networks may comprise thousands of routers.
  • Fig. 1 illustrate schematically some aspects of the known task of routing a data packet 101 from a sender node 102 to a recipient node 103 (or sender subnetwork to recipient sub-network) through a packet-switched data network 100 consisting of a number of interconnected routers.
  • 01 routers 104, 105, 106 and 107 are shown in Fig. 1; practical packet-switched data networks may comprise thousands of routers
  • FIG. 2 shows schematically a router 104 with a number of input ports 201, 202 and 203, a number of output ports 211, 212 and 213, a cross-connecting block 220 capable of coupling a packet from an arbitrary input port to any of the output ports, a control block 221 arranged to control the cross-connecting functionality of block 220 and a memory 222 coupled to the control block.
  • a router does not comprise physically separate connections for the input ports and output ports; Fig. 2 only serves to illustrate the concept of connecting between ports.
  • the data packet 101 comprises, in a destination address or DA field (not separately shown in Fig. 1), a destination address of the recipient node 103.
  • the destination address consists of a network prefix and a host identifier.
  • the router 104 maintains, in the memory block 222, a look-up table (not separately shown in Fig. 2) where recipient addresses are associated with output port identifiers.
  • the network prefix of the recipient node 103 appears in the lookup table together with the identifier of that one of the output ports 211, 212 or 213 into which all packets to that recipient should be coupled in order to correctly pass them along on their way from the sender to the recipient.
  • the control block 221 When a packet comes into the router 104 through one of the input ports 201, 202 or 203, the control block 221 reads the destination address from the packet and uses it as a search key to find the corresponding output port identifier from the memory 222. It gives the output port identifier it found to the cross-connecting block 220 as a cross-connecting instruction so that the latter is able to take the packet and couple it into the correct output port.
  • the output port identifier is also known as the next-hop.
  • the routing arrangement should be optimized regarding both speed and memory consumption.
  • LC level compressed
  • Figs. 3a, 3b and 3c illustrate the search for five given variable length addresses in a binary tree (Fig. 3a), an LC tree with 3 levels (Fig. 3b) and an LC tree with 2 levels (Fig. 3c).
  • Fig. 3a the exemplary addresses 00, 0101, 111000, 111010 and 1111 should be found. Searching begins at the root of the tree and follows the nodes downwards until a (longest) match is found.
  • the search for address 00 terminates at node 301, the search for address 0101 at node 302, the search for address 111000 at node 303, the search for address 111010 at node 304 and the search for node 1111 at node 305.
  • Fig. 3a the search for address 00 terminates at node 301, the search for address 0101 at node 302, the search for address 111000 at node 303, the search for address 111010 at node 304 and the search for node 1111 at node 305.
  • the corresponding terminating nodes are 311, 312, 313, 314 and 315.
  • several terminating nodes give a match for those addresses where the number of bits is not a multiple of 3.
  • Nodes 321a and 321b match address 00
  • nodes 322a, 322b, 322c and 322d match address 0101
  • node 323 matches address 111000
  • node 324 matches address 111010 and nodes 325a, 325b, 325c and 325d match address 1111.
  • Binary trees are ineffective for searching because the number of levels in the tree correlates directly with the number of memory accesses required to perform a search; a large number of memory accesses means slowness in performance.
  • Level compressing decreases the number of required memory accesses but increases the number of matching nodes in the search tree, which correlates more or less directly with the required amount of memory. Note that dashed-line nodes in Figs. 3a, 3b and 3 c do not refer to validly stored routing information.
  • the number of bits that are considered in looking for the next matching node in a search tree is known as the stride.
  • the trees in Figs. 3a, 3b and 3c all apply a constant stride, which is 1 for Fig. 3a, 2 for Fig. 3b and 3 for Fig. 3c.
  • Fig. 3d shows how the known principle of variable stride can be applied to limit the number of matching nodes.
  • stride 1 instead of 3, which cuts down the number of nodes matching address 0101 from four to one (node 322).
  • variable stride means that the task of constructing and mamtaining search trees become more complex.
  • the length of the stride needs to be stored in memory separately for each branch. Reading the stride length from its storage location requires a separate memory access, which tends to slow down the search and make the known variable stride techniques unattractive for fast routing purposes.
  • variable stride length in a lookup table and placing the stride length of a branch into a same memory entry with other information concerning the branch.
  • the method according to the invention for searching through a variable stride level compressed search tree the nodes of which are represented by records in a memory is characterized in that the stride length to be used in advancing to a certain lower level from a certain node in the search tree is read from the record that represented said node.
  • the method according to the invention for constructing a variable stride level compressed search tree the nodes of which are represented by records in a memory is characterized in that it comprises the step of storing the stride length to be used in advancing to a certain lower level from a certain node in the search tree into the record that represents said node.
  • the invention applies also to a device for searching through a variable stride level compressed search tree, comprising a memory and, stored within the memory, records that represent the nodes of the search tree.
  • the device according to the invention is characterized in that the memory comprises within at least a number of the stored records an integral part of the record that indicates a stride length to be used in advancing to a certain lower level from a certain node in the search tree represented by the record.
  • the invention applies to a router for constructing and using a search tree for retrieving pieces of routing information concerning the further treatment of data packets on the basis of pieces of address information contained within the packets, comprising
  • the router is characterized in that the microprocessor is arranged to a) group the pieces of routing information into subtree lists so that within each subtree list the pieces of routing information share a number of equally valued most significant bits, b) represent the equally valued most significant bits of the pieces of routing information within a subtree list with an inner node of the search tree to be constructed, c) select a stride length to be applied in advancing to the next lower level from the inner node and d) place the pieces of routing information within the subtree list into a subtree under the inner node, the number of branches in the subtree being determined by the selected stride length; and that the microprocessor is further arranged to store the selected stride length in the form of an indicator value into the record that represents the inner node within the memory circuit.
  • the look-up table where next-hops are to be found consists of a relatively limited number of subtables or logically separate entities which correspond to the levels of a variable stride level compressed (VSLC) search tree.
  • a fixed stride i.e. a fixed number of bits from a piece of address rnformatiori in a packet, is used on the highest level as a pointer to a certain memory location within a first subtable.
  • This memory location contains either a next-hop or a pointer to a second subtable, which is a memory block on the next lower level.
  • the memory location contains an identifier that indicates the contents of the memory location to be either a next-hop or a pointer to the next lower level.
  • the value of the identifier also tells the stride length to be applied on the next lower level.
  • the stride length is the number of additional bits that have to be taken from the piece of address information in order to find a memory location within the memory block pointed at by the pointer.
  • This new memory location may again contain either a next-hop or a pointer to a memory block (with the associated stride length information) on the next, even lower level.
  • the chain of pointers is followed, with more additional bits taken every time from the piece of address information, until a next-hop is found.
  • a given list of mappings between network addresses and next-hops may be implemented in a number of mutually alternative search trees, when variable stride lengths are used. Constructing and maintaining an optimal look-up table involves experimenting with different stride lengths, giving rise to different subtree structures, until a solution with optimal properties is found. The optimization gorithm may be weighted to always give the n ⁇ num achievable number of levels, to always give the minimum achievable number of leaves in the search tree, or to compromise between these two objectives according to some predetermined rules.
  • the look-up table construction algorithm is recursive so that it constructs and optimizes all subtrees under a certain parent node, calling itself again at each child of the parent node, before moving on in the search tree structure.
  • the algorithm tries all allowable stride lengths and selects the one which enables the construction of a most optimal subtree. For example, if the search tree structure is to be optimized for the rninimum memory consumption, the construction algorithm returns the subtree (and the associated stride length) with the minimum number of leaves.
  • An advantageous hardware implementation of the invention relies on the use of static random access memories or SRAMs or other applicable memory devices where the actual next-hops and pointers are stored.
  • a piece of address information is first read into an input register from which a fixed number of most significant bits are directly taken as a memory address to a first memory device.
  • the contents from the memory location pointed at by said memory address are taken into a controller which investigates the identifier contained therein to decide, whether the rest of the contents should be interpreted as a pointer or a next-hop.
  • the controller either directs the rest of the contents into an output register or takes a number of additional bits from the input register, adds them to the rest of the contents from the first memory location and uses the result as a memory address to a second memory device, which physically may be the same as the first memory device or anoth memory device. Pipelining the operations, using different memory devices, typically results in improved performance.
  • Fig. 1 illustrates a known network arrangement
  • Fig. 2 illustrates schematically the known operation of a router
  • Figs. 3a to 3d illustrate known search tree structures, ;
  • FIGs. 4a to 4d illustrate advantageous uses of a record according to an embodiment of the invention
  • Fig. 5 illustrates the application of an embodiment of the invention to an exemplary search
  • Fig. 6 illustrates the application of an embodiment of the invention to another exemplary search
  • Fig. 7 illustrates a method according to an embodiment of the invention
  • Fig. 8 illustrates an arrangement according to an embodiment of the invention
  • Fig. 9 illustrates a detail of the arrangement in Fig. 8 and
  • Fig. 10 illustrates a method according to another embodiment of the invention.
  • Search trees are most advantageously implemented so that each node (where "node” means both the inner nodes and the leaves of the tree) is represented by a record in a memory.
  • a record is the smallest logical unit in a memory that can be unequivocally pointed at through a memory address. If the memory is physically thought to consist of separate memory locations, a record is exactly large enough to fill a memory location. In routing applications the piece of information ultimately looked for is a next-hop.
  • a record in the search tree structure of a look-up table comprises either a next-hop, in which case the record represents a leaf of the search tree, or a pointer to some further memory location. In the latter case the record represents an inner node of the search tree.
  • a record which comprises a pointer may also comprise information regarding the stride length that should be applied when the search advances by following the pointer to the further memory location.
  • Fig. 4a illustrates a record 400 which consists of three fields: a part field 401, a stride field 402 and a pointer or next-hop field 403.
  • the value in the part field 401 indicates whether the record represents a part of a route through the search tree, i.e. an inner node, or whether it represents a leaf. If the record represents a part of a route, the value in the stride field 402 indicates the stride length that should be applied when the search advances.
  • the third field 403 comprises either a pointer or a next-hop.
  • Fig. 4b illustrates a generalization of the record of Fig. 4a.
  • the record 400 is of the same size as in Fig. 4a, but the part and stride fields have been replaced with a common record identifier field 404.
  • a value in this field may be used for both of those purposes which were given above to the part and stride fields.
  • the generalization is advantageous because it may help to keep the length of the field(s) other than the pointer or next-hop field 403 short, thus saving bits to "payload" use.
  • the part and stride fields are independent of each other (as in Fig. 4a), at least one bit is needed for the part field and at least two for the stride field.
  • the record of Fig. 4b we may make the following definitions for the common record identifier field 404 :
  • Fig. 4c illustrates a record 400 that comprises only the part field and a pointer or next-hop field 405 which is now slightly longer than that of Figs. 4a and 4b.
  • Examples of records where the stride length information is not needed are those that represent leaves (the value in the part field 401 teEs that the record represents a leaf) or those that belong to such a level in the search tree where the next applicable stride length is constant for some reason or another.
  • Fig. 4d illustrates a record 400 which consists of a single long next-hop field 406.
  • a destination address 501 has been read from a packet.
  • the bits of the destination address appear in a column with the most significant bit (MSB) at the top.
  • MSB most significant bit
  • the destination address 501 is an IPv4 (Internet Protocol version 4) address so that it consists of 32 bits, numbered from 31 to 0 with the MSB first.
  • bits 31-8 constitute a network identifier and bits 7-0 constitute a host identifier.
  • N Fixed stride length N, here 16, is used at level 0 which is the highest level in the search tree.
  • the N most significant bits, here bits DA[31-16], are extracted from the destination address 501 and used as a memory address to identify a first memory location 502.
  • a record of the type shown in Fig. 4b is read from the first memory location 502.
  • a value "11" appears in the common record identifier field.
  • the pointer P0 is therefore read from the pointer or next- hop field of the record, and eight additional bits (here bits DA[15-8]) are taken from the destination address 501.
  • the pointer P0 and the additional bits are used together at level 1 which is the next lower level in the search tree.
  • the pointer P0 as such identifies a memory block 503 which contains as many memory locations that can be separately identified with as many bits as there are in the stride.
  • the stride length is 8, so memory block 503 contains 256 memory locations.
  • the eight additional bits extracted from the destination address 501 point at a certain single memory location 504.
  • a simple way to implement the combined use of the pointer PO and the additional bits DA[15-8] is to make the pointer PO give the address of the memory location at the beginning of the block, so that the address of the memory location 504 is obtained simply by summing the value of the pointer PO and the additional bits DA[15-8].
  • Fig. 5 the value "00" appears in the common record identifier field of the record read from memory location 504. According to Table 1, this means that the record contains a next-hop and the search has terminated. The search gorithm returns the next-hop N-H 1 as the result of the search.
  • Fig. 6 illustrates an exemplary search through a search tree with three levels. Now we assume that the definitions of Table 1 apply so that the first predetermined stride length is three and the second predetermined stride length is five. At level 0 a fixed stride length of 16 bits is applied, and exactly as in Fig. 5 a first memory location
  • the common record identifier field has a value "01", which means that the record contains a pointer and that three additional bits should ne extracted from the destination address 501.
  • the pointer P0 points at the beginning of a memory block 602 which now contains only eight memory locations, since the current stride (3 bits) only allows for eight memory locations to be unambiguously identified. Adding the bits DA[15-
  • the value of the common record identifier field is "10", meaning that also this record contains a pointer (designated as pointer PI) and that five additional bits should ne extracted from the destination address 501; stride length is five.
  • pointer PI points at the beginning of a memory block 604 which contains only 32 memory locations. Adding the bits DA[12-8] to the value of the pointer PI identifies a third memory location 605.
  • Fig. 6 we have assumed that level 2 is the lowest possible level in the search tree. Therefore the record read from the third memory location 605 is of the type shown in Fig. 4d: it only contains a next-hop without any part, stride or common record identifier fields.
  • the search algorithm returns the next-hop N-H 2 as the result of the search.
  • the idea of the exemplary construction algorithm shown in Fig. 7 is to take one subtree at a time and to find an optimal form for it in terms of minimum memory consumption. Within each subtree the branches thereof are further treated as sub- subtrees which are optimized one by one. At step 707 the algorithm takes a certain k:th subtree, and at step 708 it takes a certain p:th stride. In order to examine, whether the subtree under construction will need still lower levels, the algorithm subtracts the stride length from all routes of the subtree at step 709. If longer routes are found at step 710, the construction algorithm calls itself which means going down one level at step 711, composing new route lists from those routes that were too long to fit on the previous level at step 712 and returning to step 707.
  • the construction algorithm constructs the subtree with the stride selected at step 708 and returns its size. In order to find the subtree structure with minimum size, all allowable strides are experimented with by jumping back from step 714 through the stride index incrementing step 715 to step 708 until all allowable strides have been tried.
  • a typical search tree construction algorithm ensures that no node in the tree will become simultaneously an inner node and a leaf. In other words, it is typically not admissible that e.g. with a stride length 3, there would be a directly matching route 111 (a leaf) and under it a further subtree for matching routes like 111001 or 111010. Several approaches may be used to avoid such situations.
  • a first alternative approach is to avoid cases of the above-mentioned kind by choosing either a shorter or longer stride: for example the gorithm might choose first a stride length 2 (if available), resulting an inner node for a bit pattern 11, and after that some other stride length which would make a difference between the routes. Or the algorithm might choose a longer stride like 6, reducing the need for additional levels but increasing the number of leaves.
  • a second alternative approach is to use the empty leaves in the subtree under a matching node to store the next-hop for the route that actually matches the root node of the subtree. If we take our examples of matching routes 111, 111001 and 111010, a stride length 3 would bring us to the root node 111. This node would not in this approach contain the next-hop but a pointer to the next lower level. Taken that stride length 3 is applied also on that level, of the eight leaves in the subtree the leaves 001 and 010 contain the next-hops for the matching routes 111001 and 111010 respectively and all other leaves contain the next-hop for the matching route 111.
  • the smallest subtree is selected and the others are discarded at step 716.
  • the construction algorithm checks whether such nodes still exist that are siblings to the root of the finished subtree and could become subtree roots themselves. Incrementing the subtree index k at step 718 means selecting the next subtree on the same level for construction and optimization.
  • the algorithm eventually finds that all subtrees of a certain level have been constructed, so a check is made at step 719 whether there are still untreated branches starting from the next higher level.
  • a positive fmding leads into going up one level at step 720 and incrementing the subtree index k of that level at step 718 before starting the actual subtree construction from step 707.
  • a negative finding at step 719 means that the whole search tree is complete and the construction algorithm teirninates at step 721.
  • step 716 If other optimization criteria are to be taken into account than just the size of a subtree, these are easily added into the check illustrated as step 716 in Fig. 7.
  • the search tree construction algorithm always selects at step 716 that subtree that matches best a predetermined set of optimization criteria.
  • Mamtaining a search tree means that when a route is removed or a new route is added, in addition to the actual storing or deleting of a piece of routing information a check must be made whether the optimality of a previously constructed search tree still holds. Re-optimization does not need to cover the whole search tree. It suffices to re-optimize from the leaf which was affected by the change upwards to that subtree level where the re-optimization does not change a previously selected stridd length. In all cases it is certain that not more that that subtree needs to be re- optimized the root of which is at the highest level and the domain of which was affected by the change.
  • Fig. 8 is a schematic block diagram where a routing processor 801 has a bus 802 for con iunicating with a search tree module 803.
  • the latter comprises a first SRAM memory 804, a second SRAM memory 805 and a logic block 806.
  • Bidirectional three-state buffers couple these blocks fo the processor bus 802 so that the first SRAM memory 804 is coupled to the bus through a first buffer 814, the second SRAM memory 805 is coupled to the bus through a second buffer 815 and the logic block 806 is coupled to the bus through a third buffer 816.
  • the processor bus comprises a data bus and an address bus, although these are not separately shown in Fig. 8.
  • Fig. 9 is a more detailed view of the contents of the logic block 806.
  • the data bus 802a is coupled to the input of an input register 901
  • the address bus 802b is coupled to the input of an address decoder 902.
  • the outputs of the input register 90 i are coupled both to the first SRAM memory (not shown in Fig. 9) and to a shifter
  • a logic block of this kind is most advantageously implemented as an ASIC or application specific integrated circuit, but also certain programmable logical gate arrays may be used especially for testing and prototyping.
  • the direct couplings between the processor bus 802 and the SRAM memories 804 and 805 enable the processor 801 to transparently access the look-up tables stored in the memories.
  • the search tree module 803 has two functional modes, namely a search mode and an update mode. Searching means that the processor 801 gives a piece of address information taken from a data packet and expects to receive the appropriate output port number in return. Updating means that the processor uses said transparent access to change the contents of the look-up table. Routing must be halted for the duration of updating.
  • the SRAM memories 804 and 805 have different addresses than the input and output registers of the logic block 806 (the latter two have most advantageously the same address so that a separately given read/write signal indicates, which register the processor wishes to point at).
  • the address decoder 902 interpretes it as a command for entering the search mode. If the processor points at the SRAM memories 804 or 805, the address decoder 902 generates the proper chip select signals to set the search tree module into the update mode.
  • the operation of the logic block 806 is described with reference to Fig. 10.
  • a packet or datagram arrives at an input buffer (not shown) of the processor 801
  • the header of the datagram is extracted and the processor sends the destination address or DA to the input register 901 by writing the DA onto the data bus 802a and the ( address of the input register 901 (together with a write signal) onto the address bus 802b.
  • the address decoder 902 notes the address of the input register 901 on the address bus and gives a chip select signal to the input register 901. This procedure constitutes the beginning step 1001 in Fig. 10.
  • the input register 901 After a suitable time to allow the data bus to settle, e.g. after one clock cycle after receiving the address strobe signal, the input register 901 reads the contents of the data bus, i.e. the DA, at step 1002. Immediately thereafter is extracts as many most significant bits from the DA as the fixed stride length of the highest level determines and uses them to point at step 1003 at the first SRAM memory 804 which contains the highest level (level 0) of the search tree. The controller 904 waits for the memory circuit to react (e.g. 20 ns, if 12 ns SRAM is used) before reading the contents of the addressed memory location at step 1004.
  • the memory circuit e.g. 20 ns, if 12 ns SRAM is used
  • the controller 904 decides, whether the record read from the memory location contained a next-hop or a pointer. In making the decision the controller uses some predefined rule that concerns certain bit values of the record. Previously we discussed a case where a bit combination "00" at the most significant bits of the record indicated a next-hop and all other bit combinations indicated pointers associated with various stride lengths. The invention does not limit the selection of the rule which is used: any combinations of any of the bits in the record can be used.
  • the whole record is sent to the shifter 903 which also receives the original DA (or at least those bits thereof which were not used to point at the first SRAM memory) from the input register 901.
  • the shifter reacts to those bits (previously designated as id bits) in the record that determine the applicable stride length. According to the value of said bits the shifter selects one of steps 1007, 1008 or 1009 and uses both the pointer from the latest read record and the additional bits taken from the DA to compose a pointer to a memory location in the second SRAM memory.
  • the shifter uses this new pointer to point at the second SRAM memory 805, where the rest of the search tree is stored.
  • Reading the contents of a memory location in the second SRAM memory 805 takes place again after a suitable delay to allow the memory circuit to react to the addressing.
  • the process returns now to step 1004, although the record now comes to the controller 904 from the second memory circuit and not from the first one.
  • step 1005 a check is again made to find out whether the new record contained a pointer or a next-hop. Fmding a pointer causes a new round through steps 1006, one of 1007, 1008 or 1009, 1010 and back to 1004. This loop is repeated until at step 1005 the record is found to comprise a next-hop, which is sent to the output register at step 1011.
  • the search tree module 803 sends a hit signal to the processor 801, which then addresses the output register 905 to read the retrieved next-hop.
  • the whole search tree may be stored into one memory circuit, m which case the output of the shifter 903 in Fig. 9 is coupled to the address input of the first (and only) SRAM memory like the output of the input register 901. It is also possible to have more than two memory circuits for example so that every level of the search tree is stored into a memory circuit of its own. However, the second highest and the lower levels in the search tree become increasingly sparse compared to the topmost level, so in most cases a single second memory circuit is enough to house all other levels than the highest one. Having at least two memory circuits allows the search operations to be pipelined.
  • the invention has been described with references to packet addressing as defined in the Internet Protocol, especially IPv4. This should not be construed as a limitation to the applicability of the invention, because the invention is equally applicable to all such routing tasks where a piece of information concerning the further treatment of a packet must be rapidly retrieved when a piece of variable-length header information has been obtained from the packet.
  • the stride on a certain level is determined by mapping the id value from the record of the previous level into a set of allowable stride lengths.
  • a separate stride field is used in the record (see Fig. 4a)
  • This approach has the drawback of possibly wasting bit positions in the record, because it is usually most advantageous to have only a limited number of allowable stride lengths which are more effectively indicated through a mapping scheme.

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
PCT/FI2001/000163 2000-02-21 2001-02-20 A method and arrangement for constructing, maintaining and using lookup tables for packet routing WO2001063852A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU2001240713A AU2001240713A1 (en) 2000-02-21 2001-02-20 A method and arrangement for constructing, maintaining and using lookup tables for packet routing

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20000396A FI20000396A (sv) 2000-02-21 2000-02-21 Metod och arrangemang för att konstruera, underhålla och utnyttja sökningstabeller i paketkanalisation
FI20000396 2000-02-21

Publications (1)

Publication Number Publication Date
WO2001063852A1 true WO2001063852A1 (en) 2001-08-30

Family

ID=8557647

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FI2001/000163 WO2001063852A1 (en) 2000-02-21 2001-02-20 A method and arrangement for constructing, maintaining and using lookup tables for packet routing

Country Status (3)

Country Link
AU (1) AU2001240713A1 (sv)
FI (1) FI20000396A (sv)
WO (1) WO2001063852A1 (sv)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003039083A1 (en) * 2001-11-02 2003-05-08 Infineon Technologies Ag Sram based cache for dram routing table lookups
EP1429501A1 (en) * 2002-12-12 2004-06-16 STMicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
EP1434148A2 (en) 2002-12-06 2004-06-30 STMicroelectronics, Inc. Apparatus and method of implementing a multi-bit trie algorithmic network search engine
US6941292B2 (en) * 2002-11-22 2005-09-06 International Business Machines Corporation Method and system for optimizing data searches in tree structures
US6965897B1 (en) * 2002-10-25 2005-11-15 At&T Corp. Data compression method and apparatus
US7702882B2 (en) 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US8787376B1 (en) 2008-03-17 2014-07-22 Juniper Networks, Inc. Systems and methods for accessing a multi-bank SRAM
WO2022263359A1 (de) * 2021-06-18 2022-12-22 Robert Bosch Gmbh Vorrichtung und verfahren zur verarbeitung von dateneinheiten

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
CHEUNG G ET AL: "Optimal Routing Table Design for IP Address Lookups under Memory Constraints", INFOCOM '99 EIGHTEENTH ANNUAL JOINT CONFERENCE IEEE COMPUTER AND COMMUNICATIONS SOCIETIES. PROCEEDINGS IEEE 1999., vol. 3, 21 March 1999 (1999-03-21) - 25 March 1999 (1999-03-25), pages 1437 - 1444, XP002901793 *
GUPTA P ET AL: "Routing Lookups in Hardware at Memory Access Speeds", INFOCOM '98 SEVENTEENTH ANNUAL JOINT CONFERENCE IEEE COMPUTER AND COMMUNICATIONS SOCIETIES. PROCEEDINGS IEEE 1998, vol. 3, 29 March 1998 (1998-03-29) - 2 April 1998 (1998-04-02), pages 1240 - 1247, XP002901791 *
NILSSON S ET AL: "IP-Address Lookup Using LC-Tries", IEEE JOURNAL ON SELECTED AREAS IN COMMUNICATIONS, vol. 17, no. 6, June 1999 (1999-06-01), pages 1083 - 1092, XP002901790 *
RUIZ-SÁNCHEZ M A ET AL: "Survey and Taxonomy of IP Address Lookup Algorithms", IEEE NETWORK, vol. 15, no. 2, March 2001 (2001-03-01) - April 2001 (2001-04-01), pages 8 - 23, XP002901792 *

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003039083A1 (en) * 2001-11-02 2003-05-08 Infineon Technologies Ag Sram based cache for dram routing table lookups
US6965897B1 (en) * 2002-10-25 2005-11-15 At&T Corp. Data compression method and apparatus
US6941292B2 (en) * 2002-11-22 2005-09-06 International Business Machines Corporation Method and system for optimizing data searches in tree structures
EP1434148A2 (en) 2002-12-06 2004-06-30 STMicroelectronics, Inc. Apparatus and method of implementing a multi-bit trie algorithmic network search engine
EP1434148A3 (en) * 2002-12-06 2008-01-09 STMicroelectronics, Inc. Apparatus and method of implementing a multi-bit trie algorithmic network search engine
US7782853B2 (en) 2002-12-06 2010-08-24 Stmicroelectronics, Inc. Apparatus and method of using fully configurable memory, multi-stage pipeline logic and an embedded processor to implement multi-bit trie algorithmic network search engine
EP1429501A1 (en) * 2002-12-12 2004-06-16 STMicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US7715392B2 (en) 2002-12-12 2010-05-11 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US7702882B2 (en) 2003-09-10 2010-04-20 Samsung Electronics Co., Ltd. Apparatus and method for performing high-speed lookups in a routing table
US8787376B1 (en) 2008-03-17 2014-07-22 Juniper Networks, Inc. Systems and methods for accessing a multi-bank SRAM
US9258229B2 (en) 2008-03-17 2016-02-09 Juniper Networks, Inc. Systems and methods for accessing a multi-bank SRAM
WO2022263359A1 (de) * 2021-06-18 2022-12-22 Robert Bosch Gmbh Vorrichtung und verfahren zur verarbeitung von dateneinheiten

Also Published As

Publication number Publication date
FI20000396A (sv) 2001-08-22
FI20000396A0 (sv) 2000-02-21
AU2001240713A1 (en) 2001-09-03

Similar Documents

Publication Publication Date Title
US6691124B2 (en) Compact data structures for pipelined message forwarding lookups
EP1551141B1 (en) Apparatus and method using hashing for efficiently implementing an IP lookup solution in hardware
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
US6728732B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US7415463B2 (en) Programming tree data structures and handling collisions while performing lookup operations
EP1168723B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US6018524A (en) Scalable high speed IP routing lookups
US6792423B1 (en) Hybrid longest prefix match and fixed match searches
US8090901B2 (en) TCAM management approach that minimize movements
US6956858B2 (en) Network routing table and packet routing method
EP2040184B1 (en) Database and database processing methods
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
Le et al. Scalable tree-based architectures for IPv4/v6 lookup using prefix partitioning
US20070121632A1 (en) Method and system for routing an IP packet
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
EP1485827A2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
WO2005124577A2 (en) Scalable distributed parallel access memory systems with internet routing applications
CA2365395C (en) Default route coding
WO2000024159A2 (en) Method and apparatus for address lookup
US6804230B1 (en) Communication device with forwarding database having a trie search facility
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
EP1063827A2 (en) Method for address lookup
JP2004266837A (ja) フィールドレベルツリーを用いたパケット分類装置及び方法
US6917954B2 (en) Load balancing in IP address lookup
WO2001063852A1 (en) A method and arrangement for constructing, maintaining and using lookup tables for packet routing

Legal Events

Date Code Title Description
AK Designated states

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 CR CU CZ DE DK DM DZ 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 PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA 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 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 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