SE511972C2 - Lookup device and method for classifying and forwarding data packets - Google Patents
Lookup device and method for classifying and forwarding data packetsInfo
- Publication number
- SE511972C2 SE511972C2 SE9703292A SE9703292A SE511972C2 SE 511972 C2 SE511972 C2 SE 511972C2 SE 9703292 A SE9703292 A SE 9703292A SE 9703292 A SE9703292 A SE 9703292A SE 511972 C2 SE511972 C2 SE 511972C2
- Authority
- SE
- Sweden
- Prior art keywords
- output
- memory means
- pointer
- gate
- record
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
lO 15 20 25 30 35 511 972 2 i ett antal sektioner, och varje sektion används för att adres- sera en viss nivå hos ett sökträd. Vid varje nivà används ett antal små tabeller för att lagra pekare till de lämpliga tabel- lerna på nästa nivå. Det finns fortfarande spillutrymme inom var och en av tabellerna, men endast ett partiellt träd behöver ska- pas, täckande partierna hos adressutrymmet som används vid någon tidpunkt. Trädet är mest effektivt när de utnyttjade adresserna är samlade i en klunga i adressutrymmet. I Artikeln ”VLSI Implementation of Routing Tables: Tries and CAMs”, Proceedings of INFOCOM *9l, 991, sid 0515-0524, visar användandet av träd i dirigeringsta- beller, av T. Pei, C. Zukowski, för adressuppslagning med fixerade längder. 10 15 20 25 30 35 511 972 2 in a number of sections, and each section is used to address a particular level of a search tree. At each level, a number of small tables are used to store pointers to the appropriate tables at the next level. There is still waste space within each of the tables, but only a partial tree needs to be created, covering the parts of the address space that are used at some point. The tree is most efficient when the utilized addresses are gathered in a cluster in the address space. In the article “VLSI Implementation of Routing Tables: Tries and CAMs”, Proceedings of INFOCOM * 91, 991, page 0515-0524, shows the use of trees in routing tables, by T. Pei, C. Zukowski, for address lookup with fixed lengths .
Binära träd har också använts för adresser med variabel längd, exempelvis det vanligen använda Patricia-trädet, vilket är en förbättring av ett binärt träd. Men eftersom IP-adresser är 32-bitar långa, är en snabb hårdvaruimplementering av Patri- cia-träd dyr och komplex.Binary trees have also been used for variable length addresses, such as the commonly used Patricia tree, which is an improvement on a binary tree. However, because IP addresses are 32-bit long, rapid hardware implementation of Patricia trees is expensive and complex.
Det har förekommit flera förslag för att implementera dirigeringstabellsuppslagningar genom att använda innehàllsad- (CAM) teknologi tillhandahåller för närvarande emellertid inte till- resserbara minnen för att lagra dirigeringstabellen. CAM- räckligt stort minne vid en nöjaktigt låg kostnad för att det ska vara en praktisk lösning.However, there have been several proposals for implementing routing table lookups using content (CAM) technology, but currently do not provide accessable memories for storing the routing table. CAM- sufficient memory at a sufficiently low cost for it to be a practical solution.
Sammanfattning av uppfinningen. Ändamålet med föreliggande uppfinning är att lösa de ovan nämnda problemen och att åstadkomma en uppslagningsanord- ning för klassificering och vidarebefordring av datapaket, var- vid insignalen till uppslagningsanordningen är en destination- sadress för ett inkommande datapaket och destinationsadressen innefattar n bitar, varvid n är ett heltal. Detta ändamål erhål- las genom att åstadkomma uppslagningsanordningen definierad i ingressen av patentkravet l med de fördelaktiga egenskaperna hos den kännetecknade delen av patentkravet.Summary of the invention. The object of the present invention is to solve the above-mentioned problems and to provide a look-up device for classifying and forwarding data packets, wherein the input signal to the look-up device is a destination address for an incoming data packet and the destination address comprises n bits, where n is a integer. This object is achieved by providing the look-up device defined in the preamble of claim 1 with the advantageous properties of the characterized part of the claim.
Uppslagningsanordningen enligt föreliggande uppfinning innefattar i steg, varvid varje steg representerar en förutbe- stämd prefixlängd och ett prefix representerar en grupp adres- ser, varvid det första steget representerar den kortaste prefix- 10 15 20 25 30 35 511 972 längden och steg i representerar den längsta prefixlängden med n bitar. Uppslagningsnordningen innefattar också ett dirigerings- minnesorgan anslutet till steget i, varvid varje steg innefattar ett minnesorgan för att lagra en tabell med poster, varvid varje post innefattar ett pekarfält vilket antingen innefattar en pe- kare till minnesorganet i nästa steg, eller en pekare till diri- geringsminnesorganet som lagrar vidarebefordringsinformationen, varvid ett första antal bitar motsvarande den kortaste prefix- längden hos destinationsadressen eftersöks i det första minne- sorganet, och om posten i det första minnesorganet där en match- ning hittas innefattar en pekare till det andra minnesorganet, då söks ett andra antal bitar motsvarande den näst kortaste pre- fixlängden hos destinationsadressen i det andra minnesorganet, och så vidare till dess att ett längsta matchande prefix har hittats, varvid pekaren till dirigeringsminnesorganet ger vida- rebefordringsinformationen för att vidarebefordra det inkommande datapaketet. Huvudfördelen med denna konstruktion är att den kan utföra en uppslagning per minnescykel. Dessutom är konstruktio- nen enkel och snabb, och den är därför lämplig för en kvalifice- rad IP-nätväxel. Denna lösning fungerar också med identifierare med olika längder.The lookup device of the present invention comprises in steps, each step representing a predetermined prefix length and a prefix representing a group of addresses, the first step representing the shortest prefix length and step i representing the longest prefix length with n bits. The lookup device also includes a routing memory means connected to step i, each step comprising a memory means for storing a table of records, each record comprising a pointer field which either comprises a pointer to the memory means in the next step, or a pointer to the diri the memory memory means storing the forwarding information, a first number of bits corresponding to the shortest prefix length of the destination address being searched in the first memory means, and if the entry in the first memory means where a match is found includes a pointer to the second memory means, then a second number of bits corresponding to the second shortest prefix length of the destination address in the second memory means, and so on until a longest matching prefix has been found, the pointer to the routing memory means providing the forwarding information to forward the incoming data packet. The main advantage of this design is that it can perform one lookup per memory cycle. In addition, the design is simple and fast, and it is therefore suitable for a qualified IP network exchange. This solution also works with identifiers of different lengths.
Fördelaktigtvis innefattar det första steget endast det första minnesorganet, och alla de andra stegen innefattar vart (q-l) och minnesorganet q, och ett ett logikorgan, varvid logikorganet är anslutet till bàde minnesorganet (q+1) varvid q är ett heltal och lsqíi-1.Advantageously, the first stage comprises only the first memory means, and all the other steps comprise each (q1) and the memory means q, and one a logic means, the logic means being connected to both the memory means (q + 1), where q is an integer and lsqíi-1 .
Varje post i de första (i-l) minnesorganen innefattar företrädesvis också en delbit och en giltig bit, och varje post i minnesorganet i innefattar också en giltig bit, varvid en satt giltig bit i en post representerar ett giltigt prefix och pekar- fältet för denna post innefattar en pekare till dirigeringsmin- nesorganet, och en satt delbit i en post i minnesorganet q inne- bär att prefixet matchar en post i dirigeringsminnesorganet, men är kortare än denna post, och pekarfältet för denna post i min- (q+1). (i-l) minnesorganen en pekarutgång, en giltig bitutgáng och en del- nesorganet q innefattar en pekare till minnesorganet Fördelaktigtvis har vart och ett av de första bitsutgàng, och minnesorganet i har en pekarutgång och en giltig 10 15 20 25 30 35 511 972 bitutgång, varvid pekarutgàngen hos minnesorganet q är ansluten till minnesorganet (q+l), och till logikorganet hos steget (q+1), och varvid den giltiga bitutgàngen och delbitsutgàngen hos minnesorganet q är anslutna till logikorganet hos steget (q+l).Each record in the first (il) memory means preferably also comprises a sub-bit and a valid bit, and each record in the memory means i also comprises a valid bit, a set valid bit in a record representing a valid prefix and the pointer field for this record includes a pointer to the routing memory means, and a set sub-bit in a record in the memory means q means that the prefix matches a record in the routing memory means, but is shorter than this record, and the pointer field for this record in min- (q + 1). (il) the memory means has a pointer output, a valid bit output and a sub-means q comprises a pointer to the memory means Advantageously each of the first bit outputs, and the memory means i has a pointer output and a valid bit output, wherein the pointer output of the memory means q is connected to the memory means (q + 1), and to the logic means of the step (q + 1), and wherein the valid bit output and the sub-bit output of the memory means q are connected to the logic means of the step (q + 1).
Logikorganet hos steget i innefattar företrädesvis en multiplexor, en ELLER-grind och en OCH-grind, och varje logik- organ i alla de andra stegen utom det första steget innefattar en ELLER-grind, OCH-grind, varvid ingångarna hos multiplexorn i det andra steget en multiplexor, en första OCH-grind och en andra är anslutna till pekarutgångarna hos de första och andra minne- sorganen och ingångarna hos den första OCH-grinden i det andra steget är anslutna till den giltiga bitutgàngen hos det andra minnesorganet och till delbitsutgàngen hos det första minnesor- ganet, och ingångarna hos den andra OCH-grinden i det andra ste- get är anslutna till delbitsutgángarna hos de första och andra minnesorganen, och ingångarna hos ELLER-grinden i det andra ste- get är anslutna till en utgång från den första OCH-grinden i det andra steget och till den giltiga bitutgàngen hos det första minnesorganet, varvid ingångarna till multiplexorn i steget p, där p är ett heltal och 3SpSi-1, är anslutna till pekarutgàngen hos minnesorganet p och till en utgång till multiplexorn hos steget (p-l), och ingångarna hos den första OCH-grinden i steget p är anslutna till den giltiga bitutgàngen hos minnesorganet p och till en utgång hos den andra OCH-grinden i steget (p-1), och ingångarna hos den andra OCH-grinden i steget p är anslutna till delbitsutgàngen hos minnesorganet p och till utgången hos den andra OCH-grinden i steget (p-1), och ingångarna hos ELLER- grinden i steget p är anslutna till utgången hos den första OCH- grinden i steget (p-1) och till en utgång hos ELLER-grinden i steget (p-1), och varvid ingångarna hos multiplexorn i steget i är anslutna till pekarutgàngen hos minnesorganet i och till en utgång hos multiplexorn hos steget (i-1), och ingångarna hos OCH-grinden i steget i är anslutna till den giltiga bitutgàngen hos minnesorganet i och till utgången hos den andra OCH-grinden i steget (i-1), och ingångarna hos ELLER-grinden i steget i är anslutna till utgången hos OCH-grinden i steget i och till ut- gången hos ELLER-grinden i steget (i-l). 10 15 20 25 30 35 511 972 Fördelaktigtvis hittas en matchning när en post i ett steg innefattar en satt giltig bitutsignal och alla de matchande posterna med kortare prefixlängder är satta delbitutsignaler.The logic means of step i preferably comprises a multiplexer, an OR gate and an AND gate, and each logic means in all the other stages except the first stage comprises an OR gate, AND gate, the inputs of the multiplexer in the second step a multiplexer, a first AND gate and a second are connected to the pointer outputs of the first and second memory means and the inputs of the first AND gate in the second step are connected to the valid bit output of the second memory means and to the sub-bit output of the first memory means, and the inputs of the second AND gate in the second stage are connected to the sub-bit outputs of the first and second memory means, and the inputs of the OR gate in the second stage are connected to an output of the the first AND gate in the second stage and to the valid bit output of the first memory means, the inputs to the multiplexer in stage p, where p is an integer and 3SpSi-1, being connected to pointers the output of the memory means p and to an output of the multiplexer of step (p1), and the inputs of the first AND gate in step p are connected to the valid bit output of the memory means p and to an output of the second AND gate in step (p) -1), and the inputs of the second AND gate in step p are connected to the sub-bit output of the memory means p and to the output of the second AND gate in step (p-1), and the inputs of the OR gate in step p are connected to the output of the first AND gate in step (p-1) and to an output of the OR gate in step (p-1), and wherein the inputs of the multiplexer in step i are connected to the pointer output of the memory means in and to an output of the multiplexer of step (i-1), and the inputs of the AND gate in step i are connected to the valid bit output of the memory means in and to the output of the second AND gate of step (i-1), and the inputs of the OR gate the gate in step i are connected to the output of the AND gate in ste go in and to the output of the OR gate in step (i-1). Advantageously, a match is found when a record in one step comprises a set valid bit output signal and all the matching records with shorter prefix lengths are set subbit bit signals.
Varje steg innefattar företrädesvis också ett dekompri- meringslogikorgan, varvid dekomprimeringslogikorganet i är an- slutet till multiplexorn i steget i och dekomprimeringslogikor- ganet q är anslutet till både minnesorganet q och till minnesor- ganet (q+l). Härigenom àstadkommes en minnesbesparande optime- ring.Each step preferably also comprises a decompression logic means, the decompression logic means i being connected to the multiplexer in step i and the decompression logic means q being connected to both the memory means q and to the memory means (q + 1). This achieves a memory-saving optimization.
Varje post i varje minnesorgan innefattar fördelaktigt- vis också ett maskfält, ett adressetikettfält, och en komprime- ringsflaggbit, varvid en satt komprimeringsflaggbit indikerar att komprimering används, och av att vart och ett av minnesorga- nen också har en maskfältutgàng, en adressetikettfältutgàng, och en komprimeringsflaggbitutgång, varvid maskfältutgàngen, adress- etikettfältutgången, komprimeringsflaggbitutgången, och pekar- utgången hos minnesorganet r är anslutet till dekomprimerings- logikorganet r, varvid r är ett heltal och lšrši, och varvid varje dekomprimeringslogikorgan utmatar en ny pekare, varvid den nya pekarutgàngen från dekomprimeringslogikorganet q är ansluten till minnesorganet (q+l) och den nya pekarutgàngen från dekomp- rimeringslogikorganet i är ansluten till multiplexorn hos steget i.Each entry in each memory means advantageously also comprises a mask field, an address label field, and a compression flag bit, a set compression flag bit indicating that compression is used, and that each of the memory means also has a mask field output, an address label output and a field output. a compression flag bit output, wherein the mask field output, the address label field output, the compression flag bit output, and the pointer output of the memory means r are connected to the decompression logic means r, r being an integer and learning means, and each new decompression q is connected to the memory means (q + 1) and the new pointer output from the decompression logic means i is connected to the multiplexer of step i.
Företrädesvis innefattar varje dekomprimeringslogikor- gan en OCH-grind, en jämnförare, en första multiplexor, och en andra multiplexor, varvid ingången hos OCH-grinden i dekomprime- ringslogikorganet r är ansluten till maskfältutgàngen hos minne- sorganet r och till prefixlängden r hos destinationsadressen, och ingången hos jämnföraren i dekomprimeringslogikorganet r är ansluten till adressetikettfältutgàngen hos minnesorganet r och till en utgång från OCH-grinden i dekomprimeringslogikorganet r, och ingången hos den första multiplexorn i dekomprimeringslogik- organet r är ansluten till pekarutgàngen hos minnesorganet r och till en logisk 0-signal, och ingången hos den andra multiplexorn i dekomprimeringslogikorganet r är ansluten till utgången från OCH-grinden i dekomprimeringslogikorganet r, och till en utgång från jämnföraren i dekomprimeringslogikorganet r och av att den nya pekarutgàngen från dekomprimeringslogikorganet r antingen är 10 15 20 25 30 35 511972 utgången från den första multiplexorn eller utgången från den andra multiplexorn i dekomprimeringslogikorganet r beroende på om komprimeringsflaggbiten är satt eller inte.Preferably, each decompression logic means comprises an AND gate, a comparator, a first multiplexer, and a second multiplexer, the input of the AND gate in the decompression logic means r being connected to the mask field output of the memory means r and to the prefix length r of the destination address and the input of the comparator in the decompression logic means r is connected to the address tag field output of the memory means r and to an output of the AND gate in the decompression logic means r, and the input of the first multiplexer in the decompression logic means r is connected to the pointer output means 0 and the memory output means 0. signal, and the input of the second multiplexer in the decompression logic means r is connected to the output of the AND gate in the decompression logic means r, and to an output of the comparator in the decompression logic means r and that the new pointer output from the decompression logic means 20 is either the output of the for the multiplexer or the output of the other multiplexer in the decompression logic means r depending on whether the compression flag bit is set or not.
Ett annat ändamål med uppfinningen är att åstadkomma ett förfarande för att klassificera och vidarebefordra datapa- ket, innefattar n bitar, varvid en destinationsadress hos ett inkommande datapaket varvid n är ett heltal. Detta ändamål erhål- les genom att åstadkomma ett förfarande definierat i ingressen av patentkravet 10 med de fördelaktiga egenskaperna hos den kän- netecknande delen av nämnda patentkrav.Another object of the invention is to provide a method for classifying and forwarding the data packet, comprising n bits, a destination address of an incoming data packet wherein n is an integer. This object is achieved by providing a method defined in the preamble of claim 10 with the advantageous properties of the characterizing part of said claim.
Förfarandet enligt föreliggande uppfinning innefattar i steg, varvid varje steg representerar en förutbestämd prefix- längd och ett prefix representerar en grupp adresser, varvid det första steget representerar den kortaste prefixlängden och ste- get i representerar den längsta prefixlängden med n bitar, var- vid varje steg innefattar en tabell poster, varvid varje post innefattar ett pekarfält vilket antingen innefattar en pekare till tabellen i nästa steg, eller en pekare till en dirigerings- tabell som lagrar vidarebefordringsinformationen, varvid förfa- randet innefattar stegen: - att söka efter ett första antal bitar motsvarande den kortaste prefixlängden hos destinationsadressen i den första tabellen; - om posten i den första tabellen där en matchning hittas inne- fattar pekare till den andra tabellen, att söka efter ett andra antal bitar motsvarande den näst kortaste prefixlängden hos des- tinationsadressen i den andra tabellen; - och så vidare till dess att ett längsta matchande prefix har hittats, varvid pekaren till dirigeringstabellen ger vidarebe- fordringsinformationen för att vidarebefordra det inkommande da- tapaketet. Huvudfördelen med detta förfarande är att det kan ut- föra en uppslagning per tabellcykel. Dessutom är förfarandet enkelt och snabbt, och det är därför lämpligt för en kvalifice- rad IP-nätväxel.The method of the present invention comprises in steps, each step representing a predetermined prefix length and a prefix representing a group of addresses, the first step representing the shortest prefix length and the step i representing the longest prefix length with n bits, each step comprises a table of records, each record comprising a pointer field which either comprises a pointer to the table in the next step, or a pointer to a routing table which stores the forwarding information, the method comprising the steps of: - searching for a first number of bits corresponding to the shortest prefix length of the destination address in the first table; - if the entry in the first table where a match is found includes pointers to the second table, to search for a second number of bits corresponding to the second shortest prefix length of the destination address in the second table; and so on until a longest matching prefix has been found, the pointer to the routing table providing the forwarding information to forward the incoming data packet. The main advantage of this procedure is that it can perform one look-up per table cycle. In addition, the procedure is simple and fast, and it is therefore suitable for a qualified IP network exchange.
Fördelaktigtvis innefattar varje post i de första (i- l)-tabellerna också en delbit och en giltig bit, och varje post i tabellen i innefattar också en giltig bit, varvid en satt gil- tig bit i en post representerar ett giltigt prefix, och pekar- fältet för denna post innefattar en pekare till dirigeringsta- 10 15 20 25 30 35 511972 bellen, och en satt delbit i en post i tabellen q innebär att prefixet matchar en post i dirigeringstabellen, men är kortare än denna post, och pekarfältet för posten i tabellen q innefat- tar en pekare till tabellen (q+l), varvid q är ett heltal och lšqši-1.Advantageously, each record in the first (i-1) tables also includes a sub-bit and a valid bit, and each record in the table i also includes a valid bit, a set valid bit in a record representing a valid prefix, and the pointer field for this record includes a pointer to the routing table, and a set sub-bit in a record in table q means that the prefix matches a record in the routing table, but is shorter than this record, and the pointer field for the entry in table q includes a pointer to the table (q + 1), where q is an integer and lšqši-1.
En post i de första (i-1)-tabellerna tillåts företrä- desvis inte att ha báde en satt giltig bit och en satt delbit.An entry in the first (i-1) tables is preferably not allowed to have both a set valid bit and a set sub-bit.
En matchning hittas företrädesvis när en post i ett steg innefattar en satt giltig bit och alla de matchande poster- na för kortare prefixlängder är satta delbitar.A match is preferably found when an entry in one step includes a set valid bit and all the matching entries for shorter prefix lengths are set sub-bits.
Varje post i varje tabell innefattar också företrädes- vis ett maskfält, ett adressetikettfält, och en komprimerings- flaggbit, varvid en satt komprimeringsflaggbit indikerar att komprimering används, varvid förfarandet för tabellen r, där r är ett heltal och lšrsi, också innefattar de följande stegen: - att OCH-behandla maskfältet och destinationsadressbitarna mot- svarande prefixlängden r, vilket ger maskerade destinationsad- ressbitar såsom utsignal; - om komprimeringsflaggbiten inte är satt, att utmata en ny pe- kare vilken inmatas till tabellen q, och som inmatas till diri- geringstabellen för tabellen i, varvid den nya pekaren bildas (q-l) tinationsadressbitarna motsvarande prefixlängden r sàsom lägre genom att använda pekaren från tabellen oändrad, med des- ordningens bitar; eller - om komprimeringsflaggbiten är satt, att utmata en ny pekare vilken inmatas till tabellen q, och som inmatas till dirige- ringstabellen för tabellen i, varvid den nya pekaren bildas med de högre ordningens bitar satta till 0, och de lägre ordningens bitar bildas genom att använda bitarna av delen med högre ord- ning av pekaren från tabellen (q-1), och den minst signifikanta biten hos den nya pekaren kommer från jämförarsteget.Each entry in each table also preferably includes a mask field, an address label field, and a compression flag bit, a set compression flag bit indicating that compression is used, the procedure for table r, where r is an integer and lrsi, also including the following steps : - AND-processing the mask field and the destination address bits corresponding to the prefix length r, which gives masked destination address bits as an output signal; if the compression flag bit is not set, to output a new pointer which is input to the table q, and which is input to the routing table for the table i, the new pointer forming the (ql) tation address bits corresponding to the prefix length r as lower by using the pointer from table unchanged, with dis- order bits; or - if the compression flag bit is set, outputting a new pointer which is input to the table q, and which is input to the routing table for the table i, the new pointer being formed with the higher order bits set to 0, and the lower order bits being formed by to use the higher order bits of the pointer from the table (q-1), and the least significant bit of the new pointer comes from the comparator step.
Utföringsformer av uppfinningen kommer nu att beskrivas med en hänvisning till de bifogade ritningarna, där: Kort beskrivning av ritningarna.Embodiments of the invention will now be described with reference to the accompanying drawings, in which: Brief description of the drawings.
Fig. l visar ett schema pà fälten i ett IP- datapakethuvud; 10 15 20 25 30 35 511972 Pig. 2 visar ett schema på ett prefixträd med adresser på 6-bitar som använder tre prefixlängder enligt principen en- ligt föreliggande uppfinning; Fig. 3 visar ett blockschema pà en uppslagningsanord- ning enligt föreliggande uppfinning; Fig. 4 visar ett blockschema pà ett dekomprimerings- logikorgan som utgör en del av uppslagningsanordningen enligt föreliggande uppfinning; och Fig. 5 visar ett flödesschema på förfarandet enligt föreliggande uppfinning.Fig. 1 shows a diagram of the fields in an IP data packet header; 10 15 20 25 30 35 511972 Pig. 2 shows a diagram of a prefix tree with 6-bit addresses using three prefix lengths according to the principle of the present invention; Fig. 3 shows a block diagram of a look-up device according to the present invention; Fig. 4 shows a block diagram of a decompression logic means which forms part of the storage device according to the present invention; and Fig. 5 shows a flow chart of the method according to the present invention.
Detaljerad beskrivning av utföringsformer.Detailed description of embodiments.
I fig. 1 visas ett schema på fälten i ett IP-datapaket- huvud. IP-datapakethuvudet innefattar 12 olika fält. Såsom visas IP-huvudlängd, flaggor, i fig. 1 är dessa fält: version, typ av tjänst, total längd, livstid, protokoll, huvudkontrollsumma, källadress, och destina- Det kan också innefatta ett valfritt fält. identifiering, fragmentsförskjutning, tionsadress.Fig. 1 shows a diagram of the fields in an IP data packet header. The IP data packet header comprises 12 different fields. As shown IP head length, flags, in Fig. 1 these fields are: version, type of service, total length, lifetime, protocol, main checksum, source address, and destina- It can also include any field. identification, fragment offset, address.
Det finns i princip två olika typer av IP-datapaket- klassificering: IP-adressuppslagning, vilken används för att vi- darebefordra unicast-datapaket baserat på deras destinations- adress, och identifieraruppslagning, som är avsedd att användas exempelvis för att vidarebefordra multicast-datapaket och flöden av datapaket.There are basically two different types of IP data packet classification: IP address lookup, which is used to forward unicast data packets based on their destination address, and identifier lookup, which is intended to be used, for example, to forward multicast data packets. and flows of data packets.
Föreliggande uppfinning är baserad pà IP-adressuppslag- ning.The present invention is based on IP address lookup.
En dirigeringstabellspost för IP-adresser har två fält; ett prefix och en nästa hoppadress. Ett prefix representerar en grupp adresser, och erhålles såsom ett IP-adressprefix och en prefixlängd. IP-prefixet l93.10.66/234 representerar exempelvis alla IP-adresser vilkas 24 första bitar lika med l93.lO.66. Sà en dirigeringstabellspost för ett givet prefix gäller alla adresser vilka är i gruppen som täcks av prefixet.A routing table record for IP addresses has two fields; a prefix and a next jump address. A prefix represents a group of addresses, and is obtained as an IP address prefix and a prefix length. For example, the IP prefix l93.10.66 / 234 represents all IP addresses whose first 24 bits are equal to l93.10.66. So a routing table record for a given prefix applies to all addresses which are in the group covered by the prefix.
Principen för en adressuppslagning är baserad pà det längsta matchande prefixet; med destinationsadressen hos ett in- kommande IP-datapaket såsom nyckel, söks dirigeringstabellen för poster med matchande prefix. Om det finns mer än en matchande post, väljs den med det längsta prefixet. Genom att använda den- 10 15 20 25 30 511 972 na princip är det alltid den mest specifika dirigeringstabells- post som väljes. Beakta exempelvis en dirigeringstabell med föl- jande tre poster: prefix nästa hopp 0/0 193.l0.66.l 193.l0.64/26 l93.10.66.27 l93.l0.66/28 l93.lO.66.l38 Adressen l93.10.66.50 skulle matcha alla tre posterna, (193.10.66/28) den är den mest speci- men det är den senaste posten som används efter- som den har det längsta prefixet (d.v.s., fika posten).The principle of an address lookup is based on the longest matching prefix; with the destination address of an incoming IP data packet as a key, the routing table is searched for records with matching prefixes. If there is more than one matching entry, the one with the longest prefix is selected. By using this principle, it is always the most specific routing table entry that is selected. For example, consider a routing table with the following three entries: prefix next jump 0/0 193.l0.66.l 193.l0.64 / 26 l93.10.66.27 l93.l0.66 / 28 l93.lO.66.l38 The address l93.10.66.50 would match all three records, (193.10.66 / 28) it is the most speci- but it is the most recent record used as it has the longest prefix (ie, the coffee record).
I fig. 2 visas ett schema på ett prefixträd med adres- ser med 6-bitar som använder tre prefixlängder enligt principen för föreliggande uppfinning. Adressutrymmet kan betraktas sàsom ett träd, där noderna representerar prefix. Varje nivå i trädet representerar en specifik prefixlängd. Prefix med andra längder än de som används i trädet, måste utsträckas till flera längre prefix. För exempelvis trädet i fig. 2 skulle prefixet ”0l0” med längden 3 utsträckas till ”0100” och ”0l0l” med längden 4.Fig. 2 shows a diagram of a prefix tree with 6-bit addresses using three prefix lengths according to the principle of the present invention. The address space can be considered as a tree, where the nodes represent prefixes. Each level in the tree represents a specific prefix length. Prefixes with lengths other than those used in the tree must be extended to several longer prefixes. For example, for the tree in Fig. 2, the prefix “0l0” of length 3 would be extended to “0100” and “0l0l” of length 4.
I trädet har varje nod en av tvà egenskaper, varvid den första indikerar om noden representerar ett giltig prefix, mot- och det andra indikerar svarande en post i dirigeringstabellen, om den är en del av ett giltig prefix, varvid en del innebär att prefixet matchar en post i dirigeringstabellen men är kortare än denna post (ett prefix av ett prefix), varvid en nod inte till- làts vara både giltig och del. Om så är fallet måste den giltiga vägen utsträckas till den nästa längden, markerande alla noderna med denna längd såsom giltiga. Om ingen av egenskaperna är sat- ta, anses noden vara ogiltig.In the tree, each node has one of two properties, the first indicating whether the node represents a valid prefix, the opposite and the second correspondingly indicating an entry in the routing table, if it is part of a valid prefix, part of which means that the prefix matches an entry in the routing table but is shorter than this entry (a prefix of a prefix), whereby a node is not allowed to be both valid and part. If so, the valid path must be extended to the next length, marking all nodes with that length as valid. If none of the properties are set, the node is considered invalid.
För att hitta en matchande väg, söks trädet från det kortaste prefixet till man råkar ut för den första giltiga eller ogiltiga noden. Pà detta sätt garanteras att den längsta match- ningen hittas.To find a matching path, the tree is searched from the shortest prefix until you come across the first valid or invalid node. In this way, it is guaranteed that the longest match is found.
Det följande är proceduren för att hitta adressen ”OlOll0” i en dirigeringstabell representerad av trädet i fig. 10 15 20 25 30 35 10 511972 2. De tre prefixlängderna är 2,4 och 6. Först uppslages den kor- Den matchande posten är en del, resul- ”OlOl”. del. En sista uppslagning ”O10110” utföres sedan, resulterande taste prefixlängden ”Ol”. terande i en andra uppslagning, Denna post är också en i en giltig post. Denna post pekar pà dirigeringstabellen där vidarebefordringsinformationen är lagrad.The following is the procedure for finding the address “OlOll0” in a routing table represented by the tree in Fig. 10 15 20 25 30 35 10 511972 2. The three prefix lengths are 2,4 and 6. First the short entry is entered. del, result- “OlOl”. part. A last lookup "O10110" is then performed, resulting in the key prefix length "Ol". This entry is also one in a valid entry. This entry points to the routing table where the forwarding information is stored.
När färre prefixnivåer används i datastrukturen, behövs mera minne för att lagra den. Det är sà pà grund av att bitut- sträckningen upp till en giltig prefixlängd, och behovet av att alla poster i en prefixgrupp ska vara närvarande. Om exempelvis steget mellan två längder är 8-bitar, kommer varje nod som har delens egenskap satt att ha 256 barnnoder i sin prefixgrupp. Men med färre nivàer hittas ett prefix med färre minnesátkomster, vilket gör uppslagningen snabbare. Det ideala valet av nivåer och avståndet där mellan, beror på vilken prestanda som behövs, och hur mycket minne som kan användas.When fewer prefix levels are used in the data structure, more memory is needed to store it. This is due to the bit extension up to a valid prefix length, and the need for all entries in a prefix group to be present. For example, if the step between two lengths is 8-bit, each node that has the property of the part set will have 256 child nodes in its prefix group. But with fewer levels, a prefix is found with fewer memory accesses, which makes lookup faster. The ideal choice of levels and the distance between them, depends on what performance is needed, and how much memory can be used.
I fig. 3 visas ett blockschema pà en uppslagningsanord- ning enligt föreliggande uppfinning. Uppslagningsanordningen 30 är baserad på IP-adressuppslagning, som används för att vidare- befordra unicast-datapaket baserat på deras destinationsadress.Fig. 3 shows a block diagram of a look-up device according to the present invention. The lookup device 30 is based on IP address lookup, which is used to forward unicast data packets based on their destination address.
Uppslagningsanordningen 30 innefattar i steg 321, 322,..., 322. I denna figur är i 4. Det första steget 321 representerar den kor- taste prefixlängden och det fjärde steget 324 representerar den längsta prefixlängden med n bitar. Uppslagningsanordningen 30 innefattar också ett dirigeringminnesorgan anslutet till det 322, 323, 324 innefattar ett minnesorgan 361, 362, 363, 364 för att lagra en tabell poster, fjärde steget 324. Varje steg 32h varvid varje post innefattar ett pekarfält som antingen innefat- tar en pekare till minnesorganet till nästa steg, eller en peka- re till dirigeringsminnesorganet 34 som lagrar vidarebeford- ringsinformationen. Destinationsadressen inmatas till uppslag- ningsanordningen 30 via en ledning 38. Ett första antal bitar motsvarande den kortaste prefixlängden hos destinationsadressen söks efter i det första minnesorganet 361, och om posten i det första minnesorganet 361 där en matchning hittas innefattar en pekare till det andra minnesorganet 362, dà söks ett andra antal bitar motsvarande den näst kortaste prefixlängden hos destina- tionsadressen i det andra minnesorganet 362, och så vidare till 10 15 20 25 30 35 ll 511 972 dess att ett längsta matchande prefix har hittats, varvid peka- ren till dirigeringsminnesorganet 34 ger vidarebefordringsinfor- mationen för att vidarebefordra det inkommande datapaketet. Alla 323, 324 innefattar vart och ett ett logikorgan 402, 403, 404, varvid logikorganet i är anslutet till stegen utom det första 322, både minnesorganet i och minnesorganet (i-1). Varje post i det fjärde minnesorganet 364 innefattar också en giltig bit, och varje post i de tre första minnesorganen 361, 362, 363 innefattar också en delbit och en giltig bit. En satt giltig bit i en post representerar ett giltigt prefix, och pekarfältet för denna post innefattar en pekare till dirigeringsminnesorganet 34. En satt delbit i en post i minnesorganet q 361, 362, 363 innebär att pre- fixet matchar en post i dirigeringsminnesorganet 34, men är kor- tare än denna post, och pekarfältet för posten i minnesorganet q 361, 362, 363 innefattar en pekare till minnesorganet (q+l) 36% 363, 364, varvid q är ett heltal och lšqíi-l=3. Vart och ett av de tre första minnesorganen 361, 362, 363 har en pekarutgàng, en giltig bitutgàng och en delbitsutgång. Det fjärde minnesorganet 364 har endast en pekarutgâng och en giltig bitutgàng. Det fjär- de logikorganet 404 innefattar en multiplexor 424, en ELLER- grind 444 och en OCH-grind 464. Varje logikorgan i alla de andra stegen utom det första steget 402, 403 innefattar en multiplexor 422;423, och en ELLER-grind 442;443, en första OCH-grind 462;463 och en andra OCH-grind 482;483. Ingångarna hos multiplexorn 422 är anslutna till pekarutgàngarna hos de första och andra minne- sorganen 361, 362. Ingångarna hos den första OCH-grinden 462 är anslutna till den giltiga bitutgàngen hos det andra minnesorga- net 362 och till delbitsutgången hos det första minnesorganet 361. Ingångarna hos den andra OCH-grinden 482 är anslutna till delbitsutgàngen hos de första och andra minnesorganen 361, 362.The look-up device 30 comprises in steps 321, 322, ..., 322. In this figure is in 4. The first step 321 represents the shortest prefix length and the fourth step 324 represents the longest prefix length with n bits. The retrieval device 30 also includes a routing memory means connected to it 322, 323, 324 includes a memory means 361, 362, 363, 364 for storing a table of records, the fourth stage 324. Each stage 32h wherein each record comprises a pointer field comprising either a a pointer to the memory means for the next step, or a pointer to the routing memory means 34 which stores the forwarding information. The destination address is entered into the look-up device 30 via a line 38. A first number of bits corresponding to the shortest prefix length of the destination address is searched for in the first memory means 361, and if the entry in the first memory means 361 where a match is found includes a pointer to the second memory means 362 , then a second number of bits corresponding to the second shortest prefix length of the destination address is searched for in the second memory means 362, and so on until a longest matching prefix has been found, the pointer to the routing memory means 34 provides the forwarding information to forward the incoming data packet. All 323, 324 each comprise a logic means 402, 403, 404, the logic means i being connected to the stages except the first 322, both the memory means i and the memory means (i-1). Each record in the fourth memory means 364 also includes a valid bit, and each record in the first three memory means 361, 362, 363 also includes a sub-bit and a valid bit. A set valid bit in a record represents a valid prefix, and the pointer field for this record includes a pointer to the routing memory means 34. A set subbit in a record in the memory means q 361, 362, 363 means that the prefix matches a record in the routing memory means 34. but is shorter than this record, and the pointer field of the record in the memory means q 361, 362, 363 comprises a pointer to the memory means (q + 1) 36% 363, 364, where q is an integer and lšqíi-l = 3. Each of the first three memory means 361, 362, 363 has a pointer output, a valid bit output and a sub-bit output. The fourth memory means 364 has only one pointer output and one valid bit output. The fourth logic means 404 comprises a multiplexer 424, an OR gate 444 and an AND gate 464. Each logic means in all the other stages except the first stage 402, 403 comprises a multiplexer 422; 423, and an OR gate 442 443, a first AND gate 462; 463 and a second AND gate 482; 483. The inputs of the multiplexer 422 are connected to the pointer outputs of the first and second memory means 361, 362. The inputs of the first AND gate 462 are connected to the valid bit output of the second memory means 362 and to the sub-bit output of the first memory means 361. The inputs of the second AND gate 482 are connected to the sub-bit output of the first and second memory means 361, 362.
Ingångarna hos ELLER-grinden 442 är anslutna till en utgång hos den första OCH-grinden 462 och till den giltiga bitutgàngen hos det första minnesorganet 361. Ingångarna till multiplexorn i steget p, där p är ett heltal och 3$pSi-1, är anslutna till pekarutgången hos minnesorganet p och till en utgång hos multi- plexorn hos steget (p-1). Ingångarna hos den första OCH-grinden i steget p är anslutna till den giltiga bitutgàngen hos minnes- organet p och till en utgång hos den andra OCH-grinden i steget 10 15 20 25 30 35 12 511 972 (p-1). Ingàngarna hos den andra OCH-grinden i steget p är an- slutna till delbitsutgàngen hos minnesorganet p och till utgàng- (p-l).The inputs of the OR gate 442 are connected to an output of the first AND gate 462 and to the valid bit output of the first memory means 361. The inputs to the multiplexer in step p, where p is an integer and 3 $ pSi-1, are connected to the pointer output of the memory means p and to an output of the multiplexer of the stage (p-1). The inputs of the first AND gate in step p are connected to the valid bit output of the memory means p and to an output of the second AND gate in step 10 15 20 25 30 35 12 511 972 (p-1). The inputs of the second AND gate in step p are connected to the sub-bit output of the memory means p and to the output- (p-1).
ELLER-grinden i steget p är anslutna till utgången hos den förs- (p-l) och till en utgång hos ELLER- Ingàngarna hos multiplexorn 424 är an- en hos den andra OCH-grinden i steget Ingàngarna hos ta OCH-grinden i steget (p-1)- slutna till pekarutgàngen hos minnesorganet 364 och till en ut- grinden i steget gàng hos multiplexorn 423. Ingàngarna hos OCH-grinden 464 är an- slutna till den giltiga bitutgàngen hos minnesorganet 364 och till utgången hos den andra OCH-grinden 483. Ingàngarna hos ELLER-grinden 444 är anslutna till utgången hos OCH-grinden 464 och till utgången hos ELLER-grinden 443. Dirigeringsminnesorga- net 44 är anslutet till utgàngarna från multiplexorn 424 och ELLER-grinden 44+ Delbiten och den giltiga biten används för att bestämma I korthet hittas en match- ning om en post i ett steg är giltig och alla de matchande pos- när den längsta matchningen hittas. terna med kortare längder är delar. Pekaren och delbiten och giltiga bitar sänds fràn ett steg till nästa till dess att alla längder har undersökts. När en matchning hittas flyter den re- sulterande nätverkstabellpekaren genom de följande stegen, utan att ändras. Multiplexorn väljer pekaren för sitt steg om den giltiga biten för detta steg är satt, och delbiten för alla ti- digare stegen är satta. Om detta inte är sant väljer multiplex- orn utsignaler från det tidigare steget, d.v.s., sänder resulta- ten vidare från en tidigare träff.The OR gate in step p is connected to the output of the pre- (p1) and to an output of the OR The inputs of the multiplexer 424 are connected to the other AND gate in step The inputs of the take AND gate in step (p) -1) - closed to the pointer output of the memory means 364 and to an output gate in the step of the multiplexer 423. The inputs of the AND gate 464 are connected to the valid bit output of the memory means 364 and to the output of the other AND gate 483 The inputs of the OR gate 444 are connected to the output of the AND gate 464 and to the output of the OR gate 443. The routing memory means 44 is connected to the outputs of the multiplexer 424 and the OR gate 44+. The sub-bit and the valid bit are used to decide In short, a match is found if an item in one step is valid and all the matching items when the longest match is found. the ones with shorter lengths are parts. The pointer and sub-bit and valid bits are sent from one step to the next until all lengths have been examined. When a match is found, the resulting network table pointer flows through the following steps, without changing. The multiplexer selects the pointer for its step if the valid bit for this step is set, and the sub-bit for all previous steps is set. If this is not true, the multiplexer selects output signals from the previous step, i.e., transmits the results from a previous hit.
I fig. logikorgan innefattat i uppslagningsanordningen enligt förelig- 4 visas ett blockschema pà ett dekomprimerings- gande uppfinning. Det visas endast ett dekomprimeringslogikorgan 501/ innefattar ett dekomprimeringslogikorgan. men varje steg i uppslagningsanordningen 30 (jämför fig. 3) I uppslagningsanord- ningen 30 enligt fig. 3 skulle det finnas 4 dekomprimerings- logikorgan 501, 502, 503, 50@ 501 innefattar en OCH-grind 521, en jämnförare 541, en första Varje dekomprimeringslogikorgan multiplexor 561 och en andra multiplexor 581. Varje post i varje 362, 363, 364 ett adressetikettfält och en komprimeringsflagg- minnesorgan 36h (jämför fig. 3) innefattar också ett maskfält, bit, varvid en satt komprimeringsflaggbit indikerar att kompri- 10 15 20 25 30 35 13 511972 mering används. Vart och ett av minnesorganen 361, 362, 363, 364 har också en maskfältutgàng, en adressetikettfältutgàng och en komprimeringsflaggbitutgáng. I fig. 4 visas dekomprimerings- logikorganet 501 för det första steget. Dekomprimeringslogik- organen för de andra stegen är konstruerade på samma sätt och visas inte. Ingàngarna till OCH-grinden 521 är maskfältutgàngen och den första prefixlängden för destinationsadressen. Ingàngar- na till jämnföraren 541 är adressetikettfältutgången och en ut- gàng från OCH-grinden 521. Ingàngarna till den första multiplex- orn 561 är pekarutgàngen och en logisk 0-signal. Ingàngarna till den andra multiplexorn är utgången från OCH-grinden 521 och en utgång från jämnföraren 541. Dekomprimeringslogikorganet 501 ut- matar en ny pekare, vilken inmatas till det andra minnesorganet 362 (jämför fig. 3).Fig. Logic means included in the look-up device according to the present invention shows a block diagram of a decompressive invention. Only one decompression logic means 501 / is shown, including a decompression logic means. but each step in the look-up device 30 (compare Fig. 3) In the look-up device 30 according to Fig. 3 there would be 4 decompression logic means 501, 502, 503, 50 @ 501 comprising an AND gate 521, a comparator 541, a first Each decompression logic means multiplexer 561 and a second multiplexer 581. Each record in each 362, 363, 364 an address label field and a compression flag memory means 36h (compare Fig. 3) also includes a mask field, bit, a set compression flag bit indicating that compression 20 25 30 35 13 511972 mering is used. Each of the memory means 361, 362, 363, 364 also has a mask field output, an address label field output and a compression flag bit output. Fig. 4 shows the decompression logic means 501 for the first stage. The decompression logic means for the other steps are constructed in the same way and are not shown. The inputs to AND gate 521 are the mask field output and the first prefix length of the destination address. The inputs to the comparator 541 are the address label field output and an output of the AND gate 521. The inputs to the first multiplexer 561 are the pointer output and a logic 0 signal. The inputs to the second multiplexer are the output of the AND gate 521 and an output of the comparator 541. The decompression logic means 501 outputs a new pointer, which is input to the second memory means 362 (compare Fig. 3).
Bakgrunden till konstruktionen enligt fig. 4 är att ett vanligt fall i glesa dirigeringstabeller är att en prefixgrupp endast innefattar två olika typer av poster. Den första typen är en eller flera konsekutiva giltiga poster, alla identiska. Den andra typen består av alla andra poster i gruppen och är anting- en giltiga eller ogiltiga. Om de är giltiga är det på grund av utsträckningen av en kortare matchande väg, som den första typen av poster överlappar. För att optimera minneskraven för dessa grupper inför vi ett speciellt sätt att representera den. Till varje delpost adderas en etikett som identifierar den giltiga posten med den följande längden, och också en längdindikator eller en mask för att tillåta grupper med giltiga. Pà detta sätt kan tabellen minskas till endast två poster. En post för adres- ser som matchar etiketten, och en post för de andra adresserna.The background to the construction according to Fig. 4 is that a common case in sparse routing tables is that a prefix group only comprises two different types of records. The first type is one or more consecutive valid entries, all identical. The second type consists of all other items in the group and is either valid or invalid. If they are valid, it is due to the extent of a shorter matching path, that the first type of records overlap. To optimize the memory requirements for these groups, we introduce a special way to represent it. To each sub-entry is added a label identifying the valid entry with the following length, and also a length indicator or mask to allow groups of valid. In this way, the table can be reduced to only two items. An entry for addresses that match the label, and an entry for the other addresses.
Vi behöver också en bit för att ange att komprimering skall ut- föras. Bitar i posterna sparas genom att placera alla de kompri- merade tabellerna i làgadressomrádet hos minnet. Genom att utfö- ra detta kan de högre ordningens adressbitar istället användas såsom lägre ordningens bitar vid adressering bland de komprime- rade tabellerna.We also need a bit to specify that compression should be performed. Pieces in the records are saved by placing all the compressed tables in the low address area of the memory. By doing this, the higher order address bits can instead be used as lower order bits when addressing among the compressed tables.
I fig. 5 visas ett flödesschema pà förfarandet enligt föreliggande uppfinning. Förfarandet börjar vid blocket 60. För- farandet innefattar i steg, varvid varje steg representerar, en förutbestämd prefixlängd och ett prefix representerar en grupp 10 15 20 25 14 511 972 adresser, varvid det första steget representerar den kortaste prefixlängden och steget i representerar den längsta prefixläng- den med n bitar, varvid varje steg innefattar en tabell med pos- ter, varvid varje post innefattar ett pekarfält som antingen in- nefattar en pekare till tabellen i nästa steg, eller en pekare till en dirigeringstabell som lagrar vidarebefordringsinforma- vid blocket 62, att söka efter ett första antal bitar motsvarande den kortaste tionen. Därefter, fortsätter förfarandet genom prefixlängden hos destinationsadressen i den första tabellen.Fig. 5 shows a flow chart of the method according to the present invention. The method begins at block 60. The method comprises in steps, each step representing, a predetermined prefix length and a prefix representing a group of addresses, the first step representing the shortest prefix length and step i representing the longest the prefix length of n bits, each step comprising a table of records, each record comprising a pointer field which either includes a pointer to the table in the next step, or a pointer to a routing table which stores forwarding information at block 62 , to search for a first number of bits corresponding to the shortest tion. Then, the procedure continues through the prefix length of the destination address in the first table.
Därefter, vid blocket 64, ställs frågan huruvida posten i den tabellen där en matchning hittas innefattar en pekare till den andra tabellen. Om svaret är jakande fortsätter förfarandet med blocket 66, motsvarande den näst kortaste prefixlängden hos destinationsad- vid blocket 68, ställs frågan huruvida posten i den andra tabellen där en matchning där en sökning utföres efter ett andra antal bitar ressen i den andra tabellen. Därefter, hittas innefattar en pekare till den tredje tabellen. Om svaret är jakande fortsätter förfarandet till dess att ett längsta mat- chande prefix har hittats, varvid pekaren till dirigeringstabel- len, vid blocket 70, ger vidarebefordringsinformationen för att vidarebefordra det inkommande datapaketet. Sedan avslutas förfa- randet vid blocket 72. gativt fortsätter förfarandet med blocket 70.Then, at block 64, the question is asked whether the entry in the table where a match is found includes a pointer to the other table. If the answer is yes, the procedure continues with block 66, corresponding to the second shortest prefix length of destination ad- at block 68, the question is asked whether the entry in the second table where a match where a search is performed for a second number of bits ressen in the second table. Next, the find includes a pointer to the third table. If the answer is yes, the procedure continues until a longest matching prefix is found, with the pointer to the routing table, at block 70, providing the forwarding information to forward the incoming data packet. Then the procedure ends at block 72. gatively, the procedure continues with block 70.
Om svaret vid blocket 64 eller 68 är ne- Uppfinningen är inte begränsad till den i det föregåen- de beskrivna utföringsformen. Det kommer att vara uppenbart att många olika modifieringar är möjliga inom omfattningen av de följande patentkraven.If the answer at block 64 or 68 is no, the invention is not limited to the embodiment described above. It will be apparent that many different modifications are possible within the scope of the following claims.
Claims (14)
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9703292A SE511972C2 (en) | 1997-09-09 | 1997-09-09 | Lookup device and method for classifying and forwarding data packets |
PCT/SE1998/001584 WO1999013619A2 (en) | 1997-09-09 | 1998-09-07 | A lookup device and a method for classification and forwarding of packets |
CA002302744A CA2302744A1 (en) | 1997-09-09 | 1998-09-07 | A lookup device and a method for classification and forwarding of packets |
AU91008/98A AU9100898A (en) | 1997-09-09 | 1998-09-07 | A lookup device and a method for classification and forwarding of packets |
EP98943155A EP1025678A2 (en) | 1997-09-09 | 1998-09-07 | A lookup device and a method for classification and forwarding of packets |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
SE9703292A SE511972C2 (en) | 1997-09-09 | 1997-09-09 | Lookup device and method for classifying and forwarding data packets |
Publications (3)
Publication Number | Publication Date |
---|---|
SE9703292D0 SE9703292D0 (en) | 1997-09-09 |
SE9703292L SE9703292L (en) | 1999-03-10 |
SE511972C2 true SE511972C2 (en) | 2000-01-10 |
Family
ID=20408224
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
SE9703292A SE511972C2 (en) | 1997-09-09 | 1997-09-09 | Lookup device and method for classifying and forwarding data packets |
Country Status (5)
Country | Link |
---|---|
EP (1) | EP1025678A2 (en) |
AU (1) | AU9100898A (en) |
CA (1) | CA2302744A1 (en) |
SE (1) | SE511972C2 (en) |
WO (1) | WO1999013619A2 (en) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6975631B1 (en) * | 1998-06-19 | 2005-12-13 | Juniper Networks, Inc. | Network packet forwarding lookup with a reduced number of memory accesses |
GB9912129D0 (en) | 1999-05-26 | 1999-07-28 | 3Com Corp | Communication device with forwarding database having having a trie search facility |
SE9903460L (en) * | 1999-09-22 | 2001-03-23 | Effnet Group Ab | Method and system for fast routing lookups |
US6799202B1 (en) | 1999-12-16 | 2004-09-28 | Hachiro Kawaii | Federated operating system for a server |
GB2359693B (en) * | 2000-02-26 | 2003-07-16 | 3Com Corp | Network switch with truncated trie look-up facility |
JP2003533913A (en) * | 2000-05-11 | 2003-11-11 | ソリダム システムズ コーポレーション | State transition machine for packet classification |
JP2001326679A (en) | 2000-05-15 | 2001-11-22 | Fujitsu Ltd | Information unit, table retrieval device, table retrieval method, and recording medium |
US7966421B2 (en) | 2000-06-21 | 2011-06-21 | SAtech Group, A.B. Limited Liability Company | Method and apparatus for logically expanding the length of a search key |
US6917954B2 (en) * | 2001-05-30 | 2005-07-12 | Mosaid Technologies, Inc. | Load balancing in IP address lookup |
GB2378622A (en) * | 2001-08-11 | 2003-02-12 | Zarlink Semiconductor Ltd | Updating a lookup table used in mapping between TDM channels and packets |
SE521907C2 (en) * | 2002-01-21 | 2003-12-16 | Rockstorm Technologies Ab | Method and system for fast IP route search to determine where an IP datagram with a given destination address should be forwarded |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5206856A (en) * | 1989-12-27 | 1993-04-27 | Bell Communications Research, Inc. | Routing of network traffic |
US5365520A (en) * | 1992-03-27 | 1994-11-15 | Motorola, Inc. | Dynamic signal routing |
-
1997
- 1997-09-09 SE SE9703292A patent/SE511972C2/en not_active IP Right Cessation
-
1998
- 1998-09-07 WO PCT/SE1998/001584 patent/WO1999013619A2/en not_active Application Discontinuation
- 1998-09-07 CA CA002302744A patent/CA2302744A1/en not_active Abandoned
- 1998-09-07 EP EP98943155A patent/EP1025678A2/en not_active Withdrawn
- 1998-09-07 AU AU91008/98A patent/AU9100898A/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
SE9703292L (en) | 1999-03-10 |
WO1999013619A3 (en) | 1999-06-03 |
SE9703292D0 (en) | 1997-09-09 |
CA2302744A1 (en) | 1999-03-18 |
EP1025678A2 (en) | 2000-08-09 |
AU9100898A (en) | 1999-03-29 |
WO1999013619A2 (en) | 1999-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6658482B1 (en) | Method for speeding up internet protocol address lookups with efficient use of memory | |
CN107800631B (en) | Method and apparatus for efficient matching of TCAM rules using hash tables in RAM | |
US10496680B2 (en) | High-performance bloom filter array | |
US7111071B1 (en) | Longest prefix match for IP routers | |
US6880064B1 (en) | Method and apparatus for physical width expansion of a longest prefix match lookup table | |
US7443841B2 (en) | Longest prefix matching (LPM) using a fixed comparison hash table | |
US7990958B2 (en) | Method and apparatus for a four-way hash table | |
US7433871B2 (en) | Efficient ipv4/ipv6 best matching prefix method and apparatus | |
US8199652B2 (en) | IP address lookup method and apparatus by using Bloom filter and multi-hashing architecture | |
US7212531B1 (en) | Apparatus and method for efficient longest prefix match lookup | |
US7277426B2 (en) | Method and apparatus for reordering entries in a multi probe lookup | |
US20030210702A1 (en) | Configurable packet processor | |
US20060167843A1 (en) | Tire search engines and ternary CAM used as pre-classifier | |
KR100586461B1 (en) | Method, Hardware Architecture and Recording Medium for Searching IP Address by Using Pipeline Binary Tree | |
CA2365395C (en) | Default route coding | |
Pao et al. | Efficient hardware architecture for fast IP address lookup | |
IE20010248A1 (en) | Prefix search method and data structure using compressed search tables | |
SE511972C2 (en) | Lookup device and method for classifying and forwarding data packets | |
GB2350534A (en) | Packet-based network device with forwarding database having a trie search facility | |
US6917954B2 (en) | Load balancing in IP address lookup | |
US20040044868A1 (en) | Method and apparatus for high-speed longest prefix match of keys in a memory | |
US7003625B2 (en) | Searching small entities in a wide CAM | |
SE511971C2 (en) | A lookup device and a method for classifying and forwarding data packets in data packet switching networks | |
EP1175756B1 (en) | Longest matching prefix lookup | |
CN108075979A (en) | Realize the matched method and system of most long code mask |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
NUG | Patent has lapsed |