SE521907C2 - Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras - Google Patents

Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras

Info

Publication number
SE521907C2
SE521907C2 SE0200153A SE0200153A SE521907C2 SE 521907 C2 SE521907 C2 SE 521907C2 SE 0200153 A SE0200153 A SE 0200153A SE 0200153 A SE0200153 A SE 0200153A SE 521907 C2 SE521907 C2 SE 521907C2
Authority
SE
Sweden
Prior art keywords
search
level
predetermined
forwarding table
representation
Prior art date
Application number
SE0200153A
Other languages
English (en)
Other versions
SE0200153L (sv
SE0200153D0 (sv
Inventor
Mikael SUNDSTROEM
Original Assignee
Rockstorm Technologies Ab
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 Rockstorm Technologies Ab filed Critical Rockstorm Technologies Ab
Priority to SE0200153A priority Critical patent/SE521907C2/sv
Publication of SE0200153D0 publication Critical patent/SE0200153D0/sv
Priority to PCT/SE2003/000064 priority patent/WO2003063427A1/en
Publication of SE0200153L publication Critical patent/SE0200153L/sv
Publication of SE521907C2 publication Critical patent/SE521907C2/sv

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/66Layer 2 routing, e.g. in Ethernet based MAN's
    • 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/742Route cache; Operation thereof
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass

Description

25 30 521 907 2 tionsadressen i den mängd av prefix med godtycklig längd (dvs mellan O och 32 bitar) som utgör vägvalstabellen.
För att påskynda vidarebefordringsbeslutet använder många av dagens lP- routerkonstruktioner en cachningsteknik i vilken de senaste eller oftast sökta destina- tionsadresserna och de motsvarande vägvalssökningresultaten sparas i en vägca- che. Denna metod fungerar mycket bra för routrar nära utkanterna av nätverken, dvs så kallade routrar för små kontor och hemmakontor (SOHO), som har små vägvals- tabeller, låg trafikbelastning och höga accesslägen i vägvalstabellen. En annan metod för att snabba på routrarna är att utnyttja det faktum att frekvensen för väg- valstabelluppdateringar, som är resultatet av topologiförändringar i nätverken etc, är extremt låg jämfört med frekvensen för vägvalssökning. Detta gör det möjligt att lagra den relevanta informationen från vägvalstabellen i en effektivare vidarebefordringsta- bell som optimerats för att stödja snabba sökningar. När förändringar sker i vägvals- tabellen byggs vidarebefordringstabellen om delvis eller fullständigt. l P Gupta Algorithms for Routing Lookups and Packet Classification, A Dis- sertation Submltted to the Department of Computer Science and the Committee on Graduate Studies of Stanford University, December 2000, beskrivs en vidarebeford- ringstabellsrepresentation och en motsvarande sökprocedur som endast använder Static Vector Nodes, dvs direkt adressering, i två steg (dvs två minnesaccesser).
Med en fortsatt ökning av användningen av lnternet finns det ett konstant behov att förbättra IP-vägvalssökningen. l WO 01/22667 beskrivs en teknik för att göra direkt indexering effektivare genom att komprimera vektornoder som har få använda bestämda minnesadresser. l det beskrivna systemet används en vidarebefordrings- tabell som består av tre nivåer av komprimerade pekarvektorer och kostnaden för en sökning är i värsta fall 6 minnesaccesser. Vid glest besatta intervall är slöseriet av minnesutrymme avsevärt när båda dessa metoder används, även om den andra är mycket bättre. Den så kallade Luleå-algoritmen är en annan vidarebefordringstabell, som beskrivs i WO 99/14906, där minnesutrymmesutnyttjandet i hög grad är förbätt- rat men kostnaden för sökning har ökat till 12 minnesaccesser.
Syftet med föreliggande uppfinning är att göra lP-vägvalet ännu effektivare genom att introducera en ny vidarebefordringstabellsrepresentation som förbättrar minnesutrymmesutnyttjandet ännu mer medan kostnaden för en sökning reduceras till 4 minnesaccesser. 10 15 20 25 30 5213 907 3. Beskrivning av uppfinningen Detta syfte uppnås genom en metod och ett system av den typ som definie- ras i inledningsdelen av beskrivningen och som har de karakteriserande särdragen enligt kraven 1 respektive 18. l föreliggande uppfinning är följaktligen en serie av datastrukturer utvecklad för att representera vidarebefordringstabellen, vilka data- strukturer är anpassade till intervalldensiteten hos den aktuella delpopulationen.
Sålunda väljs en optimal struktur för en viss intervalldensitet för att minimera min- nesbehoven. För varje minnesaccess introduceras en viss blockstorlek och med utgångspunkt från denna storlek anpassas datastrukturen så att minnesaccessen kommer att bli så effektiv som möjligt. Det är inget problem att reducera antalet min- nesaccesser för sökning om det inte finns någon begränsning för det tillgängliga minnet och, å andra sidan, är det inget problem att utföra en kompression av tabellen om man kan bortse ifrån antalet nödvändiga minnesaccesser för sökning. Med före- liggande uppfinning minimeras båda dessa storheter. Enligt en annan aspekt av före- liggande uppfinning skapas en dataprogramsprodukt som har dataprogramskodme- del för att få en dator att exekvera metoden ovan när programmet körs på en dator. 4. Kort beskrivning av ritningarna För att ytterligare förklara uppfinningen kommer nu utföranden som valts såsom exempel att beskrivas i mer detalj med hänvisning till ritningarna på vilka Figur 1 är ett flödesdiagram som visar hierarkin för de olika underdatastrukturerna och de motsvarande sökprocedurerna enligt uppfinningen. Figur 2 illustrerar nästa hopp-index och kodningsschema för delträdspekare som används i ett första stegs Static Vector Nodes, Figur 3 illustrerar en Dynamic Flat Tree-underdatastruktur med 25 områden som visar uppställningen av informationen med avseende på cache- radsgränser, Figur 4 illustrerar ett Dynamic Layered Tree-löv och kodningen av områdesgränser till nästa hopp-index liksom den motsvarande noden, Figur 5 illu- strerar uppställningen av information i en binär Dynamic Layered Tree-datastruktur ytterligare, Figur 6 visar uppställningen av information i en Static Flat Tree-data- struktur, Figur 7 är ett schematiskt blockdiagram av ett utförande av systemet enligt uppfinningen, och Figur 8 visar ett exempel på en liten vidarebefordringstabell som representeras av en 32-bitarsvariation av Dynamic Layered Tree-datastrukturen. 10 15 20 25 30 521 907 4 5. Beskrivning av föredragna utföranden I det följande beskrivs utvecklingen av en serie av datastrukturer som används för att representera komprimerade vidarebefordringstabeller som stöder snabb vägvalssökning. I synnerhet utvecklar vi en mängd av tekniker som kombine- ras för att komprimera 218 vägar till en vidarebefordringstabellsdatastruktur med användning av mindre än 2,7 Mbyte minne och som ändå inte kräver mer än 4 min- nesaccesser för sökning. 5.1 Förberedelser 5.1.1 Några kommentarer angående beteckningssätt i det följande kommer vi att uttrycka områden eller intervall genom att använda punktnotationen för talen a och b, a < b, att beteckna områden eller sekvenser (beroende på sammanhang) som innefattar a och b enligt följande b-1...b=b-1,b a...b=a,a+1...b Vi kommer även att använda olika enheter som representeras av bitsträngar.
Om inte annat uttryckligen uppges är bitarna numrerade och startar från 0 och slutar med den högsta biten. Låt x vara en k + 1 bitars bitsträng. Bit ibetecknas med x [i] och hela bitsträngen kan skrivas som x= x[k1x[k-1]...x[11x[o] =x[k...o1.
Anledningen till att börja med den högsta biten är att vi ofta betraktar bit- strängarna såsom icke-negativa heltal där bitsträngen utgör den binära representa- tionen. Storleken på en bitsträng x betecknas med |x|, dvs för x i det tidigare exemp- let har vi att |x| = k + 1. Vi kan tillfoga bitsträngar genom att helt enkelt placera dem efter varandra - z = xy är den bitsträng som erhålls när man adderar x till y. Det vill säga z [|yj - 1...0] = yoch z [|y| + |x| - 1...|y|] = x. Den sträng som erhålls genom att upprepat tillfoga k kopior av x betecknas med xk, dvs 10 15 20 25 30 521 907 5 x“=xx...x se k gånger Slutligen kommer vi att representera mängder såsom X = {x1, x2,..., xn}.
Storleken på X betecknas med |X| och i detta fall är |X| = n. Dessutom kommer vi att använda de gängse mängdrelationerna, såsom e, c, n, u och g påföljande sätt X1 e X {x1,x2,...,x,,.1} c X X g X {x0,x1, ...,x,,}n{x1,x2,...,x,,+1} = X {x1,x2, ...,x,-}u{X,~+1,x,-+2, ...,x,,} = X. 5.1.2 Vägvalstabeller och vägvalssökning En vägvalstabell är en su/jektiv avbildning från en mängd av /P-adressprefix, eller helt enkelt adressprefix, till en mängd av nästa hopp-index. Vägvalstabeller används för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras, såsom nämnts ovan. Detta åstadkoms genom att finna det längsta matchande prefixet hos destinationsadressen och hämta det associerade nästa hopp-indexet som representerar vad som ska göras med paketet. Processen att utföra längst prefix-matchningen och att hämta nästa hopp-index refereras till som vägvalssökning.
En lPv4-adress är ett tal i populationen U = {o, 1, 232 -1}.
Den representeras av en bitvektor a = a[31]a[30]...a[1]a[0] = a[31...0] som är ekvivalent med den binära representationen av talet. Adressprefix representeras även av bitvektorer. Prefixet med längden 0 betecknas med ersätt- 10 15 20 25 30 521 907 e ningstecknet * och matchar godtycklig adress. Alla andra prefix, med längden k skild från noll, betecknas med p = p[s11p[3o1...p[i] * = p[31...32 _ kr k bitar och matchar alla adresser a som uppfyller a[31...32 - k] = p[31...32 - k].
Adressprefix representerar även delmängder av U som består av områden.
Det vill säga prefixet p[31...32 - k] * representerar området p'°...p”i där den binära representationen av p'° och phi ges av p[s1...32 - /<1oo...o ka 32 - k bitar respektive p[31...32-/<111...1 avi! 32 - k bitar För godtyckligt par av prefix P1 och P2 har vi antingen P1 c P2, P1 = P2 eller P1 3 P2. Det är tämligen okomplicerat att konvertera mängden av prefix till en mängd av n områden R = {R1, Rg, ..., R,,} som utgör en partition av U, där det första, izte, och sista området ges av 10 15 20 25 30 521 907 7 Rfiri/o rini=ri_1nf+1___ nnf, respektive.
Rn = rnlo...rnhi = rn-1hi+1... 232 '1 Dessutom kommer varje område att associeras med ett nästa hopp-index på samma sätt som de ursprungliga prefixen, dvs vi har en surjektiv avbildning från R till mängden av nästa hopp-index. Sålunda kan vi utföra vägvalssökning genom att finna det enda matchande området av en adress a, dvs det R, som uppfyller r,-'° s a s r,-"", i stället för att utföra längst prefix-matchningen. Konverteringen kan utföras enligt följande. Låt R initialt vara tomt och låt den aktuella adressen a vara O. Sätt därefter upprepat in R = /°.../°", där r'° = a och f” är den minsta adressen som är större än eller lika med rsom associeras med samma nästa hopp-index som a, i R och tilldela r'”'+ 1 till a sålänge som a e U.
Vi avslutar detta avsnitt med en sammanfattning av de steg som utförts så långt och en mer formell definition av de problem som återstår att lösa. Låt D = {d1, d2, dm} vara mängden av nästa hopp-index (bokstaven D/d har valts för att repre- sentera sökta data). Låt dessutom nästa hopp-index di representeras av ett llgml bitars icke-negativt heltal arfigml - 11a,{f lgml - 21 ...d,-[11a,{o1. v flgml bitar lnitialt hade vi en mängd av prefix P och en avbildning av P på D. Genom den längst prefix-matchningsoperationen har vi även en avbildning av U på D. Slutli- gen har vi beskrivit en metod för att konvertera P och avbildningen av P på D till en mängd av områden R som utgör en partition av U, och en avbildning av R på D. l själva verket har vi konverterat det ursprungliga längst prefix-matchningsproblem i P till det enklare men ekvivalenta (enda) områdesmatchningsproblemet i R.
Den konvertering som beskrivits kan användas för godtycklig vägvalstabells- representation för att hämta denna områdespartition (och motsvarande nästa hopp- 10 15 20 25 30 521 207 index) som tjänar såsom en intermediär representation av vilken vidarebefordrings- tabellen byggs (se Figur 7 bp2 och bp3). Kärnan enligt föreliggande uppfinning: ø den effektiva vidarebefordringstabellsrepresentation som konstrueras av den intermediära områdespartitionsrepresentationen och o den sökprocedur som används för att hämta nästa hopp-indexet som associeras med endast matchande område från nämnda intermediära representation kan därför användas tillsammans med godtycklig vägvalstabellsimplementering för att accelerera vägvalssökningen. 5.1.3 Beräkningsmodell Det sämsta fallet från kostnadssynpunkt för att utföra en beräkning såsom en vägvalssökning i en tämligen stor datastruktur är huvudsakligen beroende på antalet minnesaccesser som utförs. Vid varje minnesaccess hämtas en cacherad eller ett cacheblock av k konsekutiva byte från huvudminnet. Blocket lagras därefter på alla nivåer av cachehierarkin innan aktuella data hämtas iden snabbaste första nivå- cachen. Eftersom den dominerande kostnaden för en minnesaccess är kopieringen av blocket från huvudminnet räknar vi multipla accesser till samma k byte-block under en kort beräkning såsom en sökning såsom en minnesaccess. 5.1.4 Utformningsparametrar l vår målarkitektur, t ex Intel Pentium 111, består varje cacherad av 32 byte och detta är det värde på k som vi kommer att använda för hela utformningen av algoritmen.
Det uppskattas att storleken på de största vägvalstabellerna kommer att överstiga 200 000 vägar inom några få år. Dagens vägvalstabellsdatastrukturer och -implementeringar med hög kapacitet är därför utformade för att rymma 218 = 262 144 vägar och samma antal nästa hopp-index. Följaktligen behöver vi 18 bitar för att representera ett nästa hopp-index. Den konvertering som beskrivits i de tidi- gare avsnitten konverterar n prefix till som mest 2n + 1 områden. Därför är vår data- struktur utformad för att lagra 2 - 218 + 1 = 524 289 områden. Vårt utformningsmål är att utföra en vägvalssökning vid som mest 4 minnesaccesser. 10 15 20 25 30 521 907 9 5.2 Komprimerad vidarebefordringstabells-representation Den grundläggande principen bakom den komprimerade vidarebefordrings- tabellen är att upprepat reducera storleken på delpopulationerna i upp till fyra steg som motsvarar utformningsparametern på 4 minnesaccesser. I föreliggande uppfin- ning är storleken på varje underproblemsfall (dvs antal områden) med avseende på storleken på delpopulationen noggrant övervakad för att fastställa det bästa tillväga- gångssättet för att representera områdena i denna speciella delpopulation. 5.2.1 Översikt av datastrukturen För att få en bättre förståelse av den grundläggande datastrukturen som används i föreliggande uppfinning och de åtföljande principerna för storleksoptime- ring kommer vi tillsvidare att anta att metoden med upprepad reduktion används exklusivt. lnitialt har vi en mängd av n områden R = {R1, R2,..., Rn} som utgör en parti- tion av den ursprungliga populationen U. Det första steget är att dela U i 216 delpo- pulationer Ug, U1,..., Upon med storleken 216 för var och en. Detta åstadkoms genom att utgå från 216 tomma mängder av 16 bitars-områden Rg, R1,..., R21s-1 och upprepa följande ialla R är iom. Lä: R = r'°...r”' a R oon s = r'° [s1...161. orn H°[31...161= rhfrsinis] ra då bon Rfrän R ooh lägg :lll rf° [1s...o1...r'”' [1s...o1 ull Rs. Lägg annars llll /°[15...o1...(2l6- 1) till Rs och ersätt R med 216 - (s + 1)...r111i R. När proceduren fullbordats är R tom och därefter konverteras de n 32 bitars-områdena till n eller fler 16 bitars-områ- den som fördelas mellan de 216 områdesmängderna. För varje R,- som endast inne- håller ett område, låt Trvara nästa hopp-indexet för detta område. Låt annars T,- vara den datastruktur (som ännu inte beskrivits) som representerar områdena hos R,- och som stöder matchningsoperationen för 16 bitars-område för att söka nästa hopp- indexet. Genom att organisera pekare till To, T1,..., och Tgren i en Static Vector Node, eller pekarvektor, med storleken 216, erhåller vi en datastruktur som stöder fullständig 32 bitars-områdesmatchning. Givet en |Pv4-adress a extraherar vi först de 16 mest 10 15 20 25 521 907 10 signifikanta bitarna a [31...16] och använder dessa för att indexera till vektorn för att hämta Tafgrnßl. Vi söker därefter a [15...0] i Taßruw] med användning av matchnings- operationen för 16 bitars-område som stöds av underdatastrukturen.
Låt |R,~| > 1 och betrakta representationen av T,-. Genom att applicera samma idé såsom ovan indelar vi U,- i 28 delpopulationer U,~,0, U,-,1,..., U,-,2a.1. Detta följs av bearbetning av mängden av områden R,- till R,~,0, R,~,1,..., R,-,2s-1 och representation av dessa genom underdatastrukturer Tixo, Tin. ---. 7-/128-1- Områdesmatchning i T,- åstadkoms genom att använda a [15...8] för att söka T,-_a[15___8] genom direkt indexering i den statiska vektornoden, följt av att söka a [7...0] i Tr,a[1s...s1- Vi applicerar samma idé på 'Fia-elementen genom att indela varje U,-,,'i 24 del- populationer U/upo, Uli/n. Ui.j,24-1- De resulterande områdesmängderna, R,-,,-,,(elementen, representeras av datastrukturer T,-,,-,0, 7',-,,-,1, T,-,,-,24-1. Sökning åstadkoms genom att använda a [7...4] för att indexera till den statiska vektornoden som innehåller pekare till underdata- strukturerna. Resultatet är antingen ett nästa hopp-index eller en vektor av 24 nästa hopp-index som indexeras, med användning av de 4 minst signifikanta bitarna a [3...O] eller lPv4-adressen, för att fullborda sökningen.
Nivå IU I min IR I Storlek Adressbitar Pekarstorlek (bitar) 1 232 oo 216 31...16 32 2 216 2313 28 15...s 20 3 2” 137 24 7...4 20 4 24 12 24 3...o 18 l tabellen ovan ger vi en sammanfattning av de figurer som är relaterade till den upprepade indelningen och användningen av Static Vector Nodes. För en given 10 15 20 521 907 11 nivå är |U| storleken av delpopulationen som representeras vid denna nivå. När utrymmesoptimeringar introduceras kommer vi att använda alternativa och mer utrymmeseffektiva tillvägagångssätt i stället för Static Vector Nodes om antalet områden är mindre än min jRj. Storlekskolumnen visar antalet pekare och adress- bitskolumnen visar vilka bitar av lPv4-adressen som används för att indexera vid varje nivå. Beroende på nivån och justeringsbetingelserna för de olika delstrukturer vi kommer att använda, varierar pekarstorleken, eller antal nödvändiga bitar för att representera en pekare, något mellan nivåerna. Exempelvis behöver vi bara 18 bitar vid den lägsta nivån eftersom vi kan garantera att resultatet av sökningen är ett nästa hopp-index. l vad som följer ger vi en översikt av de olika underdatastrukturerna som vi kommer att använda och i de närmast kommande avsnitten kommer vi att beskriva varje typ av struktur i detalj.
Nivå lR Iminma* Struktur Nöjd Bytejustering 2 2...29 Dynamic Flat Tree 1...3 4 2 3o...2o1 Dynamic Layered Tree* 1...3 s 2 2o1...2312 Dynamic Layered Treez 1...3 32 2 2313...216 Static Vector Node Ej tillgängl. 2048/3 3 2...136 Dynamic Layered Trees 1...2 32 3 137...28 Static Vector Node Ej tillgängl. 128/3 4 2...8 Dynamic Layered Tree3 1 32 9...11 Static Flat Tree 1 32 12...24 Static Vector Node Ej tillgängl. 256/7 Den första kolumnen visar nivån för den aktuella datastrukturen. Nivå 1 är den översta nivån, dvs den statiska vektornoden med 216 pekare. Vid varje nivå kommer vi att fastställa vilken datastruktur som ska användas baserat på antalet områden (se Figur 1). För varje nivå och datastruktur visar vi det områdesdensitets- intervall, i jRjmmmax-kolumnen, för vilket denna datastruktur erbjuder den mest utrym- meseffektiva representationen. I den tredje kolumn visar vi namnet på datastrukturen 10 15 20 25 30 52112907 och den fjärde kolumnen innehåller höjden på datastrukturen mätt i det antal min- nesaccesser som är nödvändigt för att utföra sökningen. Observera att vi använder tre något olika typer av Dynamic Layered Tree. Alla datastrukturer som startar vid nivå 2 är som mest 3 nivåer höga utom för den statiska vektornoden där begreppet höjd inte är direkt tillämpligt. Detta innebär att oavsett vilken av dessa vi använder används inte mer än 3 minnesaccesser för att fullborda sökningen efter den första minnesaccessen vid nivå 1. På samma sätt är de datastrukturer som startar vid nivå 3 som mest två nivåer höga och de som startar vid nivå 4 är som mest 1 nivå höga.
Följaktligen kommer vi aldrig att använda mer än 4 minnesaccesser för en fullständig sökning. I den sista kolumnen visar vi bytejusteringen av de olika strukturerna (för Static Vector Nodes visar vi justering för 3 respektive 7 nodpaket). Justeringen är viktig i den följande diskussionen angående pekarstorlekar och pekarutrymmesut- nyttjande för Static Vector Nodes.
Figur 1 är ett flödesdiagram som illustrerar hierarkin för de olika datadel- strukturerna och de motsvarande sökprocedurerna enligt detta utförande enligt upp- finningen. Nivå 1 ifiguren är en Static Vector Node (SVN) med storleken 216 = 65 536 pekare. Om antalet områden |R| vid nivå 2 inte överstiger 2312 används en av underdatastrukturerna Dynamic Layered Tree1, Dynamic Layered Treez eller Dyna- mic Flat Tree för att representera mängden av områden och de motsvarande sökpro- cedurerna används för att fullborda sökningen. Om sålunda 201 < |R|< 2312 används underdatastrukturrepresentationen Dynamic Layered Treel. Om 29 < |R| < 201 används underdatastrukturen Dynamic Layered Treez, och om 1 < |R|< 29 används den binära underdatastrukturen Dynamic Flat Tree. Om |R|> 2312 vid nivå 2 utförs annars en Static Vector Node SVN-sökning och sökningen fortsätter vid nivå 3. Om antalet områden |R| vid nivå 3 inte överstiger 136 används underdatastrukturrepre- sentationen Dynamic Layered Tree3. Annars utförs för 136 < |R|< 28 (= 256) en SVN- sökning och sökningen fortsätter vid nivå 4. Om antalet områden |R| inte överstiger 11 används slutligen vid nivå 4 en av underdatastrukturerna Dynamic Layered Tree3 eller Static Flat Tree för att fullborda sökproceduren. Om sålunda 8 < |R|< 11 används den binära underdatastrukturen Dynamic Layered Treea, och om 1 < |R|< 8 används underdatastrukturen Static Flat Tree. Annars används för 11 < |R|< 16 en SVN för att fullborda sökningen och för att erhålla det önskade innehållna nästa hopp-indexet. 10 15 20 25 30 521 907 13 5.2.2 Static Vector Nodes Nivå 1 eller den översta nivåns datastruktur består av en rotnod med 216 möjliga delträd. De 16 mest signifikanta bitarna av lPv4-adressen används för att indexera till den vektor som representerar rotnoden för att extrahera ett 32 bitars icke-negativt heltal som antingen kodar ett index till nästa hopp-tabellen eller en pekare till en underdatastruktur såsom visas i tabellen ovan. Såsom nämnts ovan kommer vi att använda olika typer av delträd beroende på antalet områdesgränser som ligger i delpopulationen, dvs densiteten hos delpopulationen. Kodningen av nästa hopp-index och delträdspekare beskrivs i Figur 2, vilken visar det nästa hopp- index och den delträdstyp och det pekarkodningsschema som används i Static Vector Nodes för nivå 1.
Observera att för densiteter i området 2...201 måste vi koda storleken på delträdet exakt för att rymma kvantiseringsreduktionsutrymmesoptimeringar. Sådana optimeringar är inte nödvändiga när densiteten överstiger 201 (kodad såsom 202).
Vid nivå 2 och 3 kommer vi att använda 20 bitars-pekare i Static Vector Nodes. Vi reserverar de två mest signifikanta bitarna för att koda pekartypen. De återstående bitarna är tillräckligt för att koda 18 bitars nästa hopp-index såväl som 18 bitars-pekare som refererar till Dynamic Layered Tree, Static Flat Tree eller Static Vector Nodes. Dessa datastrukturer är 32 byte-justerade. Detta innebär att 18 bitar är tillräckligt för att adressera en minnesarea av 218 - 32 = 8 388 608 byte.
Den 20 bitars-pekare som används vid nivå 2 är inte så lättjusterad. Eftersom det enda kravet på en vektornod är att det är möjligt att indexera bland pekarna och hämta en pekare ien minnesaccess, är vi emellertid i stånd att använda vissa tricks för att uppnå en utrymmeseffektiv representation. I en cacherad kan vi inpassa [256/20] = 12 hela 20 bitars-pekare. Genom att använda 21 + 1/3 cacherader kan vi lagra (21 + 1/3) - 12 = 256 pekare för att representera en Static Vector Node vid nivå 2 (se Figur 1). För att förbättra justeringsbetingelserna packar vi nivå 2-noder till- sammans i grupper om tre. Varje paket kräver (21 + 1/3) - 3 - 32 = 2048 konsekutiva byte för lagring som resulterar i en bytejustering av 2048/3 (2048 byte-block per paket för 3 noder).
Vi kan använda samma tillvägagångssätt för att representera nivå 3-noderna.
Genom att använda 1 + 1/3 cacherader kan vi lagra (1 + 1/3) - 12 = 16 pekare för att representera en Static Vector Node vid nivå 3 såsom framgår av Figur 1. Justeringen förbättras på samma sätt såsom ovan, åter genom att packa noderna tillsammans i 10 15 20 25 30 «521 9o7 M grupper om 3. Vid denna nivå kräver varje paket (1 + 1/3) - 3 - 32 = 128 byte som resulterar i en bytejustering av 128/3.
Vid den lägsta nivån, dvs nivå 4, måste pekarna i Static Vector Nodes repre- sentera nästa hopp-index. Därför behöver vi bara 18 bitars-pekare vid denna nivå. l en cacherad kan vi inpassa [256/18] = 14 hela 18 bitars-pekare. Genom att använda 1 + 1/7 cacherader kan vi representera (1 + 1/7) - 14 = 16 pekare som är nödvändiga för en fullständig nivå 4-nod. Vi packar noderna tillsammans l grupper om 7 för att uppnå bättrejustering. Varje paket upptar en minnesarea av (1 + 1/7) - 7 - 32 = 256 byte, vilket resulterar i en bytejustering av 256/7. 5.2.3 Dynamic Flat Tree Låt R = {R1, R2, R,.} vara mängden av områden och d1, d2, dn vara de associerade nästa hopp-index som utgör det aktuella underproblemet (2 s n < 29).
Låt dessutom r1, rg, r,,_1 vara den sorterade lista av områdesgränser som erhålls genom att ta /°-e|ementet från varje område i R. Genom denna konstruktion har vi att d1 associeras med 0..r1, d; associeras med r1 + 1..r2, och så vidare tills slutligen dn associeras med rm + 1..oo. Beakta åter att varje d,- är ett 18 bitars icke-negativt heltal och låt h,- och l,- vara de 2 mest signifikanta bitarna av d,- respektive de 16 minst signi- fikanta bitarna av d,-. Låt dessutom H = hihzuhnok, där k är det minsta antal nollor som behöver tillfogas för att få IH I E o(mod1s).
Efter att ha packat de höga 2 bitarna av nästa hopp-indexet och fyllt ut H med nollor består informationen vi behöver representera av n-l+n+ííl=2n-l+íí_\ 8 8 1521 907 ;:f1"f“í*“ä 15 l ~~ i 16 bitars-block. För att förbättra justeringsbetingelserna vill vi använda ett jämnt antal 16 bitars-block. Därför lägger vi till ett tomt block om 2n - 1 + ln/8l är udda. Vi får då totalt 2n-1+|Vg_\ 2. ___:_ 5 141607) = 2 16 bitars-block.
Låt B1, Bg, BUN» beteckna informationsblocken och S1, S2,..., Suwm, beteckna de minnesslot som kommer att innehålla informationsblocken. För n = 16 10 har vi 2-16-l+[1~8§_u 2. *àí ul6(16)= 2 =34 15 =16+16+2.
Eftersom 32 block motsvarar exakt 2 cacherader och 16 bitars-block är packade i par kan dessa 34 block inte fördelas över mer än 3 cacherader. Därav föl- jer att sökkostnaden är begränsad till 3 minnesaccesser oavsett hur vi lagrar infor- 20 mationsblocken i minnesslotten. Därför lagrar vi alltid B1 i S1, B; i S2,..., och BUN) i SU16(n) n S Förn = 17 har vi z-lv-llfífli .ii ui6(17)=2' 2 25 10 15 20 25 30 521 %o7 =36 =2+16+16+2.
Om vi inte är uppmärksamma på lagringen av informationsblock i minnes- slotten och positionen för minnesslotten med avseende på cacheradsgränser kan informationen fördelas över 4 cacherader som resulterar i en sökkostnad av 4 min- nesaccesser.
Låt S, vara det första minnesslottet som är placerat i början av en cacherad.
För n z 17 lagrar vi B1 i 8,. 82 i 8,41, Bg i 8,42, Bu16(,,)_(i-1) i Summ), Bu16(,,,-(.-2, i S1, Buæw)- (tg) i S2, och 81,160» i S,-.1.
Den faktiska informationen lagras slutligen i informationsblocken enligt föl- jande: o H lagras i B1...Br,,/81 o r1...r,,-1 lagras i Brn/81+1...Br,,/81+n-1 o l1...l,, lagras i Brn;81+,,...Br,,,81+2n_1 Genom att hämta den första cacheraden som innehåller B1...B16 kan vi extrahera de 2 mest signifikanta bitarna av det resulterande nästa hopp-indexet och även söka bland vid de första områdesgränserna. Vid den andra minnesaccessen fullbordar vi sökningen bland områdesgränserna i 811.832. Den tredje minnesac- cessen används för att extrahera de 16 minst signifikanta bitarna av det resulterande nästa hopp-indexet.
I Figur 3 visar vi ett exempel på uppställningen av informationen med avse- ende på cacheradsgränser. Figuren illustrerar en Dynamic Flat Tree-underdata- struktur som innehåller 25 områden. Observera att de sista 16 minst signifikanta bitarna av de sista tre nästa hopp-indexen 123, 124 och /25 lagras i slutet av den första cacheraden. Sökningen kommer att starta genom att hämta den andra cacheraden som används. 5.2.4 Dynamic Layered Tree Dynamic Layered Tree består av två byggblock, löv och noder. Löv består av upp till 8 nästa hopp-index och upp till 7 områdesgränser som är packade i en cache- 10 15 20 25 30 521 907 17 rad och noder består av upp till 16 områdesgränser som är packade i en cacherad.
Figur 4 illustrerar Dynamic Layered Tree-lövet och kodningen av områdesgränser och nästa hopp-index i den övre delen av figuren, och den motsvarande noden som endast innehåller områdesgränser i den undre delen av figuren.
Låt r1, r2,..., r,,-1 vara en sorterad lista av områdesgränser och d1, d2,..., d" vara den motsvarande listan av nästa hopp-index. Såsom ovan associeras d,- med O..r1, d2 associeras med r1 + 1..r2, och så vidare tills slutligen d,, associeras med r,,-1 + 1..<>0.
För n = 8 konstruerar vi ett träd helt enkelt genom att lagra områdesgrän- serna och nästa hopp-indexen i ett löv såsom visas i Figur 4.
För n = 136 = 17 - 8 består trädet av 17 löv, varvid vart och ett representerar 8 områden och 1 nod representerar 16 områdesgränser. Det första lövet innehåller r1,r2, ry och d1, d2,..., da, det andra lövet innehåller r9,r10,...,r15 och dg, d10,..., d16, och så vidare tills det sista lövet som innehåller r129, r130,..., r135 och dm, d130,..., dm.
Det vill säga det izte lövet innehåller fair-nn, fa-(i-1)+2,---.fe»(i-1)+7 och ds-(i- 1)+1, ds-(f-1)+2,---.ds1(i-1)+s.
Noden innehåller rg, r16,..., r8,~,..., rm. Genom att söka noden vid 1 minnes- access kan vi fastställa i vilket löv sökningen ska fullbordas. Vi kan upprepa denna procedur för att hantera godtyckligt stora mängder av områden och nästa hopp- index. För varje nivå som läggs till ökar antalet områden som kan hanteras med en faktor 17. Följaktligen kan vi genom att använda t nivåer hantera 8 ,fört=1 DL T_num(t) = 17-DL T_num(t-1) , annars 10 15 20 25 30 i 521 90718 För t = 1, 2, 3 får vi storlekarna 8, 136 och 2312 för fullständiga träd med höjden 1, 2 respektive 3 träd. När n 2 202 kan vi tillåta oss att använda delvis fyllda cacherader på alla nivåer samtidigt. I vissa fall kommer vi emellertid att lagra ett löv direkt under en nivå 3-nod. Vid ankomsten till det lövet behöver vi ett sätt för att säga om det är en nod eller ett löv. Detta àstadkoms genom att lagra de första två områ- desgränserna i sjunkande ordning i ett löv (men inte i en nod), minnesväxla dem före sökning och minnesväxla dem tillbaka efter att sökningen fullbordats. Den extra kost- naden för denna kodning är försumbar. Storleken på ett fullständigt träd med t nivåer, mätt i antal cacherader, ges av 1 , för t = 1 DLT__size(t) = 1 + 17-DLT_size(t-1) , annars För n s 201 blir kostnaden för ofullständiga träd som resulterar i delvis fyllda cacherader alltför höga med avseende på antalet områden som hanteras. Når exem- pelvis n är i intervallet 137...201 används endast en enda 16 bitars-områdesgräns i nivå 3-noden. För att reducera kvantiseringseffekter kommer vi att försöka att lagra delvis fyllda noder och löv så kompakt som möjligt utan att introducera extra minnes- accesser för sökningen. Låt k = _”_ 2 11361 n2 =nmod 136 k» -lfål n1= ng mod 8 För 30 s n 5 201 är kg antalet fullständiga nivå 2-träd och m2 är antalet åter- stående områden efter att ha lagrat så många som möjligt i fullständiga nivå 2-träd.
På liknande sätt är k1 antalet fullständiga nivå 1-träd och m, är antalet områden som återstår efter att ha lagrat så många som möjligt i fullständigs nivå 2- och nivå 1-träd.
Om n > 136 behöver vi en partiell nivå 3-nod som består av exakt en områdesgräns.
Dessutom behöver vi en partiell nivå 2-nod om n :f 136 och slutligen behöver vi ett 521 90719 :gjjftïi i partiellt nivå 1-löv om n1 i O. Det antal områdesgränser som vi behöver lagra i den partiella nivå 2-noden är lika med k1 - 1 om n1 = O och k1 annars. Genom att ta lag- ring av höga 2-bitar av nästa hopp-index, områdesgränser och låga 16-bitar av nästa hopp-index med i beräkningen, blir antalet 16 bitars-block som krävs för att lagra de 5 partiella löven u1(n) =1+n1 + (n1-1) = 2/71 = 2-(n2 mod 8) 10 = 2-((n mod 136)mod 8) Det totala antalet 16 bitars-block som krävs för att lagra de partiella noderna och det partiella lövet ges då av 15 u(n) = u1(n) + u2(n) + u3(n), där u1 (n) definieras såsom ovan, k1-1 , om n1 = 0 2Û U2(I'7) k1 , annars VÉJ-l, om ng mod 8 =0 _ nz , afïnafS 8 25 10 15 20 25 30 (521 907 20 f )@°š1_13i6-J-1,0m(n mod iaenmod s = o, = annars 8 I och k 0 ,om ns136 u3(n) = 1 , annars Vi kallar det partiella lövet och de partiella noderna för trädets huvud och det återstående fullständiga nivå 2-trädet och nivå 1 noder för trädets svans. Svansen består av 32 byte-block och lagras i en minnesarea som är avsedd för 32 byte-juste- rade strukturer. Huvudet å andra sidan består av tillräckligt många 8 byte-block för att lagra de u (n) 16 bitars-blocken och en 32-bitars pekare till svansen. Såsom visas i Figur 6, vilken visar ett huvud med u1 (n) = 12, u; (n) = 4, och u3 (n) = 1, lagras svanspekaren i det första 8 byte-blocket tillsammans med nivå 3-noden (L3). Efter- . som varje 8 byte-block innehålls fullständigt i en cacherad, krävs som mest 1 min- nesaccess för att söka huvudet vid nivå 3, vilket lämnar två minnesaccesser för att efter behov fullborda sökningen vid nivå 2 i svansen. Det största värdet av u2 (n) är 16 (fullständig nivå 2-nod). Detta innebär att nivå 2-noden som lagras i huvudet inte kan fördelas över mer än 2 cacherader. Den första delen av noden kommer att lagras i samma 8 byte-block (och därför även samma cacherad) som svanspekaren, vilket innebär att hänsyn redan har tagits till den första minnesaccessen. l den andra min- nesaccessen är vi garanterade att fullborda nivå 2-sökningen i huvudet, vilket lämnar den tredje och sista minnesaccessen för att fullborda sökningen i ett löv som lagrats i antingen huvudet eller svansen.
Vid nivå 3 och 4 kan områdesdelmängder från samma delpopulation U,~ (för- sta partitioneringssteget) dela Dynamic Layered Tree så länge som antalet minnes- accesser för att fullborda sökningarna inte överstiger 2 respektive 1. Betrakta exem- pelvis de tre områdesmängderna R,-,,-1, R,-,,-2, och R,-,,~3,k där j1 < j; < j3, |R,-,,-1| = 87, |R,-,,-2| = 44, och lR/vfskl = 5. Dessa kan representeras med användning av en fullständig nivå 10 15 20 25 30 521 907 2-DLT efterslom det totala antalet områden är 87 + 44 + 5 = 136 och valet av j1, jg, och ja garanterar att representationen av R,-,,-3_k inte grenslar en cacheradsgräns. De pekare som refererar till delstrukturerna som representerar R,~,,~, och R,-,,-2 kommer att referera till det fullständiga nivå 2-trädet och pekaren som refererar till den delstruktur som representerar Riv-st kommer att referera till lövet hos det fullständiga 2-träd som innehåller R,-,,-3,k. 5.2.5 Static Flat Tree Ett Static Flat Tree används vid nivå 4 för att representera en sorterad lista av 4 bitars-områdesgränser n, r2,..., r,,_1 och den motsvarande listan av nästa hopp- index d1, d2..., d,,. Den används bara när n är lika med 9, 10 eller 11. Såsom ovan associeras d1 med O..r1, d; associeras med r1 + 1..r2, och så vidare tills slutligen dn associeras med r,,-1 + 1.00. Datastrukturen och sökningsmetoden är huvudsakligen desamma som ett Dynamic Layered Tree-löv, men med en skillnad. I stället för att lagra 7 16 bitars-områdesgränser och 8 nästa hopp-index lagrar vi 10 4 bitars-områ- desgränser och 11 nästa hopp-index (vi fyller trädet upp till 11 områden även om vi har 9). Det totala antalet nödvändiga bitarför detta är 10 - 4 + 11 -18 = 238. Figur 6 illustrerar ett Static Flat Tree som innehåller 11 områden med 8 oanvända bitar i R- arean och 10 i H-arean. 5.3 Komprimerad vidarebefordringstabells-sökning Fram till denna punkt har vi beskrivit hur man konverterar prefixmatchnings- problemet till ett områdesmatchningsproblem. Vi har även beskrivit alla de delar som krävs för att åstadkomma en utrymmeseffektiv representation av mängden av områ- den - en representation i vilken vi kan utföra områdesmatchningsoperationen vid fyra minnesaccesser, och därigenom åstadkomma en effektiv vidarebefordringstabellsre- presentation.
I detta avsnitt beskriver vi sökprocedurerna i närmare detalj. 5.3.1 Huvudsökprocedur Huvudsökningens funktion representeras av Static Vector Node-sökningen SVN_lookup. Den accepterar två parametrar, |Pv4-adressen a och en pekare till datastrukturen T. Initialt refererar Ttill nivås 1 SVN som innehåller T0,..., Tgim (se 10 15 ~ 521 907 22 Figur 1). Vektorelementen är alla 32-bitars icke-negativa heltal så att indexera och hämta undernivåpekaren är okomplicerat. På rad 1...12 utförs den första nivåsök- ningen. Beroende på resultatet av kodningen av pekarvärdet, antingen fullbordas sökningen (rad 3) eller fortsätter genom att anropa en specialanpassad sökprocedur (rad 6, 8 eller 10). Om ingen av dessa är tillämpliga fortsätter sökningen med nästa nivås SVN (rad 13).
SVNJookup (T, a) T *~ Tujanniß] ifT[3l...24] :Othen return T[23. . .0] elsifT[31 . . .2-1] % 1 then irT[s1...2415 29 men retum DFTJookup (T É_23 . . ,T eisifrjm ...241 5 201 men return DLTJook-upï (T [23. . .Oj ,T[31 . _ . 24] , a [15 . . else mmm nLïzzookupflTjzs. . .oj ,a{1s...o]) end [a1...24j,aj15...oj) end T +- T[23. . .0] T *- Tausms] ifTIIQ. .. 8] :Othen return T[17 . . .U] elsifT [19 . . . 18j 96 1 then nun-n nLTivokupß (T [17 . . . o] .a [15 . _ .ojj end mrov-øp-r-u-r-flrflr-flv-flv-flv-w hHOGIW-QOELWßCnIKQBGEDOONCSCFnKBG-“Nfifl T ._- T [17 . . .oj T '- Taj-kaj afT|19 . _ . 18] = 0 men 22 rveturnT[17. ..0] 23 elsifT [19 _ . _18] yë 1 then 24 ifT[19...18]=2then 25 return DLTJookup3 (T (17. . . 0] ,a [15 . . . Oj) 26 else 27 return SFTJookup(T[17...0],a[15...O]) 28 end 29 end 30 Te-T[17...Û] 31 rffllfn T@js...o| 32 Den andra nivåns SVN-sökning startar på rad 14 genom att indexera till den vektor som representeras av Tsom innehåller pekare T0,..., T2a-1. Nivå 2-noder packas i grupper om tre. De 16 mest signifikanta bitarna av pekaren används för att adressera gruppen och de 2 minst signifikanta bitarna används för att lokalisera noden inom gruppen. Inom gruppen tillhör de första fyra pekarna i varje cacherad den första noden, nästa fyra pekare i varje cacherad tillhör den andra noden, och de sista fyra pekarna inom varje cacherad tillhör den tredje noden. De höga bitarna från adressen a[15...10] används för att lokalisera cacheraden, de 2 minst signifikanta bitarna från nodpekaren används för att lokalisera gruppen av fyra pekare inom 10 15 20 25 30 521 907 23 cacheraden, och de låga bitarna från adressen a[9 ...8] används för att indexera inom gruppen av pekare. Beroende på resultatet av kodningen av den hämtade pekaren, antingen avslutas sökningen (rad 16), fortsätter genom att anropa special- proceduren (rad 18) eller fortsätter med den nästa SVN-nivån (rad 20).
Vid inträdet i den tredje nivån av sökningen refererar Ttill en vektor som innehåller pekare T0,..., T24-1. Även nivå 3-noder packas i grupper om tre och pekarna översätts på samma sätt som vid nivå 2 för att hämta positionen för gruppen och noden inom gruppen. Indexeringen är huvudsakligen densamma. Vi använder de höga bitarna från adressen a[7...6] för att lokalisera cacheraden, och de 2 minst sig- nifikanta bitarna från nodpekaren för att lokalisera gruppen av fyra pekare inom cacheraden, och de låga bitarna från adressen a [5...4] används för att indexera inom gruppen av pekare. Efter att pekaren avkodats vet vi huruvida sökningen avslutats (rad 23) eller huruvida sökningen ska fortsätta i en specialanpassad procedur (rad 26 eller 28). Annars fortsätter sökningen vid den nästa och slutliga nivån - nivå 4.
Vid nivå 4 refererar Ttill en vektor som innehåller nästa hoppen T0,..., TZM.
Noderna packas tillsammans i grupper om 7. Därför används de 15 mest signifikanta bitarna av nodpekaren för att lokalisera gruppen och de 3 minst signifikanta bitarna används för att lokalisera noden inom gruppen. Vi använder samma typ av organisa- tion inom varje cacherad såsom ovan. Det vill säga de första två (i stället för fyra) pekarna tillhör den första gruppen, nästa två pekare tillhör den andra gruppen och så vidare tills de sista två pekarna som tillhör den sjunde gruppen. Följaktligen måste vi använda de höga adressbitarna a [3...1] för att lokalisera cacheraden, de lägsta tre pekarbitarna för att lokalisera gruppen av två nästa hopp-index inom cacheraden, och den lägsta adressbiten a [0] för att indexera inom gruppen för att hämta nästa hopp-indexet. 5.3.2 Indexsökning Nyckeloperationen i alla specialanpassade sökprocedurer (utom SVN_lookup) är en effektiv binär sökning som används för att beräkna index till vek- torer av nästa hopp-index. Givet en vektor med områdesgränser r0,..., r,,-1, som är sorterad i stigande ordning, och en adress a beräknar vi det minsta index i som upp- fyller a s r,-. Om inget sådant r,- finns är resultatet n. Genom hela proceduren utnyttjar vi i hög grad pekararitmetik, kombinerad med tolkning av booleska värden som numeriska värden, för att uppnå en procedur med ett minimum av villkorliga grenar. 10 15 20 25 i 521 907 24 Det vill säga för en pekare r som representerar adressen till det första elementet av vektorn kan vi skriva r,- som (r + DO. Dessutom kommer de booleska värdena falskt och sant att användas som 0 respektive 1 i beräkningar. inzßcarcfc (r, n, a) b +- r k a- Ugn] m <- r e~ -r + (n - m) - (1',,,_1 < a) while k, > 0 do k +- k - 1 rf-r-l-(rzr. end return (r - b) + (ro < lC®~1G5UIJA§âbJ>^ På raderna 1 till 3 registrerar vi adressen för det första elementet i b, beräk- nar golvet av bas 2-logaritmen av n och tilldelar det till k, och beräknar 2 upphöjt till k och tilldelar värdet till m. ldén är att snabbt fastställa om sökningen ska utföras bland de m första områdesgränserna eller bland de m sista områdesgränserna. När detta görs kan vi upprepat jämföra mittelementet och klippa en vektor med storleken 2* i halvor (minska k i varje steg) tills bara ett element återstår. Själva beslutet och eventuell modifiering av rutförs på rad 3. Om rm z a är det numeriska värdet av (rm-1 < a) 0 och rtilldelas sig själv (ingen modifiering). Annars flyttas startadressen av rn - m steg framåt. I vilket fall som helst utförs den återstående sökningen bland m = 2* element.
Frågenyckeln a jämförs upprepat med mittelementet och rmodifieras för att reflektera resultatet av jämförelserna tills endast ett element återstår (raderna 5...8).
Slutligen beräknas skillnaden mellan positionen för det första elementet i den ursprungliga vektorn och det element som återstår och efter att ha adderat resultatet av jämförelsen med det sista elementet returneras resultatet (rad 9). 5.3.3 Dynamic Flat Tree-sökning Dynamic Flat Tree-strukturen lagras i en vektor av 16 bitars-minnesslot T1, T2,..., fin/ßpzmr Den faktiska organisationen av trädet beror på storleken och positio- nen Tav det första minnesslottet med avseende på cacheradsgränser. Om n s 16 eller det första minnesslottet är placerat vid början av en cacherad organiseras trädet enligt följande: H = h1,..., h,, lagras i Tynrn/ßj, r1,..., r,,.1 lagras i Trn,81.1___r,,,3j+,,_1, och 10 15 20 25 521 907 ü l1,...,l,, lagras i 7j,,,81+,,_>_r,,,81+2,,-1. Proceduren startar genom att beräkna cacherads- gränsens förskjutning q (rad 1). Beroende på värdet på n och q (q = O innebär att det första minnesslottet är placerat vid början av en cacherad) är sökningen antingen fullbordad på rad 3 och 4 eller fortsätter med de mer komplexa fallen på rad 6. På rad 3 beräknas indexet (0...n - 1) av nästa hopp-indexet med användning av ix_search, och på rad 4 ställs det resulterande nästa hopp-indexet samman (och returneras) genom att foga hm = Tjf/gj [i mod 8...(i mod 8) + 1] till l,»,1 = Fri/sync; DI-“TJookup(T, n, a) q i- (16 - (Tmod 16)) mod 16 1 il'(n5l6)V(q=0)then 2 i i-ianshcarzrrfi KTH-HH., ...IiT[%1+n;> 41) i return Thí (1111od8...(uno 8) + 1] [ghflh- 5 end :Ii- ínsearclllz (<'Tq+[R-i+1. . . . ,Tq+[g-|_j_n_l> m) (Gi ' -¿< n. - qi en returnTuj {i1nod8...(ímod8)+1]Tk-,H+fl+¿ ä end retum T! å' [i mod8 . _ . (imod 8) + 1]T,-_H,_,,,+1 9 l de mer komplexa fallen (n > 16 och q i O) organiseras trädet enligt följande: H = h1,..., h,, lagras in Tq+1...q+lnia1, r1,..., r,,-1 lagras i Tq+rn/a1+1__iq+rn/51+n-1, I1,...,l,,_q lagras l Tq+in/a1+n...2n-1+r,,/ßj, och /,,.q+1,...,l,, lagras i Timq. Beräkning av indexet (rad 6) är huvud- sakligen densamma såsom ovan utom med avseende på cacheradsgränsens för- skjutning. Om de låga 16 bitarna från det resulterande nästa hopp-indexet placeras vid änden av den upptagna minnesarean (i < n -q), är hämtningen och sammanställ- ningen av bitarna okomplicerad (rad 7). Annars placeras de låga 16 bitarna från det resulterande nästa hopp-indexet vid början av minnesarean. Hämtning och samman- ställning utförs slutligen på rad 9. 5.3.4 Dynamic Layered Tree-sökning Vi särskiljer mellan två huvudtyper av Dynamic Layered Tree-sökning. Den okomplicerade versionen DLT_lookup2'3 (två undertyper inom denna huvudtyp) används antingen när trädet är fullständig eller när storleken är tillräckligt stor för att tillåta oss att bortse från kvantiseringseffekter. När träden är små är det nödvändigt att ta hänsyn till kvantiseringseffekter. Såsom beskrivs i Avsnitt 4 kräver detta en mer komplex representation och behov av en motsvarande sökprocedur - DLT_lookup'. 10 15 20 521 907 26 DLT_lookup1-proceduren accepterar tre argument: T, n, och a, där T repre- senterar huvudet av trädstrukturen som lagrats i en vektor av 16 bitars-minnesslot T1, T2,.., och n och a är storleken respektive frågeadressen (minst signifikanta 16 bitar av den ursprungliga adressen). På rad 1 extraherar vi pekaren till trädets svans och tilldelar värdet till tför senare användning. Eftersom startpunkten av svansen är 32 byte-justerad är tfaktiskt ett index till cacherad. Detta följs genom att initiera en för- skjutningsvariabel o till 0 (rad 2). Om [n/136] > 1 såsom testas på rad 3 innehåller huvudet en partiell nivå 3 (L3) -nod. Eftersom n s 201 < 2 - 136 vet vi att den partiella L3-noden innehåller exakt en områdesgräns som lagrats i Tg. Om a s T3 anropas den okomplicerade sökproceduren på rad 5 för att avsluta sökningen i det fullständiga L2- delträd som lagrats i början av svansen och refereras till genom t. Annars överhop- pas det fullständiga L2-trädet genom att addera dess storlek till t(rad 7) och förskjut- ningen o ökas med storleken (dvs 1) av den partiella L3-noden (rad 8). På rad 10 beräknas storleken n; (antal områdesgränser) av den partiella L2-noden, följt av indexsökningen (rad 11).
DLTJOokrLpI (T, n, a) return DLTlookupz-s (t + i._1. a) end m 4- (n mod 136) mod 8 i ""” 1ï5-å3aTd1-( return T2+°+,,,_,+2..,¿ [i mod 8. . . (i mod 8) + 1] Tg+o+m+fllj4 C *- T1...2 1 o «- 0 2 ir (fä) >1men 3 ifa 5 T; then 4 return DLT_look-u.p2-3 (t, 2, a) 5 end 5 t +- t + 1 + 17 7 0 o- 0 + 1 8 end 9 112 <- - 1 10 1'- +- íaza-:earch ((T2+,+1. . . . ,T2+,,+,,,) mg, a) 11 ifi < n; then 12 13 d 14 15 16 17 Om i< ng fortsätter sökningen genom att söka i det (i + 1):te fullständiga L1- trädet som lagrats i svansen vid t+ i (rad 13). Annars fullbordas sökningen genom att söka det partiella L1-trädet (lövet) som lagrats i huvudet. Detta åstadkoms enligt föl- jande. Först beräknas storleken m av det partiella L1-trädet (rad 15). Områdesgrän- serna r1,..., fw lagras i T2+0+n2+1,..., T1+0+,,.2.,,,,, de låga bitarna av nästa hopp-indexet l1,..., ln, lagras i T1+0+n2+,,,+1,..., T1+°+n2+2nv och de höga bitarna av nästa hopp-indexet 10 15 20 25 i 521 907 h1,..., hk1 lagras i T2+0+n2+2,,,. Det återstår att utföra indexsökningen (rad 16) och extrahera och sammanställa nästa hopp-indexet (rad 17).
Den okomplicerade sökningen DLT_lookup2*3 (nedan) är något enklare. Den accepterar tre argument: Tsom refererar till en vektor av 16 bitars-minnesslot T1,..., T16, nivån t, och frågenyckeln a. Oberoende av värdet på tkan trädet som refereras till av Tantingen vara en nod eller ett löv. Icke desto mindre finns det 7 områdes- gränser r1,..., ry som lagrats i T1,..., Ty. En nod den innehåller 16 områdesgränser r1,..., mf,- som lagrats i T1,..., T16. De första två områdesgränserna hos en nod lagras i sorterad ordning. Detta testas på rad 1 vilket följs av genomförande av en indexsök- ning. Därefter, anropas DLT_lookup2'3 rekursivt för att söka nästa nivås delträd som lagrats vid T+ 1 + i - DLT_size (t) (se rad 2...3 och definitionen av DLT_size i Avsnitt 4).
DLTJooIc1r;r2'3(T, t, a) if T1 < Tg then i f- i:c_.~:ea'rcfr ((T1, . . . _.T15) ,16_.a) return DLTlookupg-a (T + 1 + “i - DLT_size ,t - 1. a.) end O: -F-Cèwv-l i +- ím-Jcarch (T,,T1.T3.. .,T,),1,«.
SS; T; and T; an: mappa! return Tm [i mod 8 . . . (i mod 8) + 11Tg+,- Ett löv det organiseras enligt följande: områdesgränserna r1,..., r; lagras i T1,..., Ty, låga bitar från nästa hopp-index l1,..., /8 lagras i T8,..., T15, och de höga bitarna från nästa hopp-index h1,..., hg lagras i T16. Sökning av lövet åstadkoms enkelt genom att först minnesväxla de två första områdesgränserna, utföra en index- sökning för att beräkna i och därefter minnesväxla tillbaka de första två områdes- gränserna (rad 5). Det sista steget är att sammanställa bitarna från nästa hopp- indexet och returnera resultatet. 5.3.5 Static Flat Tree-sökning Ett Static Flat Tree (SFT) är mycket likartad ett Dynamic Layered Tree-löv.
Den första skillnaden är att storleken på områdesgränserna är 4 bitar i SFT jämfört med 16 i DLT. Detta fordrar en speciell version ix_search4 för att söka 4 bitars-områ- desgränserna. Den andra skillnaden är antalet områdesgränser som är 10 i SFT 10 15 20 25 30 521 907 28 jämfört med 7 i DLT. Trädet består av en vektor av 16 bitars-minnesslot T1,..., T16 som organiseras enligt följande: 4 bitars-områdesgränser r1,..., rm lagras i T1...3, de låga 16 bitarna av nästa hopp-indexet l1,..., /11 lagras i T4,..., TM, och de höga 2 bitarna av nästa hopp-indexet lagras i T15...T16.
SFTlookup(T, n, a) i«-iz_search4((T1[3...0],...,¶É;[7...4]),1O,a) 1 return TI å I [i1norí8. . . (i mod 8) + 1] TW 2 Liksom i DLT-löv åstadkoms sökning genom att utföra en indexsökning (rad 1). Den fullständiga vektorn av 4 bitars-områdesgränser ges av r2[7...41,T2[11...sinne..12],T3[s...o1, r3[7...41.
Detta följs av att hämta och sammanställa nästa hopp-indexet och returnera resultatet (rad 2). 5.4 Routersystemarkitektur Figur 7 är ett schematiskt blockdiagram av en routersystemarkitektur som valts såsom ett exempel. Det finns tre autonoma processer: Vägvalsprocessen, Kon- struktörsprocessen och Vidarebefordringprocessen, och tre datastrukturer: Vägvals- tabellen, Vidarebefordringstabellen och Nästa hopp-tabellen.
Alla datagram som kommer in i och lämnar systemet hanteras av Vidarebe- fordrlngprocessen. Den grundläggande funktionen är att motta ett paket (fp 1), söka nästa hopp-indexet i vidarebefordringstabellen med användning av SVN__lookup (T, a) där T är vidarebefordringstabellen och a är destinationsadressen (fp2), hämta nästa hopp-informationen från nästa hopp-tabellen (fp3), och vidarebefordra paketet enligt nästa hopp-informationen (fp4).
Vägvalsprocessen, eller Routing Protocol Daemon, är en process som kom- municerar med andra system i routerns omgivning med användning av ett vägvals- protokoll för att få reda på förändringar i nätverkstopologi och för att uppdatera väg- valstabellen för att rymma sådana förändringar. Ett exempel på en vägvalsprocess, eller mer exakt en dataprogramsprodukt som definierar vägvalsprocessen, är Gate 10 15 20 25 30 521 907 29 Daemon (gateD) som kan skaffas från www . gated. org. Olika vägvalsprotokoll arbetar på olika sätt och använder olika optšmeringskriterier för att bestämma vilken som är den mest effektiva vägen genom nätverket och därigenom bestämma vilka uppdateringar som ska utföras i vägvaltabellen. Den grundläggande funktionen hos alla routerprocesser är emellertid att detektera eller få reda på nätverkstopologiför- ändringar genom att kommunicera enligt vägvalsprotokollet (rpl), uppdatera väg- valstabellen för att rymma dessa förändringar (rp2), och informera grannarna (väg- valsprocesserna) om topologiförändringar (rp3).
I motsatts till den dynamiska vägvalstabellen är den halvstatiska vidarebe- fordringstabellen inte utformad att bli direkt manipulerad genom vägvalsprocessen.
Dynamisk och statisk refererar här till beräkningskomplexiteten för att utföra tabelluppdateringar - dynamisk betyder lätt och statisk betyder att den fullständiga tabellen måste byggas om. Modifieringar av vägvalstabellen sprider sig till modifie- ringar av vidarebefordringstabellen på ett kontrollerat sätt genom funktionerna hos en Konstruktörsprocess. Det finns flera sätt att planera omkonstruktioner eller partiella omkonstruktioner av vidarebefordringstabellen och en allmänt använd metod är att skjuta upp nästa omkonstruktion något efter att en vägvalstabelluppdatering har detekterats. Exempelvis kan konstruktörsprocessen ackumulera alla förändringar i vägvalstabellen under en förutbestämd tidsperiod innan omkonstruktionen exekve- ras. På detta vis kan en skur av vägvalstabellsmodifieringar (vilket inte är ovanligt) hanteras genom en enda vidarebefordringstabellsomkonstruktion (eller uppdatering).
Den grundläggande funktionen hos Konstruktörsprocessen är att vänta tills en väg- valstabellsuppdatering sker (bpl), hämta områdesgränserna och nästa hopp- indexen med användning av den generella metod som beskrivits i Avsnitt 2 (bp2), eller en effektivare metod som optimerats för den vägvalstabellsrepresentation som används, och bygga om vidarebefordrlngstabellen enligt representationen som beskrivits i Avsnitt 5.2 (bp 3). 5.5 Små vägvals- och vidarebefordringstabeller Ett enkel och okomplicerat sätt att representera vägvalstabellen är att lagra adressprefix tillsammans med nästa hopp-index i poster som är länkade till varandra i en skiktad trädliknande struktur såsom visas i Figur 7. Varje post har en pekare till nästa post till höger (om sådan finns) och till den första barnposten (om sådan finns). 5 10 521 907 30 Poster på samma nivå lagras i sorterad ordning med avseende på den minsta adress som matchar postens prefix (dvs startpunkten av området som utgörs av prefixet).
Poster med prefix som är delmängder av prefixet av en given post lagras i nivåer under den givna posten. Den detaljerade informationen som lagrats i de vägvalsta- bellsposter som visas i Figur 7 visas i tabellen nedan. i p; (winar _ representation) pro pm Nästa hopp-index 1 * 0 4294967295 1 2 oooo* 0 268435455 9 3 oooooooooooooooooooooololoonolo 666 666 16 4 0000001100* 50331648 54525951 7 5 0o1ooo1oo1o11o1oo0011100001* 576330784 576330815 15 6 011111011010100111* 2108276736 2108293119 12 7 1* 2147483648 4294967295 4 8 100* 2147483648 2684354559 10 9 1o1oo11o1o111o11oo* 2797273088 2797289471 3 10 101101111101000001* 3083878400 3083894783 5 11 11ooo1ooo11oo1101* 3295051776 3295084543 14 12 1100100001110106110111010* 3363101952 3363102079 6 13 1111ooo1o11o0100* 4049862656 4049928191 2 14 11116010111000010* 4074831872 4074864639 13 15 1111010111111001011010111111* 4126764016 4126764031 8 16 111111o11o11oo11o11o1* 4256393216 4256395263 11 l detta exempel resulterar resultatet av att genomlöpa vägvalstabellen och beräkna den intermediära områdespartitionsrepresentation i följande. 1.10 rår-s 0 665 666 666 667 50331647 50331648 54525951 54525952 268435455 268435456 576330783 576330784 576330815 576330816 2108276735 2108276736 2108293119 2108293120 2147483647 2147483648 2684354559 2684354560 2797273087 2797273088 2797289471 2797289472 3083878399 3083878400 3083894783 3083894784 3295051775 3295051776 3295084543 3295084544 3363101951 3363101952 3363102079 3363102080 4049862655 4049862656 4049928191 4049928192 4074831871 4074831872 4074864639 4074864640 4126764015 4126764016 4126764031 4126764032 4256393215 4256393216 4256395263 4256395264 4294967295 Náflahoppdndex Ntxäwlsäwßähäwtsâb-flv-»ø-flr-øv-v-»a-øv-flr-ßv-fl M~JOJUI|ÄCANWC©OONOICXIÄCÅN>F-*@!$0C~1S§Cfi~$-C~ätOI-^ s. i»- >- i-I r-ß »- r-n u-n ßÄHàUJ-ÄOO-ÄN-S-Ot-ß-ßßšflràšåß-Ov-'MI-'fflfi 10 15 20 521 907 För att representera detta i en vidarebefordringstabell använder vi en speciell typ av Dynamic Layered Tree som är lämplig för mindre vägvalstabeller. Principen är exakt densamma som för reguljära DLT men i stället för att använda 16 bitars-områ- desgränser använder vi 32-bitars-områdesgränser. Dessutom är antalet bitar som används för att representera nästa hopp-index reducerat till 16. I denna datastruktur som vi kallar 32-bitars Dynamic Layered Tree består en nod av 8 områdesgränser i stället för 16 och ett löv innehåller 5 områdesgränser och 6 nästa hopp-index i stället för 7 respektive 8. Detta innebär att vi kan representera upp till 6 * 9 * 9 * 9 = 4374 områden eller 2187 vägar med användning av denna teknik utan att överstiga utformningsbegränsningen på 4 minnesaccesser. I denna konfiguration är den största mängd minne som krävs för att representera 2187 vägar 32+9-(32+9-(32+9-32))=26240byte.
Den 32-bitars DLT-struktur som representerar områdespartitionen ovan visas i Figur 8. Varje rad representerar en cacherad som lagrar antingen en nod (de första tre raderna) eller ett löv (de sista fem raderna). Observera att kvantiseringseffekter inte har beaktats vilket innebär att denna speciella representation är något mindre minnesutrymmeseffektiv än den fulla flytkomprimerade vidarebefordringstabellen för stora vägvalstabeller. De specialanpassade söknings- och indexsökningsprocedu- rerna för 32-bitars DLT visas i C-kod nedan. 521 907 32 :iyjïïàiífïgï fl” static __in1ine int DLT32_ix_search5(u_int32_t *tkey, u_ínt32_t qkey) i u_int32_t *base = tkey; tkey += *tkey <= qxey; tkey += (*(tkey + 2) <= qkey) << 1; tkey += (*(tkey + 1) <= qkey) << 0; return (int)((tkey - base) + (*tkey <= qkey)); l static __in1ine int DLT32_ix_search8(u_int32_t *tkey, u_int32_t qkey) { u_int32_t *base = tkey; tkey += (*(tkey + 4) <= qkey) << 2; tkey += (*(tkey + 2) <= qkey) << 1; tkey += (*(tkey + 1) <= qyey) << 0; return (int)((tkey - base) + (*tkey <= qkey)): l ädefine _FT;SIZE_1 (8 ) #define _FT_SIZE_2 (8 + 9 * _FT_SIZE_1) #define _FT_s1zE_3 (8 + 9 * _FT_sIzE_2) static __in1ine int DLT32_1ookup(u_int32_t *ft, u_int32_t key) { ft += 8 + _FT_SIZE_3 * _ft_qsearch8(ft, key); fc += s + _FT_s1zE_2 * _ft_qsearchß(ft, keyl; ft += 8 + _FT_SIZE_1 * _ft_qsearch8(ft, key); return ((u__inc1e_c *) (f: + 5)) Lfgqsearchßlít, keyll: DLT32_ix_serach5 och DLT32_ix_search8 är specialanpassade indexsökningsprocedurer for sökning mellan 5 respektive 8 områdesgränser. Efter- som både antalet nivåer (fyra) och antalet områdesgränser som ska sökas är kända i varje steg, kan sökningen utföras som en deterministisk sekvens av aritmetiska operationer, utan villkorlig förgrening, för att helt och fullt utnyttja överlappningen av instruktioner som utförs av CPU:n.

Claims (29)

10 15 20 25 30 521 907 33 6. Patentkrav
1. Metod för IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras genom att från en vägvalstabell hämta ett nästa hopp-index som indikerar vart nämnda datagram ska vidarebefordras, var- vid nämnda nästa hopp-index associeras med det längsta matchande prefixet hos nämnda destinationsadress, varvid nämnda adress är ett tal i en adresspopulation U, i vilken en mängd av adressprefix P och en avbildning av P på en mängd av nästa hopp-index D konverteras till en mängd av områden R som utgör en partition av U, och en avbildning av R på D, vilken kännetecknas av stegen att konstruera och i ett minne lagra en vidarebefordringstabellsrepresentation från R och D genom att använda en förutbestämd skiktad datastruktur där konstruktionen av skiktet väljs beroende på områdesdensiteten |R'| för delpopulationen U' som representeras av detta skikt för att få en utrymmeseffektiv representation av mängden av områden R, och att utföra sökningen genom en områdesmatchningsoperation i nämnda vidare- befordringstabell.
2. Metod enligt krav 1, kännetecknad därav att antalet vägar som ska repre- senteras i vidarebefordringstabellen och ett största tillåtna antal minnesaccesser för sökningen är föreskrivna, varpå nämnda datastrukturer väljs som konstruktionsblock för konstruktionen av vidarebefordringstabellen på sådant sätt att minnesbehoven minimeras.
3. Metod enligt krav 1, kännetecknad därav att antalet vägar som ska repre- senteras i vidarebefordringstabellen och en största tillgänglig minneskapacitet är föreskrivna, varpå nämnda datastrukturer väljs som konstruktionsblock för konstruk- tionen av vidarebefordringstabellen på sådant sätt att antalet minnesaccesser för sökningen minimeras.
4. Metod enligt något av föregående krav, kännetecknad därav att nämnda datastrukturer för konstruktionen av vidarebefordringstabellen är väljbara bland strukturerna Dynamic Flat Tree, Dynamic Layered Tree och Static Flat Tree och vari- ationer därav. 10 15 20 25 30 521 907 34
5. Metod enligt något av föregående krav, kännetecknad därav att för att upp- repat reducera storleken på adressdelpopulationerna vid successiva nivåer används en Static Vector Node (SVN) -representation vid en första nivå för vidarebeford- ringstabellsrepresentationen, en av en första mängd av nämnda förutbestämda skiktade datastrukturer, väljbara beroende på det faktiska värdet av områdesdensi- teten |R,-| för att ge den mest effektiva tabellrepresentationen, väljs för att konstruera vidarebefordringstabellen vid en andra nivå, om |R,-| är mindre än ett förutbestämt första gränsvärde, annars används en SVN-representation, vid en tredje nivå väljs en av en andra mängd av nämnda förutbestämda datastrukturer, väljbara beroende på det faktiska värdet av områdesdensiteten |R,-,,-| för att ge den mest effektiva tabellre- presentationen, för att konstruera vidarebefordringstabellen vid denna tredje nivå, om |R,«,,-| är mindre än ett förutbestämt andra gränsvärde, annars används en SVN-repre- sentation etc tills alla nivåer har representerats.
6. Metod enligt krav 5, kännetecknad därav att en initial SVN-sökning genom direkt indexering utförs vid nämnda första nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda andra nivå och, beroende på värdet på |R,-|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell som representeras av en av nämnda första mängd av nämnda förutbestämda skiktade datastrukturer om |R,-| är mindre än nämnda förutbestämda första gränsvärde, annars utförs en SVN- sökning genom direkt indexering vid nämnda andra nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbor- dats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda tredje nivå och, beroende på värdet på IRM-I, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell som repre- senteras av en av nämnda andra mängd av nämnda förutbestämda skiktade data- strukturer om |R,-,,-| är mindre än nämnda förutbestämda andra gränsvärde, annars utförs en SVN-sökning genom direkt indexering etc tills sökningen har fullbordats.
7. Metod enligt något av kraven 1-2 eller 4-6 kännetecknad därav att det största antalet vägar är fixerat till 218 vägar och det största tillåtna antalet minnesac- cesser till 4, varpå nämnda datastrukturer väljs som konstruktionsblock för konstruk- 10 15 20 25 30 521 907 tionen av vidarebefordringstabellen på sådant sätt att minnesbehoven är mindre än 2,7 Mbyte.
8. Metod enligt något av kraven 1 eller 3-6, kännetecknad därav att det största antalet vägar är fixerat till 218 vägar och den största tillgängliga minneskapaciteten till 2,7 Mbyte, varpå nämnda datastrukturer väljs som konstruktionsblock för konstruk- tionen av vidarebefordringstabellen på sådant sätt att antalet minnesaccesser för sökningen är mindre än eller lika med 4.
9. Metod enligt något av föregående krav, kännetecknad därav att för att upp- repat reducera storleken på adressdelpopulationerna vid successiva nivåer används en Static Vector Node (SVN) -representation med storleken 216 pekare vid en första nivå för vidarebefordringstabellsrepresentationen, en av en första mängd av nämnda förutbestämda skiktade datastrukturer, väljbara beroende på det faktiska värdet av områdesdensiteten |R,-| för att ge den mest effektiva tabellrepresentationen, väljs för att konstruera vidarebefordringstabellen vid en andra nivå, om |R,-| är mindre än ett förutbestämt första gränsvärde 2313, annars används en SVN-representation med storleken 28 pekare, vid en tredje nivå väljs en av en andra mängd av nämnda förut- bestämda datastrukturer, väljbara beroende på det faktiska värdet av områdesden- siteten |R,-,,-| för att ge den mest effektiva tabellrepresentationen, för att konstruera vidarebefordringstabellen vid denna tredje nivå, om |R,-,,-| är mindre än ett förutbe- stämt andra gränsvärde 137, annars används en SVN-representation med storleken 24 pekare, och vid en fjärde nivå väljs en av en tredje mängd av nämnda förutbe- stämda datastrukturer, väljbara beroende på det faktiska värdet av områdesdensite- ten |R,-,,-,k| för att ge den mest effektiva tabellrepresentationen, för att konstruera vida- rebefordringstabellen vid denna fjärde nivå, om |R,-,,-,kj är mindre än ett förutbestämt tredje gränsvärde 12, annars används en SVN-representation med storleken 24 pekare.
10. Metod enligt krav 9, kännetecknad därav att en initial SVN-sökning genom direkt indexering utförs vid nämnda första nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda andra nivå och, beroende på värdet på |R,-|, kodad i pekarvärdet och erhållen genom att avkoda 10 15 20 25 30 *521 907 36 pekarvärdet, fullbordas en sökning i en vidarebefordringstabell som representeras av en av nämnda första mängd av nämnda förutbestämda skiktade datastrukturer om |R,-| är mindre än nämnda förutbestämda första gränsvärde 2313, annars utförs en SVN-sökning genom direkt indexering vid nämnda andra nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda tredje nivå och, beroende på värdet på jR,-,,'|, kodad i pekarvärdet och erhål- len genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell som representeras av en av nämnda andra mängd av nämnda förutbestämda skik- tade datastrukturer om |R,-,,-| är mindre än nämnda förutbestämda andra gränsvärde 137, annars utförs en SVN-sökning genom direkt indexering vid nämnda tredje nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till en underdatastruktur där sök- ningen fortsätter på nämnda fjärde nivå och. beroende på värdet på |R,-,,-,k|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell som representeras av en av nämnda tredje mängd av nämnda förutbestämda skiktade datastrukturer om |R,-,,-,k| är mindre än nämnda förut- bestämda tredje gränsvärde 12, annars fullbordas sökningen genom en slutlig SVN- sökning med användning av direkt indexering vid nämnda fjärde nivå.
11. Metod enligt krav 9 eller 10, kännetecknad därav att vid nämnda andra nivå är populationen U uppdelad i 216 delpopulationer UO, U1,..., U21s_1, var och en med storleken 216, och därav att mängden av områden R bearbetas till Ro, R1,..., R21e_1 och representeras av underdatastrukturerna To, T1,..., Tzwj
12. Metod enligt krav 11, kännetecknad därav att vid nämnda tredje nivå är varje delpopulation U,- uppdelad i 28 delpopulationer U,-,0, U,-,1,..., U,~,2e_1, var och en med storleken 28, och därav att mängden av områden R,- bearbetas till R,-,0, R,-,1,..., R,-,2a_, och representeras av underdatastrukturerna 'F,-,0, Ehn., 71,284.
13. varje delpopulation UU uppdelad i 24 delpopulationer U,-,,-,0, U,,,-,1,. U,-,,-,24_1, var och en Metod enligt krav 12, kännetecknad därav att vid nämnda fjärde nivå är med storleken 24, och därav att mängden av områden R,',,- bearbetas till R,-J-,0, R,-¿,1,..., R,~,,-,24-1 och representeras av underdatastrukturerna 711,0, T,-,,-,1,..., T,-,,-,24.1. 10 15 20 25 30 521 9og7
14. Metod enligt något av kraven 9-13, kännetecknad därav att nämnda första mängd av datastrukturer består av Dynamic Flat Tree- och Dynamic Layered Tree- strukturer.
15. mängd av datastrukturer består av Dynamic Layered Tree-strukturer. Metod enligt något av kraven 9 -14, kännetecknad därav att nämnda andra
16. Metod enligt något av kraven 9-15, kännetecknad därav att nämnda tredje mängd av datastrukturer som ska användas vid nämnda fjärde nivå av sökprocedu- ren består av Dynamic Layered Tree- och Static Flat Tree-strukturer.
17. Metod enligt något av kraven 1-2 eller 4-6, kännetecknad därav att det största antalet vägar är fixerat till 2187 och det största tillåtna antalet minnesaccesser till 4, varpå en 32-bitarsvariation av datastrukturen Dynamic Layered Tree används som konstruktionsblock för konstruktionen av vidarebefordringstabellen så att min- nesbehoven är lika med 26 240 byte.
18. System för IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras genom att från en vägvalstabell hämta ett nästa hopp-index som indikerar vart nämnda datagram ska vidarebefordras, var- vid nämnda nästa hopp-index associeras med det längsta matchande prefixet av nämnda destinationsadress, varvid nämnda adress är ett tal i en adresspopulation U, nämnda system består av ett första konverteringsmedel för att konvertera en mängd adressprefix P till en mängd områden R som utgör en partition av nämnda population U och ett andra konverteringsmedel för att konvertera avbildningen från P på en mängd av nästa hopp-index D till en ekvivalent avbildning från R på D, vilket känne- tecknas av datastruktureringsmedel för att bilda förutbestämda skiktade datastruktu- rer Tsom representerar vägvalstabellen, och konstruktions- och minnesmedel för att konstruera och att lagra en vidarebefordringstabellsrepresentation från R och D genom att använda en förutbestämd skiktad datastruktur där konstruktionen av skik- tet väljs beroende på områdesdensiteten lR'| för delpopulationen U' som represente- ras av detta skikt för att få en utrymmeseffektiv representation av mängden av områ- 10 15 20 25 30 521 907 den R, och medel för att utföra sökningen genom en områdesmatchningsoperation i nämnda vidarebefordringstabell.
19. System enligt krav 18, kännetecknat därav att nämnda konstruktions- och lagringsmedel för vidarebefordringstabell är anordnade för att upprepat reducera storleken på adressdelpopulationerna vid successiva nivåer används en Static Vector Node (SVN) -representation vid en första nivå för vidarebefordringstabellsre- presentationen, en av en första mängd av nämnda förutbestämda skiktade data- strukturer, väljbara beroende på det faktiska värdet av områdesdensiteten |R,«| för att ge den mest effektiva tabellrepresentationen, väljs för att konstruera vidarebeford- ringstabellen vid en andra nivå, om |R,-| är mindre än ett förutbestämt första gräns- värde, annars används en SVN-representauon, vid en tredje nivå väljs en av en andra mängd av nämnda förutbestämda datastrukturer, väljbara beroende på det faktiska värdet av områdesdensiteten |R,-,,-| för att ge den mest effektiva tabellrepre- sentationen, för att konstruera vidarebefordringstabellen vid denna tredje nivå, om jR,~,,»| är mindre än ett förutbestämt andra gränsvärde, annars används en SVN-repre- sentation etc tills konstruktionen och lagringen har fullbordats.
20. System enligt något av kraven 18 eller 19, kännetecknat därav att nämnda sökningsutförandemedel är anordnade för att utföra en initial SVN-sökning genom direkt indexering vid nämnda första nivå för att hämta en pekare som antingen repre- senterar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refe- rerar till en underdatastruktur där sökningen fortsätter på nämnda andra nivå och, beroende på värdet på |R,-|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell representerad genom en av nämnda första mängd av nämnda förutbestämda skiktade datastrukturer om |R,«| är mindre än nämnda förutbestämda första gränsvärde, annars utförs en SVN- sökning genom direkt indexering vid nämnda andra nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbor- dats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda tredje nivå och, beroende på värdet på |R,-,,~|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell represen- terad genom en av nämnda andra mängd av nämnda förutbestämda skiktade data- 10 15 20 25 30 521 907 strukturer om |R,-,,-| är mindre än nämnda förutbestämda andra gränsvärde, annars utförs en SVN-sökning genom direkt indexering etc tills sökningen har fullbordats.
21. System enligt något av kraven 18-20, kännetecknat därav att det största antalet vägar är fixerat till 218 vägar, det största antalet minnesaccesser för att söka nästa hopp-indexet är 4, och varpå nämnda datastrukturer väljs som konstruktions- block för konstruktionen av vidarebefordringstabellen på sådant sätt att minnesbeho- ven är mindre än 2,7 Mbyte.
22. System enligt något av kraven 18-21, kännetecknat därav att nämnda kon- struktions- och lagringsmedel för vidarebefordringstabell är anordnade för att uppre- pat reducera storleken på adressdelpopulationerna vid successiva nivåer används en Static Vector Node (SVN) -representation med storleken 216 pekare vid en första nivå för vidarebefordringstabellsrepresentationen, en av en första mängd av nämnda för- utbestämda skiktade datastrukturer, väljbara beroende på det faktiska värdet av områdesdensiteten |R,-| för att ge den mest effektiva tabellrepresentationen, väljs för att konstruera vidarebefordringstabellen vid en andra nivå, om |R,~| är mindre än ett förutbestämt första gränsvärde 2313, annars används en SVN-representation med storleken 28 pekare, vid en tredje nivå väljs en av en andra mängd av nämnda förut- bestämda datastrukturer, väljbara beroende på det faktiska värdet av områdesden- siteten |R,-,,~| för att ge den mest effektiva tabellrepresentationen, för att konstruera vidarebefordringstabellen vid denna tredje nivå, om |R,-,,-| är mindre än ett förutbe- stämt andra gränsvärde 137, annars används en SVN-representation med storleken 24 pekare, och vid en fjärde nivå väljs en av en tredje mängd av nämnda förutbe- stämda datastrukturer, väljbara beroende på det faktiska värdet av områdesdensite- ten |R,-,,-,k| för att ge den mest effektiva tabellrepresentationen, för att konstruera vida- rebefordringstabellen vid denna fjärde nivå, om |R,-,,-,k| är mindre än ett förutbestämt tredje gränsvärde 12, annars används en SVN-representation med storleken 24 pekare.
23. System enligt något av kraven 18-22, kännetecknat därav att nämnda sök- ningsutförandemedel är anordnade för att utföra en initial SVN-sökning genom direkt indexering vid nämnda första nivå för att hämta en pekare som antingen represente- rar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till 10 15 20 25 30 i 521 907 40 en underdatastruktur där sökningen fortsätter på nämnda andra nivå och, beroende på värdet på |R,-|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell representerad genom en av nämnda första mängd av nämnda förutbestämda skiktade datastrukturer om |R,-| är mindre än nämnda förutbestämda första gränsvärde 2313, annars utförs en SVN- sökning genom direkt indexering vid nämnda andra nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbor- dats, eller refererar till en underdatastruktur där sökningen fortsätter på nämnda tredje nivå och, beroende på värdet på |R,~,;|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebefordringstabell represen- terad genom en av nämnda andra mängd av nämnda förutbestämda skiktade data- strukturer om |Rf,;| är mindre än nämnda förutbestämda andra gränsvärde 137, annars utförs en SVN-sökning genom direkt indexering vid nämnda tredje nivå för att hämta en pekare som antingen representerar ett nästa hopp-index, vilket betyder att sökningen har fullbordats, eller refererar till en underdatastruktur där sökningen fort- sätter på nämnda fjärde nivå och, beroende på värdet på |R,-,,-,k|, kodad i pekarvärdet och erhållen genom att avkoda pekarvärdet, fullbordas en sökning i en vidarebeford- ringstabell representerad genom en av nämnda tredje mängd av nämnda förutbe- stämda skiktade datastrukturer om |R,-,,-,k| är mindre än nämnda förutbestämda tredje gränsvärde 12, annars fullbordas sökningen genom en slutlig SVN-sökning med användning av direkt indexering vid nämnda fjärde nivå.
24. System enligt något av kraven 21-23, kännetecknat därav att vid en första nivå anpassas nämnda datastruktureringsmedel att indela populationen U i 216 del- populationer UO, U1,..., U216_1, var och en med storleken 216, och att bearbeta mängden av områden R till Ro, R1,..., R2ia_1, vilka representeras av underdatastrukturerna To, T1,..., Tziaj.
25. System enligt krav 24, kännetecknat därav att vid en andra nivå anpassas nämnda datastruktureringsmedel att indela varje delpopulation U,« i 28 delpopulationer 10 15 20 25 521 9o7M Uno. Ui,1,---. Ui,28-1, var och en med storleken 28, och att bearbeta mängden av områden R, till R,-,0, R,-,1,..., R,-,2a_1, vilka representeras av underdatastrukturerna 71,0, T,-,1,..., 'F,-,2a_1_
26. System enligt krav 25, kännetecknat därav att vid en tredje nivå anpassas nämnda datastruktureringsmedel att indela varje delpopulation U,-,,- i 24 delpopulatio- nef Ui.j,o. Ui.j,1,---. Ui.j.24-1. var och en med storleken 24, och att bearbeta mängden av områden R,-,,~ till R,-,,-,0, R,-,,~,1,..., R,~,,-,24_1, vilka representeras av underdatastrukturerna T,~,,-,0, T,-,,-,1,..., 711124-1-
27. System enligt något av kraven 18-26, kännetecknat därav att nämnda data- struktureringsmedel anpassas för att bilda datastrukturer som består av Dynamic Flat Tree-, Dynamic Layered Tree- och Static Flat Tree-datastrukturer.
28. System enligt något av kraven 18-20, kännetecknat därav att nämnda data- struktureringsmedel anpassas för att bilda en 32-bitarsvariation av en Dynamic Layered Tree-datastruktur som konstruktionsblock för konstruktion av en vidarebe- fordringstabell så att minnesbehoven är lika med 26 240 byte för ett största antal vägar av 2187 och ett största antal minnesaccesser av 4.
29. Dataprogramsprodukt, vilken kännetecknas av dataprogramskodmedel för att förmå en dator att exekvera metoden enligt något av kraven 1-17 när programmet körs på en dator.
SE0200153A 2002-01-21 2002-01-21 Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras SE521907C2 (sv)

Priority Applications (2)

Application Number Priority Date Filing Date Title
SE0200153A SE521907C2 (sv) 2002-01-21 2002-01-21 Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras
PCT/SE2003/000064 WO2003063427A1 (en) 2002-01-21 2003-01-16 Method and system for fast ip routing lookup using forwarding tables with guaranteed compression rate and lookup performance

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
SE0200153A SE521907C2 (sv) 2002-01-21 2002-01-21 Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras

Publications (3)

Publication Number Publication Date
SE0200153D0 SE0200153D0 (sv) 2002-01-21
SE0200153L SE0200153L (sv) 2003-07-22
SE521907C2 true SE521907C2 (sv) 2003-12-16

Family

ID=20286711

Family Applications (1)

Application Number Title Priority Date Filing Date
SE0200153A SE521907C2 (sv) 2002-01-21 2002-01-21 Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras

Country Status (2)

Country Link
SE (1) SE521907C2 (sv)
WO (1) WO2003063427A1 (sv)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7840696B2 (en) * 2003-07-25 2010-11-23 Broadcom Corporation Apparatus and method for classifier identification
EP2055051A1 (en) 2006-08-25 2009-05-06 University Of Florida Research Foundation, Inc. Recursively partioned static ip router tables
US9300583B2 (en) 2014-01-23 2016-03-29 Gainspan Corporation Maintaining routing information in memory constrained routers
CN108718277B (zh) * 2018-04-11 2021-11-09 新华三技术有限公司 基于路由表的报文转发方法与路由表维护方法及相关装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE511972C2 (sv) * 1997-09-09 2000-01-10 Sics Swedish Inst Of Computers Uppslagningsanordning och förfarande för att klassificera och vidarebefordra datapaket
US6266706B1 (en) * 1997-09-15 2001-07-24 Effnet Group Ab Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
SE9903460L (sv) * 1999-09-22 2001-03-23 Effnet Group Ab Metod och system för snabba routinguppslag
ATE344562T1 (de) * 1999-11-18 2006-11-15 Broadcom Corp Tabellen-nachschlage-mechanismus zur adressauflösung in einer paket- netzwerkvermittlung

Also Published As

Publication number Publication date
SE0200153L (sv) 2003-07-22
WO2003063427A1 (en) 2003-07-31
SE0200153D0 (sv) 2002-01-21

Similar Documents

Publication Publication Date Title
US6490592B1 (en) Method of and apparatus for generating a tree data structure supporting longest match lookup
EP2159708B1 (en) Method for selecting hash function, method for storing and searching routing table and devices thereof
US6560610B1 (en) Data structure using a tree bitmap and method for rapid classification of data in a database
US6697363B1 (en) Method and apparatus for longest matching prefix determination in a communication network
US7356033B2 (en) Method and apparatus for performing network routing with use of power efficient TCAM-based forwarding engine architectures
EP2040184B1 (en) Database and database processing methods
JP4565793B2 (ja) 最長一致アドレスルックアップのための方法および装置
US8356021B2 (en) Method and apparatus for indexing in a reduced-redundancy storage system
US7446681B2 (en) Lookup table array compression and indexing
KR100586461B1 (ko) 파이프라인 이진 트리를 이용한 ip 어드레스 검색 방법,하드웨어 구조 및 기록매체
WO2003069509A2 (en) Efficient ipv4/ipv6 best matching prefix method and apparatus
US7249149B1 (en) Tree bitmap data structures and their use in performing lookup operations
US20130024649A1 (en) Method and device for storing routing table entry
US7478109B1 (en) Identification of a longest matching prefix based on a search of intervals corresponding to the prefixes
Hsieh et al. Multiprefix trie: A new data structure for designing dynamic router-tables
Hsieh et al. A classified multisuffix trie for IP lookup and update
CN110995876B (zh) 一种ip存储与查找的方法及装置
SE521907C2 (sv) Metod och system för snabb IP-vägvalssökning för att fastställa vart ett IP-datagram med en given destinationsadress ska vidarebefordras
CN111131015B (zh) 一种基于PC-Trie动态更新路由的方法
KR100814077B1 (ko) 우선순위 트라이를 이용한 ip 주소 검색 방법 및 이를제공하는 패킷 중계 장치
KR100560420B1 (ko) 트라이를 이용한 인터넷 프로토콜 주소 검색 방법
Yu et al. A space-and time-efficient hash table hierarchically indexed by Bloom filters
JPH11102363A (ja) データ管理システム及び記録媒体
McLaughlin et al. High-speed ip address lookups using hardware based tree structures

Legal Events

Date Code Title Description
NUG Patent has lapsed