CZ2000941A3 - Method and system for fast routing lookups - Google Patents

Method and system for fast routing lookups Download PDF

Info

Publication number
CZ2000941A3
CZ2000941A3 CZ2000941A CZ2000941A CZ2000941A3 CZ 2000941 A3 CZ2000941 A3 CZ 2000941A3 CZ 2000941 A CZ2000941 A CZ 2000941A CZ 2000941 A CZ2000941 A CZ 2000941A CZ 2000941 A3 CZ2000941 A3 CZ 2000941A3
Authority
CZ
Czechia
Prior art keywords
bit
routing
index
representation
mapping table
Prior art date
Application number
CZ2000941A
Other languages
Czech (cs)
Inventor
Andrej Brodnik
Mikael Degermark
Svante Carlsson
Stephen Pink
Original Assignee
Effnet Group 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 Effnet Group Ab filed Critical Effnet Group Ab
Priority to CZ2000941A priority Critical patent/CZ2000941A3/en
Publication of CZ2000941A3 publication Critical patent/CZ2000941A3/en

Links

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Při způsobu směrovacího vyhledávání v intemetovském protokolu ve směrovací tabulce, obsahuje tato tabulka záznamy s prefixy libovolné délky s přidruženou informací o dalším skoku v tabulce dalšího skoku, za účelem toho, kam mají výt přesměrovány datagramy intemetovského protokolu. Reprezentace této směrovací tabulky je ukládána ve formě kompletního prefixového stromu (7), definovaného prefixy všech záznamů ve směrovací tabulce. Dále se ukládá reprezentace bitového vektoru (8), obsahující data z řezu prefixovým stromem v určité hloubce (D), a pole ukazatelů, obsahující indexy do tabulky dalšího skoku a do dávky další úrovně. Bitový vektor (8)je rozdělen do bitových masek a reprezentace těchto bitových masek je uložena v mapovací tabulce. Dále se uloží pole bázových adres a pole kódových slov, kde každé kóduje řádkový index do mapovací tabulky a ofset ukazatele. Nakonec se provede vyhledávání.In the routing lookup method in Intemet log in the routing table, this table contains records with prefixes of any length with associated information about another jump in the next jump table, to see where they should redirect the Intranet protocol datagrams. The representation of this routing table is stored in a form a complete prefix tree (7), defined by prefixes all records in the routing table. Next it is saved a representation of the bit vector (8) containing the slice data a prefix tree at a certain depth (D), and an array of pointers, containing indexes to the next jump table and to the next one level. The bit vector (8) is divided into bit masks and the representation of these bit masks is stored in the mapping table. Next, the base address field and the code field are stored of words where each encodes a row index to a mapping table and Pointer offset. Finally, a search is performed.

Description

Oblast technikyTechnical field

Předkládaný vynález se obecné vztahuje k systému a způsobu směrovacích vyhledávání v internetovském protokolu (IP) ve směrovací tabulce zahrnující záznamy prefixů libovolné délky s přidruženými informacemi o dalším skoku v tabulce dalšího skoku, za účelem určení toho, kam mají být přesměrovány IP datagramy.The present invention generally relates to an Internet Protocol (IP) routing lookup system and method in a routing table comprising arbitrary length prefix entries with associated next hop information in the next hop table to determine where IP datagrams are to be redirected.

Dosavadní stav technikyBACKGROUND OF THE INVENTION

Internet je propojený soubor sítí, kde si každá z vytvářecích sítí ponechává svojí identitu a pro komunikaci mezi více sítěmi je zapotřebí speciální mechanizmus. Vytvářecí sítě se nazývají podsítě.The Internet is an interconnected set of networks where each of the creation networks retains its identity and a special mechanism is needed for communication between multiple networks. Creation networks are called subnets.

Každá podsíť v Internetu podporuje komunikaci mezi zařízeními, připojenými k této podsíti. Jednotlivé podsítě jsou spojeny zařízeními, které se nazývají síťové propojovací jednotky.Each subnet on the Internet supports communication between devices connected to that subnet. Individual subnets are connected by devices called network couplers.

Konkrétní síťová propojovací jednotka je směrovač, který je použit pro spojení dvou sítí, které mohou, ale nemusí být podobné. Tento směrovač využívá ínternetovský protokol (IP), který je v každém směrovači a v každém hostiteli sítě. IP zajišťuje datagramový neboli bezespojový přenos mezi stanicemi.A particular network coupler is a router that is used to connect two networks that may or may not be similar. This router uses an Internet Protocol (IP) that is present in each router and in each network host. IP provides datagram or no-link transmission between stations.

Směrování se obecně provádí tak, že se v každé stanici a směrovači udržuje směrovací tabulka, která pro každou možnou cílovou síť indikuje další směrovač, do kterého má být poslán IP datagram.Routing is generally performed by maintaining a routing table at each station and router, indicating for each possible target network another router to which an IP datagram is to be sent.

♦ ···♦ ···

IP směrovače provádějí směrovací vyhledávání ve směrovací tabulce za účelem určení toho, kam má být přesměrován IP datagram. Výsledkem této operace je další skok na cestě směrem k cíli. Pojmově je záznam ve směrovací tabulce prefix libovolné délky s přidruženou informací o dalším skoku. Směrovací vyhledávání musí najít směrovací záznam s nejdelším odpovídajícím prefixem.IP routers perform routing lookups in the routing table to determine where the IP datagram is to be redirected. The result of this operation is another jump on the way towards the target. Conceptually, the entry in the routing table is a prefix of any length with associated jump information. The routing search must find the routing record with the longest matching prefix.

Protože IP směrovací vyhledávání je inherentně pomalé a složité, činnost podle současného stavu techniky vedla k rozšíření technik, které směrovací vyhledávání vylučují. Různé technologie přepojování v linkové vrstvě pod IP, metody obcházení IP vrstvy (zveřejněné v Proceedings of the Conference on Computer Communications (IEEE Infocom), San Francisco, California, March 1996; Proceedings of Gigabit Network Workshop, Boston, Apríl 1995 a Proceedings of ACM SIGCOMM '95, p. 49-58, Cambridge, Massachusetts, August 1995) a vývoj alternativních síťových vrstev založených na technologiích virtuálního okruhu, jako je ATM, jsou do jisté míry výsledky přání vyloučit IP směrovací vyhledávání.Because IP routing lookup is inherently slow and complex, operation of the prior art has led to the spread of techniques that exclude routing lookup. Various Link Layer Under IP Technology, IP Layer Bypassing Methods (published in IEEE Infocom), San Francisco, California, March 1996, Proceedings of Gigabit Network Workshop, Boston, April 1995 and Proceedings of ACM SIGCOMM '95, p. 49-58, Cambridge, Massachusetts, August 1995) and the development of alternative network layers based on virtual circuit technologies such as ATM, are to some extent the results of the desire to exclude IP routing searches.

Použití přepojovacích linkových vrstev a architektury příznakového přepojování a tokového přepojování pod IP úrovní zvyšuje složitost a redundanci sítě.The use of link-layer switching and flagship and flow-over-IP switching architecture increases network complexity and redundancy.

Většina současných IP směrovačů používá techniky s rychlou vyrovnávací pamětí, kde jsou směrovací záznamy nejnověji použitých cílových adres uloženy v rychlé vyrovnávací paměti. Tato technika spoléhá na to, že jsou určitá místa, kam směřuje velká část provozu, takže úspěšnost hledání v rychlé vyrovnávací paměti je dostatečně vysoká a náklady na směrovací vyhledávání se amortizují během několika paketů. Tyto metody s rychlou vyrovnávací pamětí pracovaly v minulosti dobře. Při současném rychlém růstu Internetu se zvětšuje požadovaná velikost adresových rychlých vyrovnávacích pamětí a hardwarové rychlé vyrovnávací paměti se mohou stát neekonomické.Most current IP routers use cache caching techniques, where routing records of the most recently used destination addresses are cached. This technique relies on certain locations where much of the traffic is directed, so that the caching search success rate is high enough and the cost of routing searches are amortized in a few packets. These cached methods have worked well in the past. With the simultaneous rapid growth of the Internet, the required size of address caches increases, and hardware caches may become uneconomical.

00

Tradiční implementace směrovacích tabulek používá verzi Patriciiných stromů (zveřejněno v Journal of the ACM, 15(4) :514534, October 1968), datové struktury vynalezené před třiceti lety, s modifikacemi pro vyhledání nejdelších odpovídajících prefixů.The traditional implementation of routing tables uses the version of Patricia trees (published in Journal of the ACM, 15 (4): 514534, October 1968), the data structures invented thirty years ago, with modifications to find the longest matching prefixes.

Přímá implementace Patriciiných stromů pro účely směrovacího vyhledávání, například v implementaci NetBSD 1.2, používá 24 bytů pro koncové a vnitrní uzly. Při 40000 záznamech je sama struktura stromu téměř 2 megabyty a v perfektně vyváženém stromu je nutné projít 15 nebo 16 uzlů, aby byl nalezen směrovací záznam.Direct implementation of Patricia trees for routing lookup purposes, for example in NetBSD 1.2 implementation, uses 24 bytes for end and inner nodes. At 40000 records, the tree structure itself is nearly 2 megabytes, and in a perfectly balanced tree, 15 or 16 nodes must be traversed to find the routing record.

V některých případech je nutné díky pravidlu nejdelšího odpovídajícího prefixu projít přídavné uzly, aby se nalezla správná směrovací informace, protože není zaručeno, že výchozí hledání nalezne správný koncový uzel. Existují optimalizace, které mohou redukovat velikost Patriciina stromu a zvýšit rychlost vyhledávání, nicméně datová struktura je velká a pro její nalezení je třeba příliš mnoho drahých odkazů na paměť. Současné vyhledávací tabulky Internetu jsou příliš velké na to, aby se vešly do rychlých vyrovnávacích pamětí na čipu a odkazy na DRAM paměti mimo čip jsou příliš pomalé na dosažení požadované rychlosti vyhledávání.In some cases, because of the longest matching prefix rule, additional nodes must be traversed to find the correct routing information, as there is no guarantee that the default search will find the correct end node. There are optimizations that can reduce the size of Patricia's tree and increase search speed, but the data structure is large and requires too much expensive memory references to find it. Current Internet lookup tables are too large to fit in on-chip buffers, and links to out-of-chip DRAMs are too slow to achieve the desired search speed.

Prvotní práce na zlepšení výkonnosti IP směrování vyloučením plných směrovacích vyhledávání (zveřejněná v Proceedings of the Conference on Computer Communication (IEEE Infocom), New Orleans, Louisiana, March 1988) zjistila, že malá rychlá vyrovnávací paměť cílových adres může zlepšit výkonnost směrovacího vyhledávání alespoň o 65%. Pro dosažení úspěšnosti hledání přes 90% je zapotřebí méně než 10 slotů. Takové malé rychlé vyrovnávací paměti cílových adres nejsou dostatečné pro velké intenzity provozu a velký počet hostitelů v dnešním Internetu.Initial work to improve IP routing performance by eliminating full routing lookups (published in IEEE Infocom, New Orleans, Louisiana, March 1988) found that small destination cache can improve routing lookup performance by at least 65%. Less than 10 slots are required to achieve over 90% search success. Such small destination address buffers are not sufficient for large traffic volumes and large numbers of hosts on today's Internet.

k··· ·»·« ··*· toto 4 to to<k ··· · · «4 toto toto 4 to to <

ATM (asynchronous transfer mode - asynchronní přenosový mód) vylučuje provádění směrovacích vyhledávání tím, že má signalizační protokol, který předává adresy do sítě během sestavování spojení. Stav přesměrování, přístupný identifikátoru virtuálního okruhu (VCI), je v přepojovačích podél cesty instalován během sestavování spojení. ATM buňky obsahují VCI, který může být použit jako přímý index do tabulky se stavem přesměrování nebo jako klíč do transformační funkce. Rozhodnutí o směrování je pro ATM jednodušší, ale pokud jsou velikosti paketů větší než 48 bytů, je třeba dělat více rozhodnutí o směrování ATM.ATM (asynchronous transfer mode) excludes routing lookups by having a signaling protocol that forwards addresses to the network during connection set-up. The redirection state, accessible to the virtual circuit identifier (VCI), is installed in the switches along the path during the establishment of the connection. ATM cells contain a VCI that can be used as a direct index to a redirection status table or as a key to a transformation function. Routing decisions are easier for ATM, but if packet sizes are larger than 48 bytes, more ATM routing decisions need to be made.

