SE511971C2 - En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät - Google Patents

En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät

Info

Publication number
SE511971C2
SE511971C2 SE9703293A SE9703293A SE511971C2 SE 511971 C2 SE511971 C2 SE 511971C2 SE 9703293 A SE9703293 A SE 9703293A SE 9703293 A SE9703293 A SE 9703293A SE 511971 C2 SE511971 C2 SE 511971C2
Authority
SE
Sweden
Prior art keywords
data packet
hash
memory
packet identifier
index
Prior art date
Application number
SE9703293A
Other languages
English (en)
Other versions
SE9703293D0 (sv
SE9703293L (sv
Inventor
Peter Sjoedin
Andreas Moestedt
Original Assignee
Sics Swedish Inst Of Computers
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 Sics Swedish Inst Of Computers filed Critical Sics Swedish Inst Of Computers
Priority to SE9703293A priority Critical patent/SE511971C2/sv
Publication of SE9703293D0 publication Critical patent/SE9703293D0/sv
Priority to PCT/SE1998/001585 priority patent/WO1999013620A2/en
Priority to EP98944371A priority patent/EP1020053A2/en
Priority to CA002303261A priority patent/CA2303261A1/en
Priority to AU91926/98A priority patent/AU9192698A/en
Publication of SE9703293L publication Critical patent/SE9703293L/sv
Publication of SE511971C2 publication Critical patent/SE511971C2/sv

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q11/00Selecting arrangements for multiplex systems
    • H04Q11/04Selecting arrangements for multiplex systems for time-division multiplexing
    • H04Q11/0428Integrated services digital network, i.e. systems for transmission of different types of digitised signals, e.g. speech, data, telecentral, television signals
    • H04Q11/0478Provisions for broadband connections
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/256Routing or path finding in ATM switching fabrics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/30Peripheral units, e.g. input or output ports
    • H04L49/3081ATM peripheral units, e.g. policing, insertion or extraction
    • H04L49/309Header conversion, routing tables or routing tags
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • H04L45/7452Multiple parallel or consecutive lookup operations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/20Support for services
    • H04L49/205Quality of Service based
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/35Switches specially adapted for specific applications
    • H04L49/351Switches specially adapted for specific applications for local area network [LAN], e.g. Ethernet switches

Description

15 20 30 35 511971 2 för en ATM-cell eller en Internet-ram. Ett vanligt uppslag- ningsförfarande är att använda ett haschningsschema.
I artikeln ”A Comparison of Hashing Schemes för Address Lookup in Computer Networks", av R. Jain, IEEE Transactions on Communication, vol. 40, nr. 10, sid. 1570-1573, 1992, vi- sas olika hashningsförfaranden. De beskrivna hasningsförfa- randena är: Hashning med användning av adressbitar, kJ Hashning med användning av CRC-polynom, Hashning med användning av en annan kontrollsumma, och U1J>bJf\) ) ) ) Hashning med användning av Fletscher-kontrollsumma, ) ) Hashning med användning av XELLER-faltning.
Artikeln ”Large-scale and High-speed Interconnection of Multiple FDDI using ATM-based Backbone LAN” av T. Tsukakoshi, O. Takada, T. Murakami, M. Terada, M. Yamaga, IEEE INFOCOM 1992, vol. 3, sid. 2290-2298, maj 1992, beskriver en lösning på problemet att en hashfunktion kan avbilda flera identifie- rare i samma tabelläge. Hashningsmekanismen enligt denna lös- ning placerar alla poster i samma minne, och beräknar hash- värdet ett variabelt antal gånger till dess att ingen kolli- sion inträffar.
Hashtabeller implementeras karakteristiskt såsom en ta- bell med listor, där varje tabellpost är en lista av identi- fierare som delar detta index. Nackdelen med en sådan organi- sation är att den erfordrar repetitiv åtkomst till minne i syfte att utföra en uppslagning, vilket sänker prestandan.
Många sådana schemor litar desutom på endast en hashfunktion, och återhashning måste utföras om fördelningen blir alltför snäv.
Sammanfattning av uppfinningen Ändamålet med föreliggande uppfinning är att lösa de ovan nämnda problemen och att åstadkomma en uppslagningsan- ordning för klassicifering och vidarebefordning av datapaket, där varje datapaket innefattar ett datapaketshuvud innefat- tande ett antal fält, varvid flera fält i datapaketshuvudet tillsammans bildar en datapaketsidentifierare. Detta ändamål 10 15 20 25 30 35 511971 3 erhålles genom att åstadkomma uppslagningsanordningen defini- erad i ingressen av patentkravet 1 med de fördelaktiga egen- skaperna hos den kännetecknande delen av nämnda patentkrav.
Uppslagningsanordningen enligt föreliggande uppfinning innefattar n parallella hashningsenheter, där n är ett heltal och n22, för att beräkna för varje datapaket ett första index genom att hasha datapaketsidentifieraren, och i beroende av det första indexet antingen direkt eller indirekt erhålla en datapaketsidentifierare och vidarebefordringsinformation för destinationen för datapaketet från ett av åtminstone n min- nen, varvid de n hashningsenheterna behandlar samma datapa- ketsidentifierare åt gången. Uppslagningsanordningen innfat tar också en jämförare ansluten antingen direkt eller indi- rekt till åtminstone ett av nämnda minnen och en ingång hos de n hashningsenheterna för att jämföra datapaketsidentifie- raren inmatad till de n hashningsenheterna och datapakets- identifieraren utmatad från minnet. När de jämförda datapa- ketsidentifierarna matchar varandra erhålles vidarebeford- ringsinformationen för datapaketet från minnet. Huvudfördelen med denna konstruktion är att en ny datapaketsidentifierare kan uppslås i varje minnescykeltid. En annan fördel med denna konstruktion är att den tillåter flera tabelluppslagningar att utföras under en minnescykeltid, eftersom uppslagningarna utföres parallellt.
Varje hashningsenhet innefattar fördelaktigtvis ett hashfunktionsorgan för att beräkna det första indexet, och ett hashminne anslutet till hashfunktionsorganet.
Uppslagningsanordningen använder företrädesvis n olika hashfunktioner, en hashfunktion för varje hashfunktionsorgan.
Härigenom åstadkommes att behovet av àterhashning effektivt minskas, och förhoppningsfullt elimineras, eftersom identifi- erarna sprids på flera oberoende hashfunktioner.
De n hashningsenheterna är företrädesvis ordnade med prioritet, varvid den första hashningsenheten har den högsta prioriteten, och hashningsenheten n har den lägsta priorite- ten. 10 15 20 25 30 35 511971 4 Det första hashminnet, som representerar den högsta ni- vån i uppslagningsanordningen, har företrädesvis den största minnesstsorleken och hashminnet n, som representerar den lägsta nivån i uppslagningsanordningen har den minsta minnes- storleken.
Minnesstorlekarna för de n hashminnena minskar företrä- desvis väsentligen linjärt. Härigenom åstadkommes den mest effektiva minnesanvändningen.
Fördelaktigtvis är alla minnen statiska direktåtkomst- minnen (SRAM) och/eller dynamiska direktåtkomstminnen (DRAM).
Det första indexet fungerar företrädesvis såsom en in- signal till hashminnet som ger en datapaketsidentifierare och vidarebefordringsinformation för destinationen och en träff- flagga såsom utsignaler. Uppslagningsanordningen innefattar också ett väljarorgan anslutet till träfflaggsutgången hos alla n hashminnen, en multiplexor ansluten till datapakets- identifierar- och vidarebefordringsinformationsutgångarna hos alla n hashminnen varvid jämföraren är ansluten till multi- plexorn. En satt träfflagga indikerar att det fanns en post i hashminnet med det första indexet erhållet genom att hasha datapaketsidentifieraren, och datapaketsidentifieraren från hashminnet med den högsta prioriteten med satt träfflagga, om någon, används såsom insignal till jämföraren via multiplex- orn, varvid jämföraren jämför datapaketsidentifieraren inma- tad till hashfunktionsorganet och datapaketsidentifieraren utmatad från multiplexorn, och när de jämförda datapakets- identifierarna matchar varandra, erhålles vidarebeford- ringsinformation för datapaketet från hashminnet med den hög- sta prioriteten med satt träfflagga.
Enligt en annan utföringsform enligt föreliggande upp- finning fungerar det första indexet såsom en insignal till hashminnet som ger ett andra index och en träfflagga såsom utsignaler. Uppslagningsanordningen innefattar också ett val- jarorgan anslutet till träfflaggutgàngarna hos alla n hash- minnen, en multiplexor ansluten till de andra index utgångar- na hos alla n hashminnen, ett adressminne, som lagrar alla datapaketsidentifierare tillsammans med vidarebefordringsin- lO 15 20 25 30 35 511971 5 formationen för destinationen, anslutet till multiplexorn, varvid jämföraren är ansluten till adressminnet. En satt träfflagga indikerar att det fanns en post i hashminnet med det första indexet erhållet vid hashande av datapaketsidenti- fieraren och det andra indexet från hashminnet med den högsta prioriteten med satt träfflagga, om någon, används såsom in- signal till adressminnet, som ger en datapaketsidentifierare och vidarebefordringsinformationen såsom utsignaler. Jämföra- ren jämför datapaketsidentifieraren inmatad till hashfunk- tionsorganen och datapaketsidentifieraren utmatad från ad- ressminnet och när de jämförda datapaketsidentifierarna mat- char varandra, erhålles vidarebefordringsinformationen för datapaketet från adressminnet.
Ett annat ändamål med uppfinningen är att åstadkomma ett förfarande för klassificering och vidarebefordring av da- tapaket, varvid varje datapaket innefattar ett datapaketshu- vud innefattande ett antal fält, varvid flera fält i datapa- ketshuvudet tillsammanas bildar en datapaketsidentifierare.
Förfarandet innefattar de följande stegen: - att beräkna, för varje datapaket, ett första index genom att hasha den inmatade datapaketsidentifieraren i n olika parallella banor där n är ett heltal och n22; - och i beroende av det första indexet antingen direkt eller indirekt erhålla en datapaketsidentifierare och vidarebe- fordringsinformation för destinationen för datapaketet från ett av åtminstone n minnen; - att jämföra den inmatade datapaketsidentifieraren och da- tapaketsidentifieraren utmatad från minnet; och - om de jämförda datapaketsidentifierarna matchar varandra att använda vidarebefordringsinformationen erhållen från minnet.
Huvudfördelen med detta förfarande är att en ny datapa- ketsidentifierare kan uppslås i varje minnescykeltid. En an- nan fördel med detta förfarande är att det tillåter flera ta- belluppslagningar att utföras under en minnescykeltid, efter- som uppslagningarna utföres parallellt.
Beräkningssteget innefattar fördelaktigtvis stegen: 10 20 25 30 35 511971 6 - att beräkna det första indexet genom att använda olika hashfunktioner, en hashfunktion för varje bana; och - att använda det första indexet såsom en insignal till en tabell, en av n olika tabeller. Härigenom åstadkommes att behovet av återhashning effektivt minskas, och förhopp- ningsvis elimineras eftersom identifierarna sprids på fle- ra oberoende hashfunktioner.
Företrädesvis är de n banorna ordnade med prioritet, varvid den första banan har den högsta prioriteten och banan n har den lägsta prioriteten.
Den första tabellen, som representerar den högsta ni- vån, har företrädesvis den största storleken, och tabellen n, som representerar den lägsta nivån, har den minsta storleken.
Storlekarna hos de n tabellerna minskar fördelaktigtvis väsentligen linjärt. Härigenom åstadkommes den mest effektiva tabellanvändningen.
Varje tabell lagrar fördelaktigtvis datapaketsidentifi- erare och vidarebefordringsinformation för destinationen, varvid varje tabell utmatar en träfflagga, varvid en satt träfflagga indikerar att det fanns en post i tabellen med det första indexet erhållet genom att hasha datapaketsidentifie- raren, och datapaketsidentifieraren från tabellen med den högsta prioriteten med satt träfflagga, om någon, används så- som insignal till jämförarsteget.
Enligt en annan utföringsform av förfarandet enligt fö- religgande uppfinning, fungerar det första indexet såsom en insignal till tabellen som ger ett andra index och en träff- flagga såsom utsignaler. En satt träfflagga indikerar att det fanns en post i tabellen med det första indexet erhållet vid hashning av datapaketsidentifieraren, och det andra indexet från tabellen med den högsta prioriteten med den satta träff- flaggan, om någon, används såsom insignal till ett adressmin- ne som ger en datapaketsidentifierare såsom utsignal, och da- tapaketsidentifieraren används såsom insignal till jämförar- steget.
Om en ny datapaketsidentifierare skall adderas, hashas den företrädesvis initialt i den första banan, och om en kol- 10 15 20 25 30 35 511971 7 lision inträffar, dvs. det finns redan en datapaketsidentifi- erare med detta första index i den första tabellen, hashas de två kolliderande datapaketsidentifierarna i den andra banan och om en kollision inträffar i banan i hashas de kollideran- de datapaketsidentifierarna i banan (i+l), varvid lšiín-1.
Härigenom àstadkommes att endast en jämförelse behövs för en fullständig identifieraruppslagning.
Förfarandet avslutas fördelaktigtvis för datapakets- identifierarna om de jämförda datapaketsidentifierarna inte matchar varandra.
Förfarandet avslutas företrädesvis för datapaketsiden- tifierarna om ingen av de n tabelllerna utmatar en satt träfflagga.
Utföringsformer av uppfinningen kommer nu att beskrivas med en hänvisning till de bifogade ritningarna där: Kort beskrivning av ritningarna Figur 1 visar ett schema på fälten hos ett IP-data- paketshuvud; Figur 2 visar ett schema på häshningskonceptet; Figur 3 visar ett blockschema på en uppslagningsanord- ning enligt föreliggande uppfinning; och Figur 4 visar ett flödesschema på förfarandet enligt föreliggande uppfinning.
Detaljerad beskrivning av utföringsformer I figur l visas ett schema på fälten i ett IP-data- paketshuvud. IP-datapaketshuvudet innefattar 12 olika fält.
Såsom visas i figur 1 är dessa fält: Version, IP-huvudlängd, typ av tjänst, total längd, identifiering, flaggor, fragment- förskjutning, livstid, protokoll, huvudkontrollsumma, källad- ress och destinationsadress. Det kan också innefatta ett val- fritt fält.
Det finns i princip två olika typer av IP-datapakets- klassificering: IP-adressuppslagning, som används för att vi- darebefordra unicast-datapaket baserade på deras destina- tionsadress, och identifieraruppslagning, som är avsedd att användas exempelvis för att vidarebefordra multicast-data- 10 15 20 25 30 35 511 971 8 paket och flöden av datapaket. IP-multicastadresser är inte organiserade i en hierarkisk struktur. Identifieraruppslag- ning används när flera fält i datapaketshuvudet tillsammans bildar en datapaketsidentifierare. En sådan identifierare har ingen hierarkisk struktur och identifierarutrymmet är poten- tiellt mycket stort. Tekniker såsom hashning eller CAM (inne- hàllsadresserbart minne) erfordras därför för uppslagningen.
Den föreliggande uppfinning är baserad på identifierarupp- slagning.
I artikeln "A Comparison of Hashing Schemes for Address Look-Up in Computor Networks” av R. Jain, IEEE Transactions on Communications, vol. 40, nr 10, sid. 1570-1573, refererad till ovan, visas grundteorin som ligger bakom hashningskon- ceptet. Nedan och med hänvisning till figur 2 kommer att ges ett litet val från denna artikel.
I figur 2 visas ett schema på hashningskonceptet. Hash- ning tillåter oss att huvudsakligen dela upp en stor tabell i flera mindre deltabeller så att vi snabbt kan hitta informa- tionen när vi väl har bestämt oss för vilken tabell som skall eftersökas. Denna bestämning utföres genom att använda en ma- tematisk funktion, som avbildar den givna nyckeln till hash- cellen i, såsom visas i figur 2. Cellen i kan sedan peka pà deltabellen med storleken ni. Givet ett spår med R ramar med N distinkta adresser och en hashtabell med M celler är målet att minimera medelantalet uppslagningar som erfordras per ram.
Om vi utför en vanlig binär sökning genom alla N:s adresser, behöver vi utföra 1 + log2(2N) eller log2(2N) upp- slagningar per ram. Givet en adress som hashar på cellen i, måste vi söka igenom en deltabell med ni poster, som endast erfordrar log2(2ni) uppslagningar. Det totala antalet sparade uppslagningar ar S' s = Zr»,[1og2<2N>~1oq2<2n-,>1 L _ där ri är antalet ramar som hashas på cellen i, Zri = R. Net- tobesparingen per ram är F: f- fl- F= --*1 (-*->=2I g R ogzu . '- q. IOQAP.) 10 15 20 25 30 35 511 971 9 Här betecknar q1= Ei delen ramar som hashas på cellen i, och p1==%f är delen adresser som hashas på cellen i. Må- let med en hashningsfunktion är att maximera kvantiteten Z-q1log2(P1).
I figur 3 visas ett blockschema på en uppslagningsan- ordning enligt föreliggande uppfinning. Uppslagningsanord- ningen 30 är för klassificering och vidarebefordring av data- paket i datapaketförmedlande nät, varvid varje datapaket in- nefattar ett datapaketshuvud (jämför figur 1) innefattande ett antal fält, varvid flera fält i datapaketshuvudet till- sammans bildar en datapaketsidentifierare. Uppslagningsanord- ningen 30 innefattar n parallella hashningsenheter 321, 32% .., 32n där n är ett heltal och nS2. Varje hasningsenhet 321, 322, ..., 32n innefattar ett hashfunktionsorgan 341, 34% ., 34n och ett hashminne 361, 362, ..., 36, anslutet till hashfunktionsorganet 341, 342, ..., 34n. Varje hasfunktionsor- gan 341, 342, ..., 34n beräknar ett första index genom att hasha datapaketsidentifieraren. Detta första index används såsom en insignal till hashminnet, som ger ett andra index och en träfflagga såsom utsignaler. En satt träfflagga indi- kerar ett det fanns en post i ett hashminne 361, 362, ..., 36n med det första indexet erhållet vid hashande av datapakets- identifieraren. Uppslagningsanordningen 30 enligt föreliggan- de uppfinning använder n olika hashfunktioner, en hashfunk- tion för varje hashfunktionsorgan 341, 342, ..., 34n. Detta innebär att uppslagningsanordningen 30 enligt föreliggande uppfinning innefattar flera (n) hashbanor. Alla hashningsen- heterna 321, 322, ..., 32n behandlar samma datapaketsidentifi- erare. Därför kommer en uppslagning för en given identifiera- re att lyckas i åtminstone en av banorna, och därför kan alla banorna sökas parallellt. Uppslagningsanordningen 30 innefat- tar också ett väljarorgan 38 anslutet till träfflaggsutgàng- arna hos alla n hashminnen 361, 362, ..., 36n, och en multi- plexor 39 ansluten till de andra indexutgàngarna hos alla n hashminnen 361, 362, ..., 36n. Utgàngen fràn väljarorganet 38 är ansluten till multiplexorn 39. Uppslagningsanordningen 30 innefattar också ett adraessminne 40, vilket lagrar alla da- s 10 15 20 25 30 35 511971 10 tapaketsidentifierare tillsammans med vidarebefordringsinfor- mationen för destinationen. Varje andra index inmatat till adressminnet 40 kommer att ge en datapaketsidentifierare och vidarebefordringsinformationen för destinationen såsom utsig- nal. Uppslagningsanordningen 30 innefattar också en jämförare 42 ansluten till adressminnet 40. Jämföraren 42 har också en annan ingång, matad med identifieraren inmatad till alla de n hashfunktionsorganen 341, 342, ..., 34n. Jämföraren 32 jämför datapaketsidentifieraren inmatad till de n hashfunktionsorga- nen 341, 342, ..., 34n, och datapaketsidentifieraren utmatad från adressminnet 40. Om de jämförna datapaketsidentifierarna matchar varandra, erhålles vidarebefordringsinformationen för datapaketet för adressminnet 40, via en ledning 44. Om de in- te matchar varandra var det en falsk träff, indikerande att datapaketsidentifieraren inte fanns i adressminnet 40. Hash- beräkningen, minnesuppslagningen, tabelluppslagningen och jämförelsen är alla oberoende operationer och kan utföras pa- rallellt, varvid uppslagningen med lätthet kan pipeline- behandlas för att öka genomströmningen.
En annan utföringsform av uppslagningsanordningen en- ligt föreliggande uppfinning innefattar inte ett adresssminne och använder inte något andra index. I stället innefattar hashminnena 361, 362, ..., 36n datapaketsidentifierarna och vidarebefordringsinformationen. Datapaketsidentifieraren ut- matad från hashminnet med den högsta prioriteten med satt träfflagga, om någon, används såsom insignal till jämföraren.
Denna utföringsform visas inte i någon figur. Denna utfö- ringsform innefattar alla de i figur 3 visade elementen, för- utom adressminnet 40.
Den i figur 3 visade utföringsformen föredrages för stora identifierare, på grund av att det sparar minne att an- vända ett minne av andra nivå. Vilket förfarande som är bäst beror på hur konstruktionen används (dvs., storleken hos identifierare, minnesorganisation, osv.).
Fördelen med dessa konstruktioner är tvàfaldig: För det första tillåter det att flera tabelluppslagning- ar utföres under en minnescykeltid, eftersom uppslagningarna 10 15 20 25 30 35 511971 ll utföres parallellt. För det andra finns det flera hashfunk- tioner, vilket effektivt minskar och förhoppningsvis elimine- rar behovet av àterhashning eftersom identifierarna sprids på flera oberoende hashfunktioner.
När en identifierare adderas till uppslagningsanord- ningen 30 hashas den initialt i den första banan. Om en kol- lision inträffar, dvs., det finns redan en identifierare med detta index i hashminnet, hashas de två kolliderande identi- fierarna in i den andra banan. Indexet i den första banan där kollisionen inträffade kan inte användas för en annan identi- fierare. Om en kollision också inträffar i den andra banan upprepas samma procedur med de kolliderande identifierarna förflyttade till den tredje banan, osv.
Det finns ett skäl varför en hashpost där en kollision har inträffat inte används mer. Om en uppslagning träffar i mer än en bana är det nöjaktigt att endast beakta träffen i banan med den högsta prioriteten. Så med detta schema måste endast en jämförelse med den reella identifieraren utföras.
Om en kollision inträffar i den sista av banorna, kom- mer uppslagningstabellen att överflöda. Ju större hashminnena är i hashbanorna, desto lägre är sannolikheten att identifie- rarna kommer att kollidera.
Den mest effektiva minnesanvändningen erhålles när min- net är uppdelat i flera hashbanor. Hashbanorna skall vara or- ganiserade hierarkiskt med det största hashminnet vid den högsta nivån och det minsta hashminnet vid den lägsta nivån, företrädesvis med hashminnesstorlekarna för de n hashminnena minskande väsentligen linjärt.
Uppslagningsanordningen 30 implementeras företrädesvis med användning av statiska direktàtkomstminnen (SRAM) och/ eller dynamiska direktàtkomstminnen (DRAM) såsom minnen.
Hashfunktionsorganen 341, 342, ..., 34n kan implemente- ras med användning av XELLER-faltning, som sannolikt föredra- ges, eftersom den är enkel och lätt att variera.
I figur 4 visas ett flödesschema på förfarandet enligt föreliggande uppfinning. Förfarandet för klassificering och vidarebefordring av datapaket, där varje datapaket innefattar l0 15 20 511971 l2 ett datapaketshuvud (jämför figur l) innefattande ett antal fält, varvid flera fält i datapaketshuvudet tillsammans bil- _ dar en datapaketsidentifierare, börjar vid blocket 50. Sedan, vid blocket 52, fortsätter förfarandet att beräkna, för varje datapaket, ett första index genom att hasha den inmatade da- tapaketsidentifieraren i n olika, parallella banor, där n är ett heltal och n22. Sedan, vid blocket 54, fortsätter förfa- randet genom att, i beroende av det första indexet, antingen direkt eller indirekt erhålla en datapaketsidentifierare och vidarebefordringsinformation för destinationen för datapake- tet fràn ett av åtminstone n minnen. Sedan, vid blocket 56, fortsätter förfarandet genom att jämföra den inmatade datapa- ketsidentifieraren och datapaketsidentifieraren utmatad från minnet. Sedan, vid blocket 58, fortsätter förfarandet, om de jämförda datapaketsidentifierarna matchar varandra, genom att använda vidarebefordringsinformationen erhàllen från minnet.
Sedan avslutas förfarandet vid blocket 60.
Förfarandet enligt föreliggande uppfinning kan exempel- vis implementeras med en uppslagningsanordning av den typ som visas i figur 3.
Uppfinningen är inte begränsad till den ovan beskrivna utföringsformen. Det kommer att vara uppenbart att många oli- ka modifieringar är möjliga inom omfattningen av de följande patentkraven.

Claims (19)

lO 15 20 25 30 35 511 971 13 PATENTKRAV
1. En uppslagningsanordning (30) för klassificering och vidarebefordring av datapaket, varvid varje datapaket inne- fattar ett datapaketshuvud innefattande ett antal fält, var- vid flera fält i datapaketshuvudet tillsammans bildar en da- tapaketsidentifierare, kännetecknad av att uppslagningsanord- ningen (30) innefattar n parallella hashningsenheter (32h 322, ..., 32n), där n är ett heltal och n 22, för att beräk- na, för varje datapaket, ett första index genom att hasha da- tapaketsidentifieraren, och i beroende av det första indexet antingen direkt eller indirekt erhålla en datapaketsidentifi- erare och vidarebefordringsinformation för destinationen för datapaketet från ett av åtminstone n minnen, varvid de n hashningsenheterna (321, 322, ..., 32n) behandlar samma data- paketsidentifierare samtidigt, och en jämförare (42) ansluten antingen direkt eller indirekt till åtminstone ett av minnena och till en ingång hos de n hashningsenheterna (321, 322, _, 32n) för att jämföra datapaketsidentifieraren inmatad till de n hashningsenheterna (321, 322, ..., 32n)och datapa- ketsidentifieraren utmatad från minnet, och när de jämförda datapaketsidentifierarna matchar varandra, erhålles vidarebe- fordringsinformationen för datapaketet från minnet.
2. En uppslagningsanordning (30) enligt patentkravet l, kännetecknad av att varje hashningsenhet (321, 322, ..., 32fi innefattar ett hashfunktionsorgan (341, 342, _, 34n) för att beräkna det första indexet, och ett hashminne (361, 36% ., 36n) anslutet till hashfunktionsorganet (341, 342, ..., 34fl.
3. En uppslagningsanordning (30) enligt patentkravet 2, kännetecknad av att uppslagningsanordningen (30) använder n olika hashfunktioner, en hashfunktion för varje hashfunk- tionsorgan (341, 342, ..., 34n).
4. En uppslagningsanordning (30) enligt något av patent- kraven l-3, kännetecknad av att de n hashningsenheterna (32U 10 15 20 25 511 971 14 322, ..., 32n) är ordnade efter prioritet, där den första hashningsenheten (321) har den högsta prioriteten och hashningsenheten n (32n) har den lägsta prioriteten.
5. En uppslagningsanordning (30) enligt patentkravet 4, kännetecknad av att det första hashminnet (361) som represen- terar den högsta nivån i uppslagningsanordningen (30), har den största minnesstorleken, och hashminnet n (36n), som re- presenterar den lägsta nivån i uppslagningsanordningen (30) har den minsta minnesstorleken.
6. En uppslagningsanordning (30) enligt patentkravet 5, kännetecknad av att minnesstorlekarna för de n hashminnena (361, 362, ..., 36n) minskar väsentligen linjärt.
7. En uppslagningsanordning (30) enligt något av patent- kraven 1-6, kännetecknad av att alla minnen (361, 362, ..., 36n, 40; 361, 362, ..., 36n) är statiska direktåtkomstminnen (SRAM) och/eller dynamiska direktàtkomstminnen (DRAM).
8. En uppslagningsanordning (30) enligt något av patent- kraven 2-7, kännetecknad av att det första indexet fungerar såsom en insignal till hashminnet (361, 362, ..., 361) som ger en datapaketsidentifierare och vidarebefordringsinformation för destinationen och en träfflagga såsom utsignaler, och av att uppslagningsanordningen (30) också innefattar ett val- jarorgan (38) anslutet till träfflaggsutgångarna hos alla n hashminnen (361, 362, ..., 36n), en multiplexor (39) ansluten till datapaketsidentifierar- och vidarebefordringsinforma- tionsutgångarna hos alla n hashminnen (361, 362, ..., 369, varvid jämföraren (42) är ansluten till multiplexorn (39), varvid en satt träfflagga indikerar att det fanns en post i hashminnet (361, 362, ..., 36n) med det första indexet erhål- let genom hashande av datapaketsidentifieraren och datapaket- sidentifieraren från hashminnet (361, 362, ..., 36n) med den högsta prioriteten med satt träfflagga, om någon, används så- som insignal till jämföraren (42), via multiplexorn (39), varvid jämföraren (42) jämför datapaketsidentifieraren inma- 10 l5 20 25 30 35 511971 15 tad till hashfunktionsosrganet (341, 342, ..., 34n) och data- paketsidentifieraren utmatad från multiplexorn (39), och när de jämförda datapaketsidentifierarna matchar varandra, erhål- les vidarebefordringsinformationen för datapaketet från hash- minnet (361, 362, ..., 36n) med den högsta prioriteten med satt träfflagga.
9. En uppslagningsanordning (30) enligt något av patent- kraven 2-7, kännetecknad av att det första indexet fungerar såsom en insignal till hashminnet (361, 362, ..., 36n) som ger ett andra index och en träfflagga såsom utsignaler, och av att uppslagningsanordningen (30) också innefattar ett väl- jarorgan (38) anslutet till träfflaggsutgångarna hos alla n hashminnen (361, 362, ..., 36n), en multiplexor (39) ansluten till de andra indexutgångarna hos alla n hashminnen (36U 362, ..., 36n), ett adressminne (40), vilket lagrar alla da- tapaketsidentifierare tillsammans med vidarebefordringsinfor- mationen för destinationen, anslutet till multiplexorn (39), varvid jämföraren (42) är ansluten till adressminnet (40), varvid en satt träfflagga indikerar att det fanns en post i hashminnet (361, 362, let vid hashande av datapaketsidentifieraren och det andra _, 36n) med det första indexet erhål- indexet från hashminnet (361, 362, ..., 36n) med den högsta prioriteten med satt träfflagga, om någon, används såsom in- signal till adressminnet (40) som ger en datapaketsidentifie- rare och vidarebefordringsinformationen såsom utsignaler, varvid jämföraren (42) jämför datapaketsidentifieraren inma- tad till hashfunktionsorganet (341, 342, ..., 34n) och datapa- ketsidentifieraren utmatad från adressminnet (40), och när de jämförda datapaketsidentifierarna matchar varandra erhålles vidarebefordringsinformationen för datapaketet från adress- minnet (40).
10. Ett förfarande för klassificering och vidarebefordring av datapaket, varvid varje datapaket innefattar ett datapa- ketshuvud innefattande ett antal fält, varvid flera fält i datapaketshuvudet tillsammans bildar en datapaketsidentifie- rare, varvid förfarandet känneteckans av de följande stegen: 10 15 20 25 30 511 971 16 - att beräkna, för varje datapaket , ett första index genom att hasha den inmatade datapaketsidentifieraren i n olika parallella banor, varvid n är ett heltal och n22; - och i beroende av det första indexet antingen direkt eller indirekt erhålla en datapaketsidentifierare och vidarebe- fordringsinformation för destinationen för datapaketet från ett av åtminstone n minnen; - att jämföra den inmatade datapaketsidentifieraren och data- paketsidentifieraren utmatad från minnet; och - om de jämförda datapaketsidentifierarna matchar varandra, att använda vidarebefordringsinformationen erhållen från minnet. ll. att beräkningssteget innefattar stegen:
11. Ett förfarande enligt patentkravet 10, kännetecknat av - att beräkna det första indexet genom att använda n olika hashfunktioner, - att använda det tabell, en hashfunktion för varje bana; och första indexet såsom en insignal till en en av n olika tabeller.
12. netecknat av att de n banorna är ordnade efter prioritet, Ett förfarande enligt något av patentkraven 10-ll, kän- varvid den första banan har den högsta prioriteten och banan n har den lägsta prioriteten.
13. att den första tabellen, har den största storleken, Ett förfarande enligt patentkravet 12, kännetecknat av representerande den högsta nivån, och tabellen n, representerande den lägstsa nivån, har den minsta storleken.
14. Ett förfarande enligt patentkravet 13, kännetecknat av att storlekarna hos de n tabellerna minskar väsentligen lin- jårt.
15. Ett förfarande enligt något av patentkraven 10-14, kän- netecknat av att varje tabell lagrar datapaketsidentifierare och vidarebefordringsinformation för destnationen, och varvid varje tabell utmatar en träfflagga, varvid en satt träfflagga indikerar att det fanns en post i en tabell med det första 10 15 20 25 30 511 971 17 indexet erhållet genom hashande av datapaketsidentifieraren, och datapaketsidentifieraren från tabellen med den högsta prioriteten med satt träfflagga, om någon, används såsom in- signal till jämföringssteget.
16. Förfarande enligt något av patentkraven 10-14, känne- tecknat av att det första indexet fungerar såsom en insignal till tabellen vilket ger ett andra index och en träfflagga såsom utsignaler, varvid en satt träfflagga indikerar att det fanns en post i en tabell med det första indexet erhållet vid hashande av datapaketsidentifieraren, och det andra indexet från tabellen med den högsta prioriteten med satt trafflagga, om någon, används såsom insignal till ett adressminne vilket ger en datapaketsidentifierare såsom utsignal, och datapaket- sidentifieraren används sàsom insignal till jämförarsteget.
17. Ett förfarande enligt något av patentkraven 10-16, kän- netecknat av att, om en ny datapaketsidentifierare skall ad- deras, hashas den initialt i den första banan och om en kol- lision inträffar, dvs. det finns redan en datapaketsidentifi- erare med detta första index i den första tabellen, hashas de två kolliderande datapaketsidentifierarna in i den andra ba- nan, och om en kollision inträffar i banan i hashas de kolli- derande datapaketsidentifierarna in i banan (i+1), varvid lšiín-1.
18. Ett förfarande enligt något av patentkraven 10-17, kän- netecknat av att, om de jämförda datapaketsidentifierarna in- te matchar varandra, avslutas förfarandet för datapaketsiden- tifieraren.
19. Ett förfarande enligt något av patentkraven 15-16, kän- netecknat av att, om ingen av de n tabellerna utmatar en satt träfflagga, avslutas förfarandet för datapaketsidentifiera- ren.
SE9703293A 1997-09-09 1997-09-09 En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät SE511971C2 (sv)

Priority Applications (5)

Application Number Priority Date Filing Date Title
SE9703293A SE511971C2 (sv) 1997-09-09 1997-09-09 En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät
PCT/SE1998/001585 WO1999013620A2 (en) 1997-09-09 1998-09-07 A lookup device and a method for classification and forwarding of packets in packet-switched networks
EP98944371A EP1020053A2 (en) 1997-09-09 1998-09-07 A lookup device and a method for classification and forwarding of packets in packet-switched networks
CA002303261A CA2303261A1 (en) 1997-09-09 1998-09-07 A lookup device and a method for classification and forwarding of packets in packet-switched networks
AU91926/98A AU9192698A (en) 1997-09-09 1998-09-07 A lookup device and a method for classification and forwarding of packets in packet-switched networks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE9703293A SE511971C2 (sv) 1997-09-09 1997-09-09 En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät

Publications (3)

Publication Number Publication Date
SE9703293D0 SE9703293D0 (sv) 1997-09-09
SE9703293L SE9703293L (sv) 1999-03-10
SE511971C2 true SE511971C2 (sv) 2000-01-10

Family

ID=20408225

Family Applications (1)

Application Number Title Priority Date Filing Date
SE9703293A SE511971C2 (sv) 1997-09-09 1997-09-09 En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät

Country Status (5)

Country Link
EP (1) EP1020053A2 (sv)
AU (1) AU9192698A (sv)
CA (1) CA2303261A1 (sv)
SE (1) SE511971C2 (sv)
WO (1) WO1999013620A2 (sv)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6765909B1 (en) 1999-04-22 2004-07-20 Nortel Networks Limited Method and apparatus for providing support for multiple QoS levels within a third generation packet data session
GB2399199B (en) * 2000-04-11 2004-10-27 Cube Ltd P A method and apparatus for wire-speed application layer classification of data packets
AU4870801A (en) * 2000-04-11 2001-10-23 P-Cube Ltd. A method and apparatus for wire-speed application layer classification of data packets
DE50106624D1 (de) * 2001-01-12 2005-08-04 Vector Informatik Gmbh Verfahren und Vorrichtung zur Relevanzprüfung eines Kennzeichners
EP1564960B1 (en) * 2001-05-16 2007-03-28 Bytemobile, Inc. System and methods for providing differentiated services within a network communication system
US7031314B2 (en) 2001-05-16 2006-04-18 Bytemobile, Inc. Systems and methods for providing differentiated services within a network communication system
US7027446B2 (en) * 2001-07-18 2006-04-11 P-Cube Ltd. Method and apparatus for set intersection rule matching
DE60116318T2 (de) 2001-10-08 2006-08-31 Alcatel Verfahren zur Lastverteilung zwischen mehreren gemeinsamen Betriebsmitteln in einem Kommunikationsnetzwerk und Netzwerk zur Anwendung des Verfahrens
US20030120932A1 (en) * 2001-12-21 2003-06-26 Koninklijke Philips Electronics N.V. Synchronizing source and destination systems via parallel hash value determinations
FR2838590B1 (fr) * 2002-04-16 2005-12-30 St Microelectronics Sa Procede de routage pour un reseau de telecommunication et routeur pour la mise en oeuvre dudit procede
US20060041734A1 (en) * 2002-07-01 2006-02-23 Lim Swee H Associating mac addresses with addresses in a look-up table
US7298740B2 (en) 2002-07-11 2007-11-20 Sprint Communications Company L.P. Centralized service control for a telecommunication system
US7877504B2 (en) 2002-08-29 2011-01-25 Intel Corporation Techniques for entry lookups

Family Cites Families (2)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
SE9703293D0 (sv) 1997-09-09
WO1999013620A2 (en) 1999-03-18
EP1020053A2 (en) 2000-07-19
CA2303261A1 (en) 1999-03-18
SE9703293L (sv) 1999-03-10
AU9192698A (en) 1999-03-29
WO1999013620A3 (en) 1999-06-03

Similar Documents

Publication Publication Date Title
US11102120B2 (en) Storing keys with variable sizes in a multi-bank database
US9871728B2 (en) Exact match hash lookup databases in network switch devices
US6862287B2 (en) Method and apparatus for a four-way hash table
US6430527B1 (en) Prefix search circuitry and method
US7236492B2 (en) Configurable packet processor
US7415472B2 (en) Comparison tree data structures of particular use in performing lookup operations
US7592935B2 (en) Information retrieval architecture for packet classification
US7346059B1 (en) Header range check hash circuit
SE511971C2 (sv) En uppslagningsanordning och ett förfarande för klassificering och vidarebefordring av datapaket i datapaketförmedlande nät
WO2005074555A2 (en) Memory efficient hashing algorithm
EP0948849A2 (en) High speed variable length best match look-up in a switching device
CN112667526B (zh) 一种访问控制列表电路实现方法及其电路
CN110035074A (zh) 一种acl匹配udf报文的芯片实现方法及装置
US7554980B1 (en) Packet classification using relevance scoring
US6201755B1 (en) Method and system for storing and retrieving information in a communications node
US20030009474A1 (en) Binary search trees and methods for establishing and operating them
US11782895B2 (en) Cuckoo hashing including accessing hash tables using affinity table
US7299317B1 (en) Assigning prefixes to associative memory classes based on a value of a last bit of each prefix and their use including but not limited to locating a prefix and for maintaining a Patricia tree data structure
CN112818185A (zh) 一种基于sram的最长前缀匹配硬件系统查找的方法
US6343289B1 (en) Efficient search and organization of a forwarding database or the like
CA2302744A1 (en) A lookup device and a method for classification and forwarding of packets
CN107204926B (zh) 预处理cache的路由快速查找方法
O'connor et al. The iFlow address processor
CN110971526A (zh) 一种混合交换机fdb资源的流表扩展方法及装置
US11929837B2 (en) Rule compilation schemes for fast packet classification

Legal Events

Date Code Title Description
NUG Patent has lapsed