Příznakové přepojování a tokové přepojování (zveřejněné v Proceedings of the Conference on Computer Communications (IEEE Infocom), San Francisco, California, March 1996) jsou dvě metody obcházení IP, které jsou určeny pro činnost nad ATM. Obecná myšlenka je nechat IP řídit ATM hardware na linkové úrovni, které provádí skutečné přesměrování dat. Speciální jednoúčelové protokoly (zveřejněné v Request for Comments RFC 1953, Internet Engineering Task Force, May 1996) jsou nutné pro dohodu mezi směrovači o tom, které ATM identifikátory virtuálního okruhu použít, a který paket může použít který identifikátor virtuálního okruhu.Feature switching and flow switching (published in IEEE Infocom, San Francisco, California, March 1996) are two methods of bypassing IP that are designed to operate over ATM. The general idea is to let IP control ATM line-level hardware that performs real data redirection. Special purpose protocols (published in Request for Comments RFC 1953, Internet Engineering Task Force, May 1996) are necessary to agree between routers on which ATM virtual circuit identifiers to use and which packet can use which virtual circuit identifier.

Jiný přístup se stejným cílem vyloučení zpracování IP je použit v architektuře IP/ΑΤΜ (zveřejněné v Proceedings of ACM SIGCOMM '95, p. 49-58, Cambridge, Massachusetts, August 1995), kde ATM zadní deska propojuje množství linkových a směrovacích karet. Členy zpracování IP, umístěné na směrovacích kartách, zpracovávají IP záhlaví. Když přijde proud paketů, je prozkoumáno pouze první IP záhlaví a další pakety jsou směrovány stejně jako první. Zdá se, že hlavní účel těchto zkrácení je amortizovat náklady na IP zpracování v mnoha paketech.Another approach with the same goal of excluding IP processing is used in the IP / ΑΤΜ architecture (published in Proceedings of ACM SIGCOMM '95, p. 49-58, Cambridge, Massachusetts, August 1995), where an ATM backplane interconnects a number of line and routing cards. IP processing members located on routing cards process IP headers. When a packet stream arrives, only the first IP header is examined and the next packets are routed the same way as the first. It seems that the main purpose of these truncations is to amortize the cost of IP processing in many packets.

» » · · 99· · , » 99 99 999 » 9 » · 9 9 9 »9999999 ·· ·*»» · · 99 99 999 9 9 9 9 9999999 ·· · *

Návrhy IP směrovačů mohou používat účelové hardware pro IP zpracování, jako například ve směrovači IBM (zveřejněný v Journal of High Speed Networks, 1(4) :281-288, 1993). To ale může být nepružné řešení. Jakékoli změny ve formátu nebo protokolu IP mohou učinit takový návrh nepoužitelný. Flexibilita software a rychlé zvyšování výkonnosti procesorů pro obecné použití upřednostňují řešení tímto způsobem. Jiný hardwarový přístup je použití CAM pro provádění směrovacího vyhledávání (zveřejněno v Proceedings of the Conference on Computer Communications (IEEE Infocom), volume 3, p. 1382-1391, San Francisco, 1993). To je rychlé, ale nákladné řešení.IP router designs can use dedicated hardware for IP processing, such as in an IBM router (published in the Journal of High Speed Networks, 1 (4): 281-288, 1993). But this can be an inflexible solution. Any changes to the IP format or protocol may render such a design unusable. Software flexibility and rapid performance enhancement for general purpose processors favor a solution that way. Another hardware approach is to use CAM to perform routing searches (published in Proceedings of the Conference on Computer Communications (IEEE Infocom), volume 3, p. 1382-1391, San Francisco, 1993). This is a fast but expensive solution.

BBN v současné době staví pár multigigabitových směrovačů, které používají procesory pro obecné použití jako přesměrovací stroje. Zatím bylo publikováno jen málo informací, ale zdá se, že hlavní myšlenkou je použití procesorů Atpha jako přesměrovacích strojů a provádění veškerého IP zpracování pomocí software. Publikace Gigabit networking, Addison-Wesley. Reading, Massachusetts, 1993 ukazuje, že je možné provádět IP zpracování v méně než 200 instrukcích, za předpokladu úspěšnosti ve směrovací rychlé vyrovnávací pamětí. Druhá rychlá vyrovnávací paměť Alpha procesoru je použita jako velká LRU (least recently ušed - nejstarší použité) rychlá vyrovnávací paměť cílových adres. Toto schéma předpokládá, že provoz směřuje do určitých míst. Pokud je málo těchto určitých míst, stává se úspěšnost hledání v rychlé vyrovnávací paměti nízká a výkonnost se snižuje.BBN is currently building a pair of multigigabit routers that use general purpose processors as redirection machines. Little information has been published so far, but the idea seems to be to use Atpha processors as redirection machines and perform all IP processing with software. Gigabit networking, Addison-Wesley. Reading, Massachusetts, 1993 shows that it is possible to perform IP processing in less than 200 instructions, assuming success in the routing cache. The second cache of the Alpha processor is used as a large LRU (least recently grayed) destination address cache. This scheme assumes that traffic is directed to certain locations. If there are few of these specific locations, the cache search success rate becomes low and performance decreases.

Podstata vynálezuSUMMARY OF THE INVENTION

Cílem předkládaného vynálezu je tedy zlepšená metoda IP směrovacího vyhledávání a systém pro provádění plných směrovacích vyhledávání pro každý IP paket až do gigabitových ( · · · ··· · · · ή · *«·♦······· * ·*»· »··» ··*····· ·· ·· ·· ” rychlostí. Tato metoda a systém překonávají výše zmíněné nevýhody.Thus, an object of the present invention is an improved IP routing lookup method and system for performing full routing lookups for each IP packet up to a gigabit (ig). This method and system overcome the aforementioned disadvantages.

Dalším cílem je zvýšení rychlosti směrovacího vyhledávání s běžným mikroprocesorem.Another goal is to increase the speed of routing searches with a conventional microprocessor.

Ještě dalším cílem je minimalizace vyhledávacího času v přesměrovací tabulce.Yet another objective is to minimize search time in the redirection table.

Ještě dalším cílem předkládaného vynálezu je poskytnutí datové struktury, která se celá vejde do rychlé vyrovnávací paměti běžného mikroprocesoru. V důsledku toho budou přístupy do paměti řádově rychlejší než v případě, kdy musí být datová struktura umístěna v paměti, tvořené například relativně pomalou pamětí typu DRAM.Yet another object of the present invention is to provide a data structure that fits entirely in the cache of a conventional microprocessor. As a result, memory accesses will be of a significantly faster rate than if the data structure must be located in memory, such as a relatively slow DRAM.

Tyto cíle je možné splnit pomocí metody a systému IP směrovacího vyhledávání podle vynálezu, kde tento systém je datová struktura, která může reprezentovat rozsáhlé směrovací tabulky ve velmi kompaktní formě, a která může být rychle prohledána pomocí několika paměťových odkazů.These objectives can be met by the IP routing search method and system of the invention, which system is a data structure that can represent large routing tables in a very compact form, and which can be quickly searched through several memory references.

Přehled obrázků na výkresechBRIEF DESCRIPTION OF THE DRAWINGS

Za účelem podrobnějšího vysvětlení vynálezu, jeho výhod a vlastností bude dále podrobně popsáno výhodné uspořádání vynálezu, s odkazy na doprovodné obrázky, kde obr.1 je schematický pohled na návrh směrovače.For a more detailed explanation of the invention, its advantages and features, a preferred embodiment of the invention will be described in detail below with reference to the accompanying drawings, in which Fig. 1 is a schematic view of a router design.

Obr.2 je ilustrativní pohled na binární strom zahrnující celý IP adresový prostor.Fig. 2 is an illustrative view of a binary tree comprising the entire IP address space.

Obr.3 je ilustrativní pohled na směrovací záznamy definující rozsahy IP adres.Fig. 3 is an illustrative view of routing records defining IP address ranges.

Obr.4 je ilustrativní pohled na krok rozšíření prefixového stromu tak, aby byl plný.Fig. 4 is an illustrative view of the step of expanding the prefix tree to be full.

Obr.5 je ilustrativní pohled na tři úrovně datové struktury podle vynálezu.Fig. 5 is an illustrative view of three levels of the data structure of the invention.

Obr.6 je ilustrativní pohled na část řezu prefixovým stromem v hloubce 16.Fig. 6 is an illustrative view of a section of a prefix tree at depth 16.

Obr.7 je ilustrativní pohled na první úroveň prohledávání datové struktury.Fig. 7 is an illustrative view of a first level search of the data structure.

Obr.8 je tabulka ilustrující data v přesměrovacích tabulkách, zkonstruovaných z různých směrovacích tabulek.Fig. 8 is a table illustrating data in redirection tables constructed from different routing tables.

Obr.9 je tabulka s daty procesoru a rychlé vyrovnávací paměti.Figure 9 is a table of processor and cache data.

Obr.10 je diagram ukazující rozdělení vyhledávacího času pro procesor Alpha 21164.Fig. 10 is a diagram showing a search time distribution for an Alpha 21164 processor.

Obr.11 je diagram ukazující rozdělení vyhledávacího času pro procesor Pentium Pro.Fig. 11 is a diagram showing a search time distribution for a Pentium Pro processor.

Příklady provedení vynálezuDETAILED DESCRIPTION OF THE INVENTION

Zobr.1 je vidět, že návrh směrovače je tvořen množstvím síťových vstupních rozhraní 1_, síťových výstupních rozhraní 2, přesměrovacích prostředků 3 a síťovým procesorem 4, které jsou všechny propojeny propojovací strukturou 5. Vstupní rozhraní 1.It can be seen that the design of the router consists of a plurality of network input interfaces 1, network output interfaces 2, redirection means 3, and a network processor 4, all of which are interconnected by an interface structure 5. Input interface 1.

• « · · • · · · ·· ♦· • Μ · • · · · ·· ·♦ posílají záhlaví paketů do presměrovacích prostředků 3 přes propojovací strukturu 5. Přesměrovací prostředky 3 naopak určují, na které výstupní rozhraní 2 má být paket poslán. Tato informace je posílána zpět do vstupního rozhraní 1, které přesměruje paket na výstupní rozhraní 2. Jediným úkolem přesměrovacího prostředku 3 je zpracování záhlaví paketů. Všechny další úkoly, jako je účast na směrovacích protokolech, rezervace zdrojů, zpracování paketů, které vyžadují zvláštní pozornost a další administrativní povinnosti jsou zpracovávány síťovým procesorem 4.Send packet headers to the redirection means 3 via the linking structure 5. The redirection means 3, in turn, determine to which output interface 2 the packet is to be sent. . This information is sent back to the input interface 1, which redirects the packet to the output interface 2. The only task of the redirection means 3 is to handle the packet header. All other tasks, such as participation in routing protocols, resource reservation, packet processing that require special attention, and other administrative responsibilities are handled by the network processor 4.

Každý přesměrovací prostředek 3 používá místní verzi směrovací tabulky, tj. přesměrovací tabulku nahranou ze síťového procesoru 4 a uloženou v paměti přesměrovacího prostředku 3 za účelem provádění jeho směrovacích rozhodnutí. Není nezbytné nahrávat novou přesměrovací tabulku pro každou aktualizaci směrování. Aktualizace směrování mohou být časté, ale protože směrovací protokoly potřebují jistý čas na konvergenci, může přesměrovací tabulka trochu zastarávat a nemusí se měnit častěji než jednou za sekundu (zveřejněno na Stanford University Workshop on Fast Routing and Switching, December 1996; http://tinvtera.staanford.edu/Workshop Dec96/).Each redirection means 3 uses a local version of the routing table, i.e., a redirection table loaded from the network processor 4 and stored in the memory of the redirection means 3 for making its routing decisions. It is not necessary to upload a new redirection table for each routing update. Routing updates may be frequent, but because routing protocols need some time to converge, the redirection table may become a bit obsolete and may not change more than once per second (published at Stanford University Workshop on Fast Routing and Switching, December 1996; http: // tinvtera) .staanford.edu / Workshop Dec96 /).

Síťový procesor 4 potřebuje dynamickou směrovací tabulku navrženou pro rychlé aktualizace a rychlou generaci přesměrovacích tabulek. Tyto přesměrovací tabulky mohou být naopak optimalizovány na rychlost vyhledávání a nemusí být dynamické.Network processor 4 needs a dynamic routing table designed for fast updates and fast generation of redirection tables. Conversely, these redirection tables can be optimized for search speed and not dynamic.

Za účelem minimalizace vyhledávacího času musí být současně minimalizovány dva parametry v datové struktuře v přesměrovací tabulce, a to počet přístupů k paměti požadovaných během vyhledávání a velikost datové struktury.To minimize search time, two parameters in the data structure in the redirection table must be minimized simultaneously, namely the number of memory accesses required during the search and the size of the data structure.

Zmenšení počtu přístupů k paměti, požadovaných během vyhledávání, je důležité, protože přístupy k paměti jsou relativně pomalé a obyčejně tvoří úzké hrdlo vyhledávacích procedur. Jestliže se podaří vytvořit dostatečně malou datovou strukturu, je možné jí celou umístit do rychlé vyrovnávací paměti běžného procesoru. To znamená, že přístupy k paměti budou řádově rychlejší než v případě, kdy musí být datová struktura umístěna v paměti tvořené relativně pomalou pamětí typu DRAM, což je případ Patriciiných stromů.Reducing the number of memory accesses required during searches is important because memory accesses are relatively slow and usually form the bottleneck of search procedures. If a sufficiently small data structure is created, it can be placed in the cache of a conventional processor. This means that accesses to memory will be of an order of magnitude faster than if the data structure has to be placed in a relatively slow DRAM memory, which is the case with Patricia's trees.

když se celá přesměrovací tabulka nevejde do rychlé vyrovnávací paměti, je stále výhodné, je-li v této rychlé vyrovnávací paměti umístěna velká část této tabulky. Určitá místa v charakteru provozu budou udržovat nejpoužívanější části datové struktury v této rychlé vyrovnávací paměti, takže většina vyhledávání bude rychlá. Kromě toho bude možné pro malou potřebnou vnější paměť použít rychlou paměť typu SRAM. Paměť typu SRAM je drahá a je tím dražší, čím je rychlejší. Pro dané náklady bude moci být tato paměť SRAM rychlejší, pokud jí bude potřeba méně,if the entire redirection table does not fit in the cache, it is still advantageous if a large portion of the redirection table is located in the cache. Certain traffic patterns will keep the most used parts of the data structure in this cache, so most searches will be fast. In addition, it will be possible to use fast SRAM memory for the small external memory required. SRAM is expensive and the more expensive the faster it is. For this cost, this SRAM can be faster if less is needed,

Dalšími návrhovými cíly je to, aby datová struktura potřebovalo během vyhledávání málo instrukcí a aby entity zůstávaly co nejvíce přirozeně seřazené, aby se vyloučily nákladné instrukce a obtížné operace vyjímání bitů.Other design objectives are that the data structure needs little instruction during the retrieval and that the entities remain as naturally aligned as possible to avoid costly instructions and difficult bit extraction operations.

Pro určení kvantitativních návrhových parametrů datové struktury bylo vyšetřováno množství velkých směrovacích tabulek, jak bude popsáno dále. V těchto tabulkách je 40000 dosti málo odlišných směrovacích záznamů. Jsou-Ii shodné další skoky, je zbytek směrovacích informací rovněž stejný, takže všechny směrovací záznamy specifikující stejný další skok mohou sdílet směrovací informace. Počet odlišných dalších skoků ve směrovací tabulce směrovače je omezen počtem dalších směrovačů nebo hostitelů, které mohou být dosaženy jedním skokem, takže není • to ········ • to to · to to ’ · · to i · * • ··*· to· ·· ·· překvapující, že tyto počty mohou být malé dokonce i pro velké páteřní směrovače. Je-li ale směrovač připojen například k velké ATM síti, může být počet dalších skoků o hodně větší.To determine the quantitative design parameters of the data structure, a number of large routing tables were investigated as described below. In these tables, there are 40000 rather few routing records. If the other jumps are the same, the rest of the routing information is also the same so that all routing records specifying the same next hop can share the routing information. The number of different additional hops in the router routing table is limited by the number of additional routers or hosts that can be reached by a single hop, so it is not • to ······· Surprisingly, these numbers may be small even for large backbone routers. However, if the router is connected to a large ATM network, for example, the number of additional jumps may be much higher.

V tomto uspořádání je datová struktura přesměrovací tabulky navržena tak, tak že pojme 214 neboli 16K různých dalších skoků, což by mělo být pro většinu případů dostatečné. Jestliže existuje méně než 256 odlišných dalších skoků, takže index v tabulce dalšího skoku může být uložen v jediném bytu, je možné zde popsané přesměrovací tabulky v jiném uspořádání modifikovat tak, že zaberou podstatně méně místa.In this arrangement, the redirection table data structure is designed to accommodate 2 14 or 16K different jumps, which should be sufficient for most cases. If there are fewer than 256 different additional jumps, so that the index in the next jump table can be stored in a single byte, the redirection tables described herein may be modified in another arrangement to occupy substantially less space.

Přesměrovací tabulka je v podstatě strom se třemi úrovněmi. Prohledání jedné úrovně vyžaduje jeden až čtyři přístupy k paměti. Z toho plyne, že maximální počet přístupů k paměti je dvanáct. Velká většina vyhledávání u běžných směrovacích tabulek ale potřebuje prohledání jedné nebo dvou úrovní, takže nejpravděpodobnéjší počet přístupů k paměti je osm nebo méně.The redirection table is basically a tree with three levels. Searching one level requires one to four memory accesses. This implies that the maximum number of memory accesses is twelve. However, the vast majority of routing table searches need one or two levels of search, so the most likely number of memory accesses is eight or less.

Pro účely pochopení datové struktury lze uvažovat binární strom 6, který obsáhne celý IP adresový prostor, který je zobrazen na obr.2. Jeho hloubka je 32 a počet koncových uzlů je 232, jeden pro každou možnou IP adresu. Prefix záznamu ve směrovací tabulce definuje cestu stromem, končící v některém uzlu. Všechny IP adresy (koncové uzly) v substromu, který má kořen v tomto uzlu mohou být směrovány podle tohoto směrovacího záznamu. Tímto způsobem definuje každý záznam ve směrovací tabulce rozsah IP adres se stejnou směrovací informací.For the purpose of understanding the data structure, a binary tree 6 that encompasses the entire IP address space shown in FIG. Its depth is 32 and the number of end nodes is 2 32 , one for each possible IP address. The record prefix in the routing table defines a tree path ending at a node. All IP addresses (end nodes) in a subtype that has a root in that node can be routed according to this routing record. In this way, each entry in the routing table defines a range of IP addresses with the same routing information.

Jestliže několik směrovacích záznamů pokrývá stejnou IP adresu, použije se pravidlo nejdelší shody, které říká, že pro danou IP adresu má být použit směrovací záznam s nejdelším shodným «······ prefixem. Tato situace je zobrazena na obr.3, kde je směrovací záznam e1 skryt záznamem e2 pro adresy v rozsahu r.If several routing records cover the same IP address, the longest match rule applies, which states that the routing record with the longest matching «······ prefix should be used for that IP address. This situation is shown in Figure 3, where the routing record e1 is hidden by the record e2 for addresses in the range r.

Přesměrovací tabulka je reprezentace binárního stromu 6 se všemi směrovacími záznamy-prefixovým stromem 7. Je požadováno, aby byl prefixový strom plný, tj. aby každé uzel ve stromu měl buďto dva nebo žádného následníka. Uzly s jedním následníkem musí být rozšířeny tak, aby měly dva následníky. Následníci přidaní tímto způsobem jsou vždy koncové uzly a jejich informace o dalším skoku bude stejná jako další skok nejbližšího předchůdce s informací o dalším skoku nebo „nedefinovaný další skok, jestliže neexistuje takový předchůdce.The redirection table is a representation of the binary tree 6 with all routing records-prefix tree 7. It is required that the prefix tree is full, that is, each node in the tree has either two or no successors. Nodes with one successor must be expanded to have two successors. Successors added in this way are always end nodes and their next jump information will be the same as the next jump of the next predecessor with the next jump information, or “undefined next jump if there is no such predecessor.

Tento postup, zobrazený na obr.4, zvětšuje počet uzlů v prefixovém stromu 7, ale dovoluje vytvoření malé přesměrovací tabulky. Nicméně ale není ve skutečnosti nutné vytvářet prefixový strom pro vytvoření přesměrovací tabulky. Prefixový strom je použit pro zjednodušení popisu, Přesměrovací tabulka může být vytvořena během jediného průchodu všemi směrovacími záznamy.This procedure, shown in Fig. 4, increases the number of nodes in the prefix tree 7, but allows the creation of a small redirection table. However, it is not really necessary to create a prefix tree to create a redirection table. The prefix tree is used to simplify the description. The redirection table can be created in a single pass through all routing records.

Sada směrovacích záznamů rozděluje IP adresový prostor do sad IP adres. Problém nalezení správné směrovací informace je podobný problému příslušnosti k intervalové sadě (zveřejněno v SIAM Journal on Computing, 17(1) : 1093-1102, December 1988). V tomto případě je každý interval definován uzlem v prefixovém stromu a má tudíž vlastnosti, které mohou být využity pro vytvoření kompaktní přesměrovací tabulky. Každý rozsah IP adres má například délku, která je mocninou dvou.A set of routing records divides the IP address space into sets of IP addresses. The problem of finding the correct routing information is similar to the problem of belonging to the interval set (published in SIAM Journal on Computing, 17 (1): 1093-1102, December 1988). In this case, each interval is defined by a node in the prefix tree and therefore has properties that can be used to create a compact redirection table. For example, each IP address range has a length that is a power of two.

Jak je vidět na obr.5, úroveň jedna datové struktury pokrývá prefixový strom do hloubky 16, úroveň dva pokrývá hloubky 17 až 24 a úroveň tři hloubky 25 až 32. Kdekoli se část prefixového stromu rozšíří pod úroveň 16, popisuje tutu část stromu dávka úrovně dva.As shown in Fig. 5, level one of the data structure covers the prefix tree to depth 16, level two covers the depths 17 to 24 and level three depths to 25 to 32. Wherever part of the prefix tree extends below level 16, this portion of the tree describes the level batch two.

Podobně popisuje dávka na úrovni tři ty části prefixového stromu, které jsou hlouběji než 24. Výsledkem hledání úrovně datové struktury je buďto index do tabulky dalšího skoku nebo index do pole dávek pro další úroveň.Similarly, the batch at level three describes those portions of the prefix tree that are deeper than 24. The search for the data structure level results in either an index to the next jump table or an index to the batch field for the next level.

Na příklad na úrovni 1 datové struktury na obr,5 je řez prefixovým stromem v hloubce 16. Tento řez je uložen v bitovém vektoru, s jedním bitem pro každý možný uzel v hloubce 16. Je tedy zapotřebí 216 bitů = 64 Kbitů = 8 Kbytú. Pro nalezení bitu odpovídajícího počáteční části IP adresy je 16 horních bitů této adresy použito jako index do bitového vektoru.For example, at one data structure in Figure 5 is a section by prefix tree at depth 16. This cut is stored in the bit vector, with one bit for each possible node at depth 16. It is therefore necessary to 2 16 bits = 64 kbits = 8 kbyte . To find the bit corresponding to the initial portion of the IP address, the 16 upper bits of that address are used as an index into the bit vector.

Jestliže existuje uzel v prefixovém stromu v hloubce 16, je nastaven odpovídající bit ve vektoru. Rovněž, pokud má strom koncový uzel v hloubce menší než 16, je nastaven nejnižší bit v intervalu pokrytém tímto koncovým uzlem. Všechny ostatní bity jsou nula. Bít v bitovém vektoru tudíž může být jednička reprezentující to, že prefixový strom pokračuje pod řezem čili kořenové záhlaví (bity 6, 12 a 13 na obr.6) nebo jednička reprezentující koncový uzel v hloubce 16 nebo méně čili pravé záhlaví (bity 0, 4, 7, 8, 14 a 15 na obr.6) nebo nula, která znamená, že tato hodnota je součástí rozsahu pokrytého koncovým uzlem v hloubce menší než 16 (bity 1, 2, 3, 5, 9, 10 a 11 na obr,6). Součásti mají stejný další skok jako největší záhlaví menší než příslušná součást.If a node exists in the prefix tree at depth 16, the corresponding bit in the vector is set. Also, if the tree has an end node at a depth less than 16, the lowest bit in the interval covered by that end node is set. All other bits are zero. Thus, the hitting in the bit vector may be one representing that the prefix tree continues below the slice or root header (bits 6, 12 and 13 in Fig. 6) or the one representing the end node at depth 16 or less or right header (bits 0, 4). 7, 8, 14, and 15 in FIG. 6) or zero, which means that this value is part of the range covered by the end node at a depth of less than 16 (bits 1, 2, 3, 5, 9, 10, and 11 in FIG. , 6). Components have the same additional jump as the largest header smaller than the component.

Pro pravá záhlaví musí být uložen index do tabulky dalšího skoku. Součásti použijí stejný index jako největší záhlaví menší než příslušná součást. Pro kořenová záhlaví musí být uložen index do dávky úrovně dva, která reprezentuje odpovídající substrom. Informace záhlaví jsou zakódovány do 16-bitových ukazatelů, které jsou uloženy v poli. Dva bity ukazatele kódují o jaký druh ukazatele se jedná a zbývajících 14 bitů jsou buďto indexy do tabulky dalšího skoku nebo do pole, které obsahuje dávky úrovně dva.For the right headers, the index must be stored in the next jump table. Components use the same index as the largest header smaller than the component. For root headers, the index must be stored in a level two batch that represents the corresponding subtree. The header information is encoded into 16-bit pointers that are stored in the array. The two pointer bits encode what kind of pointer it is, and the remaining 14 bits are either indexes to the next jump table or to a field that contains level two batches.

Pro nalezení správného ukazatele je bitový vektor rozdělen do bitových masek délky 16, kterých je 212 = 4096. Pozice ukazatele v poli je dále získána sečtením tří entit: bázového indexu, šestibitového ofsetu a čtyřbitového ofsetu. Bázový index plus šestibitový ofset určují, kde jsou uloženy ukazatele, odpovídající konkrétní bitové masce. Čtyřbitový ofset určuje, který z těchto ukazatelů se má vybrat. Obr.7 ukazuje, jak se tyto entity naleznou. Následující odstavce rozvíjejí tento postup.To find the correct pointer, the bit vector is divided into 16 bit masks of 2 12 = 4096. The pointer position in the array is further obtained by adding three entities: base index, six-bit offset and four-bit offset. The base index plus the six-bit offset determines where pointers are stored corresponding to a particular bit mask. The four-bit offset determines which of these pointers to select. Figure 7 shows how these entities are found. The following paragraphs develop this procedure.

Jelikož bitové masky jsou generovány z plného prefixového stromu, nejsou možné všechny kombinace 16 bitů. Nenulová bitová maska délky 2n může být libovolná kombinace dvou bitových masek délky n nebo bitová maska s hodnotou 1. Nechť a(n) je počet možných nenulových bitových masek délky 2. a(n) je definován pomocí rekurence a(0) = 1, a(n) = 1 + a(n-1 )2.Since bit masks are generated from a full prefix tree, not all 16-bit combinations are possible. A non-zero bit mask of length 2n can be any combination of two bit masks of length n or a bit mask of 1. Let a (n) be the number of possible non-zero bit masks of length 2. and (n) is defined by recurrence a (0) = 1, and (n) = 1 + and (n-1) 2 .

Počet možných bitových masek s délkou 16 je tudíž a(4) + 1 = 678, kde přidaná jednička je proto, že bitová maska může být nula. Index do tabulky se záznamem pro každou bitovou masku tudíž potřebuje pouze 10 bitů.The number of possible bit masks with a length of 16 is therefore a (4) + 1 = 678, where the added one is because the bit mask can be zero. Thus, an index to a table with an entry for each bit mask only needs 10 bits.

Taková tabulka, mapovací tabulka, je udržována proto, aby se mapovala čísla bitů v bitové masce do čtyřbitového ofsetu. Tento ofset specifikuje, kolik ukazatelů je třeba přeskočit pro nalezení žádaného ukazatele, takže je roven počtu nastavených bitů menších než bitový index. Tyto ofsety jsou stejné pro všechny přesměrovací tabulky, bez ohledu na to, jaké hodnoty ukazatele zrovna mají. Mapovací tabulka je konstantní a je generována jednou pro vždy.Such a table, the mapping table, is maintained to map the bit numbers in the bit mask to a four-bit offset. This offset specifies how many pointers need to be skipped to find the desired pointer so that it is equal to the number of set bits smaller than the bit index. These offsets are the same for all redirection tables, no matter what pointer values they currently have. The mapping table is constant and is generated once and for all.

• to to » • « to· to to «to·· ···* • to·· *··♦ to· «· ·· ··To to to • to to to to to to • • • to • • • to «♦ ♦ ♦ ·

Možné bitové masky mají tu vlastnost, že jakýkoli bitový interval, jehož délka je sudá mocnina dvou a začíná na bitovém indexu, který je násobkem stejné mocniny dvou, buď 1) obsahuje samé nuly nebo 2) má nastavený nejnižší bit.Possible bit masks have the property that any bit interval whose length is an even power of two and starts at a bit index that is a multiple of the same power of two, either 1) contains all zeros or 2) has the lowest bit set.

Mapování z bitové masky a bitu do ofsetu, zajišťované mapovací tabulkou, společně s rozšiřováním prefixu, které kompletuje prefixový strom a umožňuje použití mapování, je klíč k dosažení malé velikosti přesměrovací tabulky.Mapping from bit mask and bit to offset provided by the mapping table, together with prefix extension that completes the prefix tree and allows mapping to be used, is the key to achieving a small redirection table size.

Skutečné bitové masky nejsou nutné a místo nich je uchováváno pole 16-bitových kódových slov, skládajících se z 10bitového indexu do mapovací tabulky a 6-bitového ofsetu. 6-bitový ofset obsáhne až 64 ukazatelů, takže je potřeba jeden bázový index pro čtyři kódová slova. Protože může být nejvýše 64K ukazatelů, budou bázové indexy nejvýše 16 bitové (216 - 64K).Actual bit masks are not necessary and instead a 16-bit codeword array consisting of a 10-bit index into a mapping table and a 6-bit offset is stored. The 6-bit offset spans up to 64 pointers, so one base index is needed for four code words. Because there may be up to 64K of indicators will be the base index greater than 16 bits (2 16 - 64K).

V postupu zobrazeném na obr.7 jsou potřebné následující kroky pseudokódu pro prohledání první úrovně datové struktury, přičemž pole kódových slov se nazývá kód, pole bázových adres se nazývá báze, ix je část IP adresy s prvním indexem v poli kódových slov, bit je část IP adresy se sloupcovým indexem v mapovací tabulce, deset (ten) je část kódového slova s řádkovým indexem do mapovací tabulky, bix je část IP adresy s druhým indexem do pole bázových adres a pix je ukazatel do pole ukazatelů, obsahujícího indexy do tabulky dalšího skoku a rovněž indexy do dávky úrovně dva.In the procedure shown in Fig. 7, the following pseudo-code steps are required to search the first level of the data structure, wherein the codeword field is called code, the base address field is called base, ix is the IP address portion with the first index in the codeword field, IP addresses with a column index in the mapping table, ten (ten) is the part of the codeword with the row index to the mapping table, bix is the part of the IP address with the second index to the base address field, and pix is a pointer to the pointer field containing the indexes to the next jump table as well as indices up to the level two batch.

íx := horních 12 bitů IP adresy bit := dolní 4 z horních 16 bitů IP adresy kódové slovo := kód [ix] deset := deset bitů z kódového slova šest := šest bitů z kódového slova bix := horních 10 bitů IP adresy • ··· • · ι pix := báze [bix] + six + mapovací_tabulka [deset][bít] ukazatel := ukazatele_úrovně_1 [pix]íx: = upper 12 bits of IP address bit: = lower 4 of upper 16 bits of IP address code word: = code [ix] ten: = ten bits of code word six: = six bits of code word bix: = upper 10 bits of IP addresses • ··· • · ι pix: = base [bix] + six + mapping_table [ten] [hitting] pointer: = level_level_1 [pix]

Takto je tedy potřeba jen několik bitových výběrů, odkazů na pole a sčítání. Nejsou potřebné žádné instrukce pro násobení a dělení, s výjimkou implicitních násobení při indexování pole.Thus, only a few bit selections, field references, and additions are needed. No multiplication and division instructions are required, except for implicit multiplication when indexing an array.

Při prohledávání první úrovně je potřebný přístup k celkem 7 bytům: dva byty kódového slova, dva byty bázové adresy, jeden byt (ve skutečnosti 4 bity) v mapovací tabulce a konečně dva byty ukazatele. Velikost pro první úroveň je 8 Kbytů pro pole kódových slov, 2 Kbyty pro pole bázových indexů plus počet ukazatelů.A first level search requires access to a total of 7 bytes: two bytes of the codeword, two bytes of the base address, one byte (actually 4 bits) in the mapping table, and finally two bytes of the pointer. The size for the first level is 8 bytes for the codeword field, 2 bytes for the base index field plus the number of pointers.

5,3 Kbytu požadovaných mapovací tabulkou je sdíleno všemi třemi úrovněmi.5.3 The bytes required by the mapping table are shared by all three levels.

Je-li bitová maska rovna nule nebo má nastavený jeden bit, ukazatel musí být index do tabulky dalšího skoku. Takové ukazatele mohou být kódovány přímo do kódového slova a mapovací tabulka tudíž nemusí obsahovat záznamy pro bitové masky nula a jedna. Počet záznamů v mapovací tabulce se tak redukuje na 676 (indexy 0 až 675). Jestliže je deset bitů v kódovém slově (deset horních) větších než 675, reprezentuje kódové slovo přímý index do tabulky dalšího skoku. Šest bitů z kódového slova se použije jako dolních 6 bitů v indexu a (deset-676) jsou horní bity v indexu. Toto kódování umožňuje nejvýše (1024-676) x 26 = 22272 indexů dalšího skoku, což je více než 16K, pro něž byl návrh vytvářen. Tato optimalizace eliminuje tři odkazy na paměť je-li směrovací záznam umístěn v hloubce 12 a více a zmenšuje významně počet ukazatelů v poli ukazatelů. Cenou za to je porovnávání a podmíněný skok.If the bit mask is equal to zero or has one bit set, the pointer must be an index to the next jump table. Such pointers may be encoded directly into the codeword, and thus the mapping table need not include entries for bit masks zero and one. The number of entries in the mapping table is thus reduced to 676 (indexes 0 to 675). If ten bits in the code word (ten upper) are greater than 675, the code word represents a direct index to the next jump table. Six bits of the codeword are used as the lower 6 bits in the index and (ten-676) are the upper bits in the index. This encoding allows a maximum of (1024-676) x 26 = 22272 indexes of the next jump, which is more than the 16K for which the design was created. This optimization eliminates three memory references when the routing record is located at a depth of 12 or more and significantly reduces the number of pointers in the pointer array. The price for this is comparison and conditional jump.

Mapování v sobě zahrnuje následující data a funkce v programovacím jazyce C.The mapping includes the following data and functions in C programming language.

··· * ♦ • · •000 «000000 · 000

00 0 0 0 0 0 0000 00 «·00 00 0 0 0 0 0000 00 «·

Významnou vlastností tohoto kódu je, že mapování které poskytuje, je z individuální bitové masky do pole ofsetů.An important feature of this code is that the mapping it provides is from an individual bit mask to an offset field.

Změny, jako je například permutace záznamů mtable (a mt), dávají stejné mapování. Stejně tak jiné způsoby reprezentace pole ofsetů, například dvě 32-bitová slova namísto čtyř 16-bitových slov.Changes such as permutation of mtable (and mt) records give the same mapping. Likewise, other ways to represent an offset field, such as two 32-bit words instead of four 16-bit words.

/‘mapovací tabulka 7 #define MAPVECLEN 4 typedef uintl 6 MAPVEC[MAPVECLEN];/ ‘Mapping table 7 #define MAPVECLEN 4 typedef uintl 6 MAPVEC [MAPVECLEN];

typedef MAPVEC MCOMPACT;typedef MAPVEC MCOMPACT;

MCOMPACT mt[TMAX];MCOMPACT mt [TMAX];

/* mt je mapovací tabulka použitá během vyhledávání a inicializovaná z mtable, která je použitá během výstavby 7 typedef struct mentry { uintl6 mask; /* 16 bitový tvar (LSB je vždy nastaven!) 7 uintl6 len; /* 8 bitů len (hodnota 1-16) 7 MAPVEC map;/* 16 4-bitových ofsetů ve skupinách po čtyřech 7 } MENTRY, *MP;/ * mt is a mapping table used during searches and initialized from mtable that is used during construction 7 typedef struct mentry {uintl6 mask; / * 16 bit shape (LSB is always set!) 7 uint16 len; / * 8 bit len (value 1-16) 7 MAPVEC maps; / * 16 4-bit offsets in groups of four 7} MENTRY, * MP;

void mentry2mcompact (MENTRY *from, MCOMPACT ‘to) /* vezme část mapy z „from“ a dá jí do „to“ 7 } int i;void mentry2mcompact (MENTRY * from, MCOMPACT‘to) / * takes part of the map from "from" and puts it in "to" 7} int i;

for (i=0; i<MAPVECLEN; i++) { * » *··* · · · «·· · · · · .. * ·· ·· (*to) [i] = from->map[i];for (i = 0; i <MAPVECLEN; i ++) {* * · · .. .. .. .. .. .. .. .. .. * * * * ];

} }}}

extern void mtable_compact {) /* inicializuje mt z mtable */ {extern void mtable_compact {) / * initializes mt from mtable * / {

register int i;register int i;

for(i=0; i<TMAX; i++) { mentry2mcompact (&mtable[ij, &mt[i]);for (i = 0; i <TMAX; i ++) {ment2mcompact (& mtable [ij, & mt [i]);

} }}}

Úrovně dvě a tri datové struktury se sestávají z dávek. Dávka pokrývá podstrom výšky 8 a může obsahovat nejvýše 28 = 256 záhlaví. Kořenové záhlaví v úrovni n-1 ukazuje na dávku v úrovni n. Existují tři druhy dávek v závislosti na tom, kolik záhlaví obsahuje imaginární bitový vektor. Jestliže je:Levels two and three data structures consist of batches. The batch covers a subtree of height 8 and can contain a maximum of 28 = 256 headers. The root header at level n-1 points to a batch at level n. There are three kinds of batches, depending on how many headers the imaginary bit vector contains. If it is:

- 8 záhlaví, je dávka řídká a je reprezentována polem 8bitových indexů záhlaví a osmi 16-bitovými ukazateli, což je celkem 24 bytů;- 8 headers, the batch is sparse and is represented by an array of 8-bit header indexes and eight 16-bit pointers, which is a total of 24 bytes;

9-64 záhlaví, je dávka hustá a je reprezentována analogicky jako v úrovni 1 s výjimkou bázových indexů. Rozdíl je v tom, že je třeba jenom jeden bázový index pro všech 16 kódových slov, protože 6-bitový ofset pokryje všech 64 ukazatelů. Celkem je zapotřebí 34 bytů, plus 18 až 128 bytů pro ukazatele;9-64 header, the dose is dense and is represented analogously to level 1 except for base indexes. The difference is that only one base index is needed for all 16 code words, because the 6-bit offset covers all 64 pointers. A total of 34 bytes are needed, plus 18 to 128 bytes for the indicators;

- 256 záhlaví, je dávka velmi hustá a je reprezentována analogicky jako v úrovni 1. 16 kódových slov a 4 bázové indexy dávají celkem 40 bytů. Kromě toho 65 až 256 ukazatelů potřebuje 130 až 512 bytů.- 256 headers, the batch is very dense and is represented analogously to level 1. 16 code words and 4 base indexes give a total of 40 bytes. In addition, 65 to 256 pointers need 130 to 512 bytes.

’ ϊ · · · ··· · · · · · »**ΐ*ΐ* · · * · ··«· ···· ·· ·· ·· **’** ** ** ΐ · · · ·« · · · · · ** · · · · · ** ** ** **

Husté a velmi husté dávky jsou prohledávány analogicky s první úrovní. Řídké dávky jsou prohledávány jednoúčelovým binárním prohledáváním, které je vytvořeno speciálně pro 8 prvků. To je podstatně rychlejší než lineární prohledávání a obecné binární prohledávání. Navíc může být toto prohledávání implementováno bez použití podmíněných skoků v architektuře procesorů, které mají instrukce pro podmíněný přesun.Dense and very dense doses are searched analogously to the first level. Sparse batches are searched by a dedicated binary search, which is specially designed for 8 elements. This is significantly faster than linear scan and general binary scan. In addition, this search can be implemented without the use of conditional jumps in processor architecture that have conditional move instructions.

/* prohledávací funkce pro řídké dávky 7 static inlíne uintl6 findsparse (SPARSECHUNK *chu, uint32 val) /* chu->vals je tříděné pole 0..7 osmibitových hodnot chu->rtnfo je odpovídající pote 0..7 ukazatelů val je prohledávací klíč {/ * search function for sparse batches 7 static inline uintl6 findsparse (SPARSECHUNK * chu, uint32 val) / * chu-> vals is an array of 0..7 eight-bit chu-> rtnfo values corresponding to 0..7 pointers val is searchable key {

uint* *p, *q;uint * * p, * q;

p = q = &(chu->vals[0]);p = q = & (ch-> vals [0]);

P += (*(P + 3) > val) << 2;P + = (* (P + 3)> val)

P += (*(P + 1) > val) << 1; p += (*p > val);P + = (* (P + 1)> val) <<1; p + = (* p>val);

retům (chu->rinfo[p - q]);lips (ch-> rinfo [p - q]);

}}

Husté a velmi husté dávky jsou optimalizovány analogicky s úrovní 1, jak již bylo popsáno. V řídkých dávkách mohou být dvě po sobě jdoucí záhlaví sloučena a reprezentována menším, jestliže jsou jejich další skoky identické. Při rozhodování o tom, je-li dávka hustá • ·*· +··« ····Dense and very dense doses are optimized analogously to level 1 as described above. In sparse batches, two consecutive headers may be merged and represented smaller if their other jumps are identical. When deciding whether the dose is dense • · * · + ·· «····

4 · ·* ·· nebo řídká se bere toto slučování do úvahy, takže dávka se jeví jako řídká, jestliže je počet sloučených záhlaví 8 nebo méně. Mnoho z koncových uzlů, které byly přidány pro doplnění stromu bude seřazeno a budou mít stejné další skoky. Záhlaví odpovídající takovým vnitřním uzlům budou sloučena do řídkých dávek.Or sparse, this merging is considered, so the batch appears sparse if the number of merged headers is 8 or less. Many of the end nodes that have been added to the tree will be sorted and will have the same additional jumps. Headers corresponding to such internal nodes will be merged into sparse batches.

Taková optimalizace posune rozdělení dávek od větších hustých dávek směrem k menším řídkým dávkám. Pro rozsáhlé tabulky se velikost presměrovací tabulky typicky zmenší o 5 až 15 procent.Such optimization shifts the dose distribution from larger dense doses towards smaller sparse doses. For large tables, the redirection table size is typically reduced by 5 to 15 percent.

Datová struktura je schopná se vyrovnat s podstatným růstem počtu směrovacích záznamů. Ve stávajícím návrhu jsou dvě omezení:The data structure is able to cope with a substantial increase in the number of routing records. There are two limitations in the current proposal:

1. Počet dávek každého druhu je omezen na 214 = 16384 na jednu úroveň.1. The number of doses of each species is limited to 2 14 = 16384 per level.

Tabulka 1 ukazuje, že to je asi 16x více, než je v současnosti použito. Pokud by byl ale limit překročen, může být datová struktura modifikována tak, že se ukazatele kódují jiným způsobem aby bylo více prostoru pro indexy nebo tak, že se zvětší velikost ukazatele.Table 1 shows that this is about 16 times more than currently used. However, should the limit be exceeded, the data structure may be modified so that the pointers are encoded in another way to allow more space for indexes or to increase the pointer size.

2. Počet ukazatelů v úrovních dva a tři je omezen velikostí bázových indexů.2. The number of indicators at levels two and three is limited by the size of the base indexes.

Současná implementace používá 16-bitové bázové indexy a je schopná pojmout růst 3 až 5x. Pokud by byl tento limit překročen, lze jednoduše zvětšit velikost bázových ukazatelů na tři byty. Velikost dávky se tím zvětší o 3% pro husté dávky a o 10% pro velmi husté dávky. Řídké dávky tím nejsou dotčeny.The current implementation uses 16-bit base indexes and is able to accommodate growth 3 to 5x. Should this limit be exceeded, the size of the base indicators can be simply increased to three bytes. This increases the dose size by 3% for dense doses and by 10% for very dense doses. Sparse benefits are not affected.

Je zřejmé, že datová struktura je schopná pojmout velké zvětšení počtu směrovacích záznamů. Její velikost poroste takřka lineárně s počtem směrovacích vstupů.Obviously, the data structure is capable of accommodating a large increase in the number of routing records. Its size will grow almost linearly with the number of routing inputs.

• ♦··• ♦ ··

Pro vyšetřování výkonnosti přesměrovacích tabulek bylo shromážděno množství IP směrovacích tabulek. Internetovské směrovací tabulky jsou v současnosti dostupné na webové stránce projektu Internet Performance Measurement and Analysis (IPMA) (http:/www.ra.net/statistics/) a předtím byly zpřístupněny nyní ukončeným projektem Routing Arbiter (http:/www.ra.net/statistics/). Shromážděné směrovací tabulky jsou denní snímky směrovacích tabulek používaných na různých velkých propojovacích bodech Internetu. Některé ze směrovacích záznamů v těchto tabulkách obsahují více dalších skoků. V takových případech byl náhodně vybrán jeden z nich jako další skok použitý v přesměrovací tabulce.A number of IP routing tables have been collected to investigate the performance of redirection tables. Internet routing tables are currently available on the Internet Performance Measurement and Analysis (IPMA) website (http: /www.ra.net/statistics/) and were previously made available by the now completed Routing Arbiter project (http: /www.ra.net / statistics /). The collected routing tables are daily snapshots of the routing tables used on various large Internet connection points. Some of the routing entries in these tables contain more jumps. In such cases, one of them was randomly selected as the next jump used in the redirection table.

Tabulka 1 na obr.8 ukazuje data přesměrovacích tabulek, sestrojených z různých směrovacích tabulek. Pro každé místo ukazuje data a výsledky pro tu směrovací tabulku, která generovala největší nejrozsáhlejší přesměrovací tabulku. Směrovací záznamy udávají množství směrovacích záznamů ve směrovací tabulce a další skoky udávají počet odlišných dalších skoků, které byly v tabulce nalezeny. Koncové uzly udávají počet koncových uzlů v prefixovém stromu poté, co byly přidány koncové uzly pro doplnění na plný strom.Table 1 in Figure 8 shows the data of redirection tables constructed from different routing tables. For each location, it shows the data and results for the routing table that generated the largest largest redirection table. The routing records indicate the number of routing records in the routing table, and the next jumps indicate the number of different other jumps that were found in the table. End nodes indicate the number of end nodes in the prefix tree after the end nodes have been added to be added to the solid tree.

Čas vytvoření v tabulce 1 je čas potřebný pro generaci přesměrovací tabulky z reprezentace směrovací tabulky ve formě binárního stromu v paměti. Časy byly měřeny na procesoru Alpha 333 MHz, běžícím pod DEC OSF1. Následující sloupce ukazují celkový počet řídkých, hustých a velmi hustých dávek v generované tabulce, následovaný počtem dávek v nejnižší úrovni datové struktury.The creation time in Table 1 is the time required to generate a redirection table from a routing table representation in the form of a binary tree in memory. Times were measured on an Alpha 333 MHz processor running under DEC OSF1. The following columns show the total number of sparse, dense, and very dense batches in the generated table, followed by the number of batches at the lowest level of the data structure.

Z tabulky 1 je zřejmé, že nová přesměrovací tabulka může být generována rychle. Při regeneračním kmitočtu 1 Hz se spotřebuje méně než jedna desetina kapacity procesoru Alpha. Jak bylo « «·4 • · uvedeno dříve, vyšší regenerační kmitočty než 1 Hz nejsou požadovány.It can be seen from Table 1 that a new redirection table can be generated quickly. At 1 Hz, less than one-tenth of the Alpha processor's capacity is consumed. As previously stated, regeneration frequencies higher than 1 Hz are not required.

Největší tabulky z tabulky 1 se nevejdou celé do sekundární rychlé vyrovnávací paměti procesoru Alpha o velikosti 96 Kbyte. Je nicméně možné mít malou velmi rychlou paměť typu SRAM v rychlé vyrovnávací paměti třetí úrovně pro ty části, které se nevejdou do sekundární rychlé vyrovnávací paměti a tím redukovat náklady nenalezení v sekundární rychlé vyrovnávací paměti. S určitými místy v charakteru provozu bude většina odkazů na paměť do sekundární rychlé vyrovnávací paměti.The largest tables in Table 1 do not fit entirely into the 96 Kbyte Alpha processor secondary cache. However, it is possible to have a small, very fast SRAM in the third-level cache for those portions that do not fit in the secondary cache and thereby reduce the cost of not found in the secondary cache. With certain points in the nature of the traffic, most memory references will be in the secondary cache.

Zajímavé pozorování je to, že velikost těchto tabulek je srovnatelná s tím, co by zabralo pouhé uložení všech prefixů v poli. Pro tyto velké tabulky není potřeba více než 5,6 bytu na prefix. Více než polovina těchto bytů je spotřebována ukazateli. V tabulce Sprint je 33469 ukazatelů, které potřebují přes 65 Kbytů paměti. Je jasné, že další redukce přesměrovacích tabulek lze dosáhnout redukcí počtu ukazatelů.An interesting observation is that the size of these tables is comparable to what it would take to simply store all the prefixes in an array. For these large tables no more than 5.6 bytes per prefix is needed. More than half of these dwellings are consumed by indicators. The Sprint table has 33469 pointers that need over 65 Kbytes of memory. It is clear that further redirection table reductions can be achieved by reducing the number of pointers.

Měření na vyhledávací rutině jsou prováděna na funkci v jazyce C, kompilované pomocí GNU C-kompileru gcc (zveřejněn v Using and porting gnu cc. Manual, Free Software Foundation, November 1995, ISBN 1-882114-66-3). Uváděné časy nezahrnují volání funkce nebo přístupy do paměti do tabulky dalšího skoku, gcc generuje kód, který používá přibližně 50 instrukcí procesoru Alpha pro prohledání jedné úrovně datové struktury v nejhorším případě. Pro procesor Pentium Pro generuje gcc kód, který používá 35 až 40 instrukcí na úroveň v nejhorším případě.Measurements on the search routine are performed on a C function compiled with the GNU C-compiler gcc (published in Using and porting gnu cc. Manual, Free Software Foundation, November 1995, ISBN 1-882114-66-3). The reported times do not include function calls or memory accesses to the next jump table, gcc generates code that uses approximately 50 Alpha processor instructions to search one level of data structure in the worst case. For the Pentium Pro processor, it generates gcc code that uses 35 to 40 instructions per level in the worst case.

Následující funkce v jazyce C ukazuje kód vyhledávací funkce, použité při měření.The following C function shows the search function code used for measurement.

• ··· • t • •toto to··· « «to · ·· *· • · · · toto to·· Toto toto to to to to to to to toto toto toto toto toto toto

Pole kódových slov v úrovni 1 se nazývá intl a pole bázových indexů basel. Ukazatele v úrovni 1 jsou uloženy v poli htabl. Dávky jsou uloženy v polích c/s, c/d, c/dd, kde /' je úroveň. Bázové adresy a ukazatele pro husté a velmi husté dávky jsou uloženy v polích base/d, base/dd a htab/d, htab/dd.The level 1 codeword field is called intl and the basel base index field. Level 1 indicators are stored in the htabl field. Batches are stored in the fields c / s, c / d, c / dd, where / 'is the level. Base addresses and pointers for dense and very dense batches are stored in the base / d, base / dd, and htab / d, htab / dd fields.

/* vyhledávací funkce pro přesměrovací tabulku 7 #include “conf.h #include forward.h” #include “mtentry.h” #include “mtable.h” #include “bitžindex.h” #define TABLE_LOOKUP #include “sparse.h’1 #include “timing.h” #include “lookup.h” /* tato makra pracují jen tehdy, je-li ip 32-bitové celé číslo bez znaménka (uint32) 7 #define EXTRACT (start, bits, ip) (((ip)<<(start))>>(32-(bits))) #define GETTEN (m) (((m)«22)»22) #define GETSIX (m) {(m)»10) #define bit2o (ix, bit) ((mt[(ix)] [(bit)»2]»(((bit) &0x3)«2)) &Oxf) /* lookup(ipaddr) -- index do záznamu směrovací tabulky pro ipaddr 7 • · ··· to « • to * · to to ···· to··· ·· ·· to « • toto · • toto · ·· · unsigned int lookup (uint32 ipaddr) {/ * lookup function for redirection table 7 #include “conf.h #include forward.h” #include “mtentry.h” #include “mtable.h” #include “bitindex.h” #define TABLE_LOOKUP #include “sparse.h ' 1 #include “timing.h” #include “lookup.h” / * these macros only work if the ip is a 32-bit unsigned integer (uint32) 7 #define EXTRACT (start, bits, ip) ( ((ip) << (start)) >> (32 - (bits))) #define GETTEN (m) (((m) «22)» 21) #define GETSIX (m) {(m) »10) #define bit2o (ix, bit) ((mt [(ix)] [(bit) »2]» (((bit) & 0x3) «2)) & Oxf) / * lookup (ipaddr) - index to routing table entry for ipaddr 7 • unsigned int lookup (uint32 ipaddr) {

uint32 ix; uint32 ix; Γ index do pole kódových slov *Z Γ index to the code field * Z uint32 code; uint32 code; Z* 16 bitové kódové slovo */ Z * 16 bit codeword * / int32 diff; int32 diff; /* rozdíl od TMAX */ / * unlike TMAX * / uint32 ten; uint32 ten; /* index do mt */ / * index to mt * / uint32 six; uint32 six; /* šest „extra“ bitů kódu */ / * six "extra" bits of code * / int32nhop; int32nhop; /* ukazatel na další skok */ / * next jump pointer * / uint32off; uint32off; /* ofset ukazatele */ / * pointer offset * / uint32hbase; uint32hbase; /* báze pro transformační tabulku / * base for transformation table uint32pntr; uint32pntr; Z* záznam v transformační tabulce Z * record in transformation table int32 kind; int32 kind; Z* druh pntr*Z Type pntr * uint32chunk; uint32chunk; Z* index dávky *Z Batch index * uint8 *p, *q; uint8 * p, * q; Z* ukazatel na prohledání řídké */ Z * search bar sparse * / uint32 key; uint32 key; Z* prohledávací klíč v řídké */ Z * search key in sparse * / /* čas měřen / * time measured •ODTUD *Z • THERE * Z ix = EXTRACT (0,12,ipaddr); code = int1 [ix]; ten = GETTEN (code); six = GETSIX (code); ix = EXTRACT (0.12, ipaddr); code = int1 [ix]; ten = GETTEN (code); six = GETSIX; if ((diff=(ten-TMAX))>=0) { if ((diff = (ten-TMAX))> = 0) { nhop = (six nhop = (six I (diff«6)); I (diff (6));

goto end;goto end;

} off = bit2o(ten, EXTRACT (12,4,ipaddr)); hbase = basel [ix>>2]; pntr = htab1[hbase+six+off];} off = bit2o (ten, EXTRACT (12.4, ipaddr)); hbase = basel [ix >> 2]; pntr = htab1 [hbase + six + off];

if ((kind = (pntr & 0x3))) { ·· ·· • ♦ * ·· »· chunk = (pntr>>2);if ((kind = (pntr & 0x3))) {·· ·· · * ·· · chunk = (pntr >> 2);

if (~kind) { if(-kind) { key = EXTRACT (16,8,ipaddr); p = q = c2s[chunk].vals[0]);if (~ kind) {if (-kind) {key = EXTRACT (16.8, ipaddr); p = q = c2s [chunk] .vals [0]);

if ( * (p+3) > key) {if (* (p + 3)> key) {

P += 4;P + = 4;

};};

while ( *p > key) {while (* p> key) {

P++:P ++:

pntr = c2s[chunk].rinfo[p - q];pntr = c2s [chunk] .rinfo [p-q];

} eíse { ix = EXTRACT (16,4,ipaddr); code = c2dd[chunk] [ix]; ten = GETTEN (code); six = GETSIX (code);} eis {ix = EXTRACT (16.4, ipaddr); code = c2dd [chunk] [ix]; ten = GETTEN (code); six = GETSIX;

if ((diff=(ten-TMAX))>=0 { nhop = (six | (diff<<6)); goto end;if ((diff = (ten-TMAX)) > = 0 {nhop = (six | (diff << 6)); goto end;

} hbase - htab2ddbase[(chunk<<2) j (ix>>2)];hbase - htab2ddbase [(chunk << 2) j (ix >> 2)];

• 9 10 000 0 · * 0 φ 0 0 0 0 0 *·· 00 9 « 0 0000 0000 0000 0*00 00 ·· >0 ·* off = bit2o(ten, EXTRACT (20,4,ipaddr)); pntr = htab2dd[hbase+six+off];• 9 10 000 0 · * 0 φ 0 0 0 0 0 * ·· 00 9 «0 0000 0000 0000 0 * 00 00 ··> 0 · * off = bit2o (the one, EXTRACT (20.4, ipaddr)); pntr = htab2dd [hbase + six + off];

} } else { ix = EXTRACT (16,4,ipaddr); code = c2d[chunk] [ix]; ten = GETTEN (code); six = GETSIX (code);}} else {ix = EXTRACT (16.4, ipaddr); code = c2d [chunk] [ix]; ten = GETTEN (code); six = GETSIX;

if ((diff=(ten/TMAX))>=0) { nhop = (six | (diff<<6)); goto end;if ((diff = (ten / TMAX)) > = 0) {nhop = (six | (diff << 6)); goto end;

} hbase = htab2dbase[chunk];hbase = htab2dbase [chunk];

off = bit2o(ten, EXTRACT (16,4,ipaddr));off = bit2o (ten, EXTRACT (16.4, ipaddr));

pntr = htab2d[hbase+six+off];pntr = htab2d [hbase + six + off];

} if ((kind = (pntr & 0x3))) { chunk = (pntr»2);} if ((kind = (pntr & 0x3))) {chunk = (pntr »2);

if (-kind) {if (-kind) {

If (-kind) { key = EXTRACT (24,8, ipaddr); p = q = c3s[chunk].vals[0]);If (-kind) {key = EXTRACT (24.8, ipaddr); p = q = c3s [chunk] .vals [0]);

if ( * (p+3) > key) {if (* (p + 3)> key) {

P += 4;P + = 4;

};};

•··· ···· • · « · ·· ·· • · · »· ·· while { *ρ > key) { p ++;··· • ···· • · «• · ·· ·· ·» · ·· while {ρ *> key) {p ++;

};};

pntr = c3s[chunk].rinfo[p - q];pntr = c3s [chunk] .rinfo [p-q];

} else { ix = EXTRACT (24,4, ipaddr); code = c3d[chunk] [ix]; ten = GETTEN (code); six = GETSIX (code);else {ix = EXTRACT (24.4, ipaddr); code = c3d [chunk] [ix]; ten = GETTEN (code); six = GETSIX;

if ((diff=(ten/TMAX))>=0) { nhop = (six | (diff<<6)); goto end;if ((diff = (ten / TMAX)) > = 0) {nhop = (six | (diff << 6)); goto end;

} off = bit2o(ten, EXTRACT (28,4,ipaddr)); hbase = htab3ddbase[(chunk<<2) | (ix>>2)]; pntr = htab3dd[hbase+six+off];} off = bit2o (ten, EXTRACT (28.4, ipaddr)); hbase = htab3ddbase [(chunk << 1) | (ix >> 2)]; pntr = htab3dd [hbase + six + off];

} } else { ix = EXTRACT (24,4,ipaddr); code = c3d[chunk] [ix]; ten = GETTEN (code); six = GETSIX (code);}} else {ix = EXTRACT (24.4, ipaddr); code = c3d [chunk] [ix]; ten = GETTEN (code); six = GETSIX;

if {(diff=(ten/TMAX))>=0) { nhop = (six | (diff<<6)); goto end;if {(diff = (ten / TMAX))> = 0) {nhop = (six (diff << 6)); goto end;

* · ··· φ » «··» · · · · φ»·· ·«·* ·· ·· ♦* ·· }* · «« Φ φ φ · · · ·

off = bit2o(ten, EXTRACT (28,4,ipaddr)); hbase = htab3ddbase[chunk]; pntr = htab3dd[hbase+six+off ];off = bit2o (ten, EXTRACT (28.4, ipaddr)); hbase = htab3ddbase [chunk]; pntr = htab3dd [hbase + six + off];

} }}}

} nhop = (pntr >> 2);} nhop = (pntr >> 2);

end:end:

/* čas měřen SEM! */ return nhop;/ * time measured by SEM! * / return nhop;

}}

V procesorech Alpha a Pentium Pro je možné číst okamžitou hodnotu čítače hodinových cyklů. Tato možnost byla použita pro měření vyhledávacího času s velkou přesností. Jedna perioda hodin je 5 nsec při 200 MHz a 3 nsec při 333 MHz.The Alpha and Pentium Pro processors can read the instantaneous counter of the clock cycle. This option was used to measure search time with great accuracy. One clock period is 5 nsec at 200 MHz and 3 nsec at 333 MHz.

V ideálním případě by byla celá přesměrovací tabulka umístěna v rychlé vyrovnávací paměti, takže vyhledávání by byla prováděna s rychlou vyrovnávací pamětí, která není vyrušována. To by emulovalo chování rychlé vyrovnávací paměti v jednoúčelovém přesměrovacím prostředku. Měření byla ale prováděna na běžných pracovních stanicích pro obecné použití a v takových systémech je obtížné řídit obsah rychlé vyrovnávací paměti. Tato rychlá vyrovnávací paměť je vyrušena při každé vstupně/výstupní operaci, při přerušení nebo při startu dalšího procesu. Bez vyrušení rychlé vyrovnávací paměti není dokonce ani možné vytisknout data z měření nebo číst novou IP adresu ze souboru.Ideally, the entire redirection table would be placed in a cache so that the lookup would be performed with a cache that is not disturbed. This would emulate the cache behavior in a dedicated redirection resource. However, measurements have been performed on conventional general purpose workstations and in such systems it is difficult to control the contents of the cache. This cache is interrupted at every I / O operation, interrupt, or at the start of the next process. Without interrupting the cache, it is not even possible to print measurement data or read a new IP address from a file.

« « fe fe· ·· fefefe* fefe *♦Fefefe * fefe * fe

Použitá metoda provádí každé vyhledávání dvakrát a měří se vyhledávací čas druhého vyhledávání. Při tomto způsobu probíhá první vyhledávání s rychlou vyrovnávací pamětí, která je vyrušována a druhé vyhledávání s rychlou vyrovnávací pamětí, kde byla všechna potřebná data umístěna do primární rychlé vyrovnávací paměti při prvním vyhledávání. Po každém páru vyhledávání jsou data z měření vytištěna a je vyvolána nová adresa, což je procedura, která opět vyruší rychlou vyrovnávací paměť.The method used performs each search twice and measures the search time of the second search. In this method, the first cache search is interrupted and the second cache search is where all the necessary data has been placed in the primary cache at the first search. After each search pair, the measurement data is printed and a new address is called, a procedure that again clears the cache.

Výkonnost druhého vyhledávání je lepší než vyhledávání v přesměrovacím prostředku, protože data a instrukce se přesouvají do primární rychlé vyrovnávací paměti blíže k procesoru. Pro získání horního limitu vyhledávacího času je nutné k měřeným časům přidat přídavný čas, požadovaný pro přístupy k sekundární rychlé vyrovnávací paměti. Pro testování všech cest přesměrovací tabulkou byl měřen vyhledávací čas pro každý záznam ve směrovací tabulce, včetně těch záznamů, které byly přidány pro rozšíření na plný strom.The performance of the second lookup is better than the lookup in the redirect, because the data and instructions move into the primary cache closer to the processor. To obtain the upper limit of the search time, it is necessary to add to the measured times the additional time required to access the secondary cache. To test all redirection table paths, the search time for each record in the routing table was measured, including those that were added for the full tree extension.

Z těchto experimentů nemohou být odvozovány průměrné vyhledávací časy, protože není pravděpodobné, že by skutečná skladba provozu měla rovnoměrnou pravděpodobnost přístupu ke každému směrovacímu záznamu. Navíc budou určitá místa kam směřuje provoz udržovat často přistupované části datové struktury v primární rychlé vyrovnávací paměti a tím snižovat průměrné vyhledávací časy. Údaje o výkonnosti počítané dále jsou konzervativní, protože se předpokládá, že všechny přístupy k paměti minou primární rychlou vyrovnávací paměť a tudíž vždy nastane nejhorší případ prováděcího času. Realistické rychlosti vyhledávání budou vyšší.Average search times cannot be derived from these experiments because the actual traffic pattern is unlikely to have an even likelihood of access to each routing record. In addition, certain traffic points will keep frequently accessed parts of the data structure in the primary cache, thereby reducing average search times. The performance data calculated below is conservative because it is assumed that all memory accesses will pass the primary cache and hence the worst case execution time will always occur. Realistic search speeds will be higher.

Tabulka 1 ukazuje, že ve třetí úrovni datové struktury je velmi málo dávek. Z toho vyplývá pravděpodobnost toho, že převážná většina vyhledávání nebude potřebovat prohledání více než dvou ········ ♦ ·Table 1 shows that there are very few batches in the third level of the data structure. This suggests that the vast majority of searches will not need to search more than two ········ ♦ ·

0· ·· úrovní pro nalezení dalšího skoku. Proto je přídavný čas pro přístupy k sekundární rychlé vyrovnávací paměti počítán pro osm přístupů k paměti, namísto dvanácti přístupů v nejhorším případě. Pokud by významná část vyhledávání přistupovala k těmto několika dávkám, přesunuly by se tyto dávky do primární rychlé vyrovnávací paměti a všech dvanáct přístupů k paměti by se tím stalo méně nákladných.0 · ·· levels to find the next jump. Therefore, the additional time for accesses to the secondary cache is calculated for eight accesses instead of the twelve accesses in the worst case. If a significant portion of the searches accessed these multiple batches, these batches would be moved to the primary cache, making all twelve accesses less expensive.

Experiment byl prováděn na procesoru Alpha 21164 s hodinovým kmitočtem 333 MHz, takže jeden cykl trvá 3 nsec. Jak je vidět z tabulky 2 na obr.9, trvají přístupy k 8 Kbytové primární rychlé vyrovnávací paměti 2 cykly a přístupy k 96 Kbytové sekundární rychlé vyrovnávací paměti potřebují 8 cyklů.The experiment was performed on an Alpha 21164 processor with a clock frequency of 333 MHz, so one cycle lasts 3 nsec. As shown in Table 2 of FIG. 9, the accesses to the 8-byte primary cache are 2 cycles and the accesses to the 96-byte secondary cache require 8 cycles.

Obr.10 ukazuje pro procesor Alpha rozdělení hodinových cyklů, které uplynou během druhého vyhledávání ve vyhledávací tabulce Sprint z 1. ledna. Nejrychlejší pozorovaná vyhledávání potřebují 17 hodinových cyklů. Jsou to ty případy, kdy kódové slovo v první úrovni přímo kóduje index do tabulky dalšího skoku. Existuje velmi málo takových směrovacích záznamů, protože ale každý takový směrovací záznam pokrývá mnoho IP adres, může skutečný provoz obsahovat mnoho takových cílových adres. Některá vyhledávání potřebují 22 cyklů, což musí být stejný případ jako předchozí. Experimenty potvrdily, že pokud je čítač hodinových cyklů čten se dvěma po sobě následujícími instrukcemi, je rozdíl občas 5 cyklů namísto očekávaných 0 cyklů.Fig. 10 shows for Alpha processor the distribution of hourly cycles that expire during the second Sprint lookup of January 1. The fastest observed searches require 17 clock cycles. These are the cases where the code word in the first level directly encodes the index into the next jump table. There are very few such routing records, but since each such routing record covers many IP addresses, the actual traffic may contain many such destination addresses. Some searches need 22 cycles, which must be the same as the previous one. Experiments confirmed that if the clock cycle counter is read with two consecutive instructions, the difference is occasionally 5 cycles instead of the expected 0 cycles.

Další špička na obr.10 je na 41 hodinových cyklech. Je to případ, kdy ukazatel nalezený v první úrovni je index do tabulky dalšího skoku. Tradiční adresy třídy B spadají do této kategorie. Špičky na 52-53, 57, 62, 67 a 72 hodinových cyklech odpovídají nalezení ukazatele po prozkoumání jedné, dvou, tří, čtyř nebo pěti hodnot v řídké dávce úrovně 2. Výrazné špičky na 75 a 83 hodinových cyklech jsou proto, že tolik hodinových cyklů je potřebaThe next peak in FIG. 10 is on 41 hour cycles. This is the case when the pointer found in the first level is an index to the next jump table. Traditional Class B addresses fall into this category. Peaks on 52-53, 57, 62, 67, and 72 clock cycles correspond to finding a pointer after examining one, two, three, four, or five values in a low level 2 dose. cycles are needed

00 0 0 0 pro prohledání husté, respektive velmi husté dávky. Několik pozorovaných špiček nad hodnotou 83 odpovídá ukazatelům nalezeným po prohledání řídké dávky úrovně 3, pravděpodobně díky variacím v prováděcím čase. Konflikty v sekundární rychlé vyrovnávací paměti nebo rozdíly ve stavu zřetězeného zpracování a systému rychlé vyrovnávací paměti mohou způsobit tyto variace. Zbytek pozorovaných špiček nad 100 hodinovými cykly je způsoben buďto takovými variacemi nebo nenalezením v rychlé vyrovnávací paměti. Pro vyhledávání by mělo být dostatečných 300 nsec, pokud jsou všechna data v primární rychlé vyrovnávací paměti.00 0 0 0 for searching a dense or very dense dose. A few observed peaks above 83 correspond to the indicators found after scanning a sparse dose of level 3, probably due to variations in execution time. Conflicts in the secondary cache or differences in the chained state and the cache system can cause these variations. The remainder of the observed peaks over 100 hour cycles are caused by either such variations or not found in the cache. 300 nsec should be sufficient for the search if all data is in the primary cache.

Rozdíl mezi přístupem k datům v primární rychlé vyrovnávací paměti a v sekundární rychlé vyrovnávací paměti je 8-2 = 6 cyklů. Prohledání dvou úrovní datové struktury potřebuje v nejhorším případě o 8x6 =48 hodinových cyklů více, než je zobrazeno na obr.10. To znamená, že pro nejhorší případ prohledávání při dvou úrovních je dostatečných 100+48 = 148 cyklů neboli 444 nsec. Procesor Alpha je tudíž schopen provádět alespoň 2,2 miliony směrovacích prohledávání za sekundu, s přesměrovací tabulkou umístěnou v sekundární rychlé vyrovnávací paměti.The difference between data access in the primary cache and in the secondary cache is 8-2 = 6 cycles. Searching the two levels of the data structure in the worst case needs 8x6 = 48 clock cycles more than shown in Figure 10. This means that 100 + 48 = 148 cycles or 444 nsec is sufficient for the worst case of two-level search. Therefore, the Alpha processor is capable of performing at least 2.2 million routing scans per second, with a redirection table located in the secondary cache.

Další experiment byl prováděn na procesoru Pentium Pro s hodinovým kmitočtem 200 MHz, takže jeden hodinový cyklus trvá 5 nsec. Primární rychlá vyrovnávací paměť 8 Kbytů má latenční dobu 2 cykly a sekundární rychlá vyrovnávací paměť má latenční dobu 6 cyklů, jak je vidět z tabulky 2.Another experiment was performed on a Pentium Pro processor with a clock frequency of 200 MHz, so one clock cycle lasts 5 nsec. The primary cache of 8 bytes has a latency of 2 cycles and the secondary cache has a latency of 6 cycles, as shown in Table 2.

Obr.11 ukazuje pro procesor Pentium Pro rozdělení hodinových cyklů, které uplynou během druhého vyhledávání ve stejné přesměrovací tabulce jako u procesoru Alpha 21164. Posloupnost instrukcí, která vyvolá čítač hodinových cyklů, zabere 33 hodinových cyklů. Když se provedou dvě vyvolání bezprostředně po sobě, budou ·««· ··*· se hodnoty čítače lišit o 33. Z toho důvodu se musí všechny uváděné časy snížit o 33 cyklů.Figure 11 shows for the Pentium Pro the distribution of the clock cycles that pass during the second search in the same redirection table as the Alpha 21164. The sequence of instructions that invokes the clock cycle counter takes 33 clock cycles. When two invocations are executed in succession, the counter values will differ by 33. For this reason, all reported times must be reduced by 33 cycles.

Nejrychlejší pozorovaná vyhledávání jsou 11 cyklů, což je zhruba stejná rychlost jako u procesoru Alpha 21164. Na 25 cyklech se objevuje špička odpovídající případu, kdy je index dalšího skoku nalezen bezprostředně po první úrovni. Špičky odpovídající řídké dávce druhé úrovně jsou seskupeny v rozsahu 36 až 40 cyklů. Zdá se, že rozdílná struktura rychlé vyrovnávací paměti v procesoru Pentium se vyrovnává lépe s lineárními prozkoumáváními než struktura rychlé vyrovnávací paměti v procesoru Alpha 21164.The fastest observed searches are 11 cycles, which is roughly the same speed as the Alpha 21164 processor. The 25 cycles show a peak corresponding to the case when the next jump index is found immediately after the first level. The peaks corresponding to the second level sparse dose are grouped over a range of 36 to 40 cycles. The different cache structure in the Pentium processor seems to cope better with linear scans than the cache structure in the Alpha 21164 processor.

Jsou-li dávky druhé úrovně husté a velmi husté, potřebuje vyhledávání 48, respektive 50 cyklů. Na obrázku se vyskytuje několik nepravidelných špiček až do 69 cyklů a nad touto hodnotou je již velmi málo pozorování. Je zřejmé, že 69 cyklů (345 nsec) je dostatečných pro provedení vyhledávání, pokud jsou všechna data v primární rychlé vyrovnávací paměti.If the second level doses are dense and very dense, the search needs 48 and 50 cycles, respectively. There are a few irregular spikes in the figure up to 69 cycles, with very little observation above this value. Obviously, 69 cycles (345 nsec) are sufficient to perform a lookup if all data is in the primary cache.

Rozdíl v přístupovém čase mezi primární a sekundární rychlou vyrovnávací pamětí je 20 nsec (4 cykly). Musí-li být prozkoumány dvě úrovně, je vyhledávací čas pro procesor Pentium Pro v nejhorším případě 69 + 8x4 = 101 cyklů neboli 505 nsec. Procesor Pentium Pro tedy může provádět alespoň 2 mitiony směrovacích prohledávání za sekundu, je-li přesměrovací tabulka v sekundární rychlé vyrovnávací paměti.The difference in access time between the primary and secondary cache is 20 nsec (4 cycles). If two levels need to be investigated, the search time for the Pentium Pro processor is at worst 69 + 8x4 = 101 cycles or 505 nsec. Thus, the Pentium Pro processor can perform at least 2 Mition routing scans per second when the redirection table is in the secondary cache.

Předkládaný vynález poskytuje zlepšenou metodu a systém IP směrovacího vyhledávání, která plně odpovídá cílům a výhodám ukázaným výše. Ačkoli byl vynález popsán ve spojitosti se specifickým uspořádáním, jsou odborníkům v dané oblasti zřejmé alternativy, modifikace a variace.The present invention provides an improved IP routing search method and system that fully corresponds to the objectives and advantages shown above. Although the invention has been described in connection with a specific embodiment, alternatives, modifications and variations will be apparent to those skilled in the art.

···· ···· κ···· ···· κ

Ve výše popsaném uspořádání je vyhledávací funkce implementována v programovacím jazyce C. Odborníkům v oblasti programování je zřejmé, že mohou být použity jiné programovací jazyky. Alternativně může být vyhledávací funkce implementována v hardware za použití běžných postupů číslicového návrhu, což je rovněž zřejmé odborníkům v oblasti hardwarových návrhů.In the above-described arrangement, the search function is implemented in the C programming language. Those skilled in the art will recognize that other programming languages may be used. Alternatively, the search function can be implemented in hardware using conventional digital design techniques, as is also apparent to those skilled in the art of hardware design.

Vynález je například aplikovatelný na jiné počítačové systémy než ty, které používají procesory Alpha 21165 nebo Pentium Pro, je možné provádět jiným způsobem řezy prefixovým stromem, může být jiný počet úrovní ve stromu, jiné způsoby reprezentace mapovací tabulky a jiné způsoby kódování kódových slov.For example, the invention is applicable to computer systems other than those using Alpha 21165 or Pentium Pro processors, it is possible to perform prefix tree cuts in different ways, different number of levels in the tree, different ways of representing a mapping table and other ways of coding code words.

Vynález může být navíc použit pro směrovací vyhledávání ochranných bariér (Firewall).In addition, the invention can be used for the routing search of firewalls.

Claims (2)

PATENTOVÉ NÁROKYPATENT CLAIMS 1. Způsob směrovacího vyhledávání v internetovském protokolu ve směrovací tabulce, sestávající ze záznamů s libovolnou délkou prefixů s přidruženou informací o dalším skoku v tabulce dalšího skoku, za účelem určení toho, kam mají být přesměrovány datagramy v internetovském protokolu, vyznačující se t í m, že sestává z kroků uložení reprezentace směrovací tabulky v paměťovém prostředku ve formě kompletního prefixového stromu (7), definovaného prefixy všech záznamů směrovací tabulky a doplněného tak, že každý uzel má buďto žádného nebo dva následníky a všichni přidaní následníci jsou koncové uzly se stejnou informací o dalším skoku jako nejbližší předchůdce s informací o dalším skoku nebo s nedefinovaným dalším skokem, pokud žádný takový předchůdce neexistuje, uložení ve zmíněném paměťovém prostředku reprezentace bitového vektoru (8), obsahujícího data řezu prefixovým stromem (7) v obecné hloubce (D) s jedním bitem pro každý možný uzel v této obecné hloubce, kde tento bit je nastaven, jestliže uzel v prefixovém stromu (7) existuje, uložení ve zmíněném paměťovém prostředku pole ukazatelů, což je pro pravá záhlaví index do tabulky dalšího skoku a pro kořenová záhlaví index do dávky další úrovně, rozdělení bitového vektoru (8) do bitových masek určité délky, uložení ve zmíněném paměťovém prostředku reprezentace možných bitových masek v mapovací tabulce, uložení ve zmíněném paměťovém prostředku pole kódových slov, kde každé kóduje řádkový index do mapovací tabulky a ofset ukazatele, « 000 0· ·0 • 0 uložení ve zmíněném paměťovém prostředku pole bázových adres, přístup ke kódovému slovu v poli kódových slov na místě odpovídajícímu první indexové části (ix) adresy internetovského protokolu, přístup k záznamu v mapovací tabulce na tom místě v mapovací tabulce, které odpovídá části adresy internetovského protokolu se sloupcovým indexem (bit) a části kódového slova s řádkovým indexem (ten), přístup k bázové adrese v poli bázových adres na místě odpovídajícímu druhé indexové části (bix) adresy internetovského protokolu a přístup k ukazateli v poli ukazatelů na místě odpovídajícímu bázové adrese plus ofsetu ukazatele (six) v kódovém slově plus části záznamu v mapovací tabulce.A method of routing lookup in an Internet protocol in a routing table, consisting of records of any prefix length with associated next hop information in the next hop table, to determine where datagrams in the Internet protocol are to be redirected, characterized in that: that consists of the steps of storing a routing table representation in the memory means in the form of a complete prefix tree (7) defined by the prefixes of all routing table entries and supplemented so that each node has either no or two successors and all added successors are end nodes with the same the next jump as the closest predecessor with information about the next jump or an undefined next jump, if no such predecessor exists, storing in said storage means a representation of the bit vector (8) containing the prefix tree section data (7) at a general depth (D) with one bit for each possible node at that general depth, where that bit is set, if a node exists in the prefix tree (7), storing in the said memory means a pointer array, which for the right headers is an index dividing the bit vector (8) into bit masks of a certain length, storing in said storage means a representation of the possible bit masks in the mapping table, storing in said storage means an array of code words, each coding row lines index to the mapping table and pointer offset, «000 0 · · 0 • 0 stored in said base address field memory, access to the codeword in the codeword field at a location corresponding to the first index portion (ix) of the Internet protocol address, access to the record in the mapping table at that point in the mapping table e, which corresponds to a portion of an Internet protocol address with a column index (bit) and a codeword portion with a row index (ten), accessing a base address in a base address field at a location corresponding to a second index portion (bix) of the Internet protocol address an array of pointers in place corresponding to the base address plus the pointer offset (six) in the codeword plus portions of the mapping table entry. 2. Systém pro směrovací vyhledávání v internetovském protokolu ve směrovací tabulce, sestávající ze záznamů s iibovolnou délkou prefixů s přidruženou informací o dalším skoku v tabulce dalšího skoku, za účelem určení toho, kam mají být přesměrovány datagramy v internetovském protokolu, vyznačující se t í m, že obsahuje směrovací tabulku v paměťovém prostředku ve formě kompletního prefixového stromu (7), definovaného prefixy všech záznamů směrovací tabulky, kde každý uzel má buďto žádného nebo dva následníky a všichni přidaní následníci jsou koncové uzly se stejnou informací o dalším skoku jako nejbližší předchůdce s informací o dalším skoku nebo s nedefinovaným dalším skokem, pokud žádný takový předchůdce neexistuje, reprezentaci bitového vektoru (8), obsahujícího data řezu prefixovým stromem (7) v obecné hloubce (D) s jedním bitem pro každý možný uzel v této obecné hloubce, kde tento bit je nastaven, jestliže uzel v prefixovém stromu (7) existuje, ν·* ··· · pole ukazatelů, což je pro pravá záhlaví index do tabulky dalšího skoku a pro kořenová záhlaví index do dávky další úrovně, rozdělení bitového vektoru (8) do bitových masek určité délky, mapovací tabulku tvořenou reprezentací možných bitových masek, pole kódových slov, kde každé kóduje řádkový index do mapovací tabulky a ofset ukazatele a pole bázových adres.2. An Internet Protocol routing lookup system in a routing table, consisting of records of arbitrary prefix length with associated next hop information in the next hop table, to determine where datagrams in the Internet protocol should be redirected, characterized by comprising a routing table in the memory means in the form of a complete prefix tree (7) defined by the prefixes of all routing table entries, where each node has either no or two successors and all the added successors are end nodes with the same next hop information as the nearest predecessor information about another jump or with an undefined next jump, if no such predecessor exists, a representation of the bit vector (8) containing the prefix tree (7) section data at a general depth (D) with one bit for each possible node at that general depth this b it is set if a node exists in the prefix tree (7), ν · * ··· · pointer array, which is the index to the next jump table for the right headers and the index to the next level batch for the root headers, bit vector distribution (8) into bit masks of a certain length, a mapping table made up of a representation of possible bit masks, an array of code words, each encoding a row index into a mapping table, and an offset of a pointer and a base address array. Zastupuje:Represented by: Dr.Miloš Všetečka v.r.Dr.Miloš Všetečka v.r. « · fe·· fe ·♦ fe · ♦ · ·· ·· • ♦ · * • · fe · • fe »·· Fe fe fe fe fe fe ♦ ♦ * * * * * * * * * * »*» Během řízení o této PCT-přihlášce č. PCT/SE98/00854 bylo (na základě International Preliminary Examination) upraveno znění patentových nároků. Upravené znění těchto patentových nároků přikládáme v příloze. Změny se týkají stran 33-36.During the proceedings on this PCT application No. PCT / SE98 / 00854, the wording of the patent claims has been modified (based on the International Preliminary Examination). The amended version of these claims is attached hereto. The amendments apply to pages 33-36.
CZ2000941A 1998-05-11 1998-05-11 Method and system for fast routing lookups CZ2000941A3 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CZ2000941A CZ2000941A3 (en) 1998-05-11 1998-05-11 Method and system for fast routing lookups

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CZ2000941A CZ2000941A3 (en) 1998-05-11 1998-05-11 Method and system for fast routing lookups

Publications (1)

Publication Number Publication Date
CZ2000941A3 true CZ2000941A3 (en) 2000-10-11

Family

ID=5469953

Family Applications (1)

Application Number Title Priority Date Filing Date
CZ2000941A CZ2000941A3 (en) 1998-05-11 1998-05-11 Method and system for fast routing lookups

Country Status (1)

Country Link
CZ (1) CZ2000941A3 (en)

Similar Documents

Publication Publication Date Title
US6266706B1 (en) Fast routing lookup system using complete prefix tree, bit vector, and pointers in a routing table for determining where to route IP datagrams
KR100748773B1 (en) Method and apparatus for longest match address lookup
Zane et al. CoolCAMs: Power-efficient TCAMs for forwarding engines
Nilsson et al. IP-address lookup using LC-tries
US6052683A (en) Address lookup in packet data communication networks
JP3782950B2 (en) Prefix search method and data structure using compressed search table
US7281085B1 (en) Method and device for virtualization of multiple data sets on same associative memory
US20070177512A1 (en) Method of Accelerating the Shortest Path Problem
EP1010304A4 (en) Apparatus and method for routing data packets through a communications network
US6804230B1 (en) Communication device with forwarding database having a trie search facility
US6917954B2 (en) Load balancing in IP address lookup
US6996559B1 (en) IP address resolution methods and apparatus
US6279097B1 (en) Method and apparatus for adaptive address lookup table generator for networking application
SK3692000A3 (en) Method and system for fast routing lookups
US6421660B1 (en) Enhanced searching method and apparatus for variable bit chains
US20090171651A1 (en) Sdram-based tcam emulator for implementing multiway branch capabilities in an xml processor
US7570644B2 (en) Routing method for a telecommunications network and router for implementing said method
CZ2000941A3 (en) Method and system for fast routing lookups
Czumaj et al. Contention resolution in hashing based shared memory simulations
Li et al. Address lookup algorithms for IPv6
Chang et al. Efficient IP routing table lookup scheme
Park et al. An efficient IP address lookup algorithm based on a small balanced tree using entry reduction
Yazdani et al. Performing IP lookup on very high line speed
Chang et al. A pipelined IP forwarding engine with fast update
Wang et al. A fast table update scheme for high-performance IP forwarding

Legal Events

Date Code Title Description
PD00 Pending as of 2000-06-30 in czech republic