170 likes | 303 Views
FRUGAL IP LOOKUP BASED ON A PARALLEL SEARCH. Author: Zoran Cica and Aleksandra Smiljanic Publisher/Conf . : IEEE Workshop on High Performance Switching and Routing, HPSR 2009 Speaker: Han-Jhen Guo Date: 2009.09.16. OUTLINE. Parallelized Frugal Lookup (PFL) Algorithm Idea Introduction
E N D
FRUGAL IP LOOKUP BASED ON A PARALLEL SEARCH Author: Zoran Cica and Aleksandra Smiljanic Publisher/Conf.: IEEE Workshop on High Performance Switching and Routing, HPSR 2009 Speaker: Han-Jhen Guo Date: 2009.09.16
OUTLINE • Parallelized Frugal Lookup (PFL) Algorithm • Idea Introduction • Overall Architecture • Level Module • Performance
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- IDEA INTRODUCTION • Based on the multibit trie • stride = 8 → IPv4 = 4 levels; IPv6 = 16 levels • the operation of a subtree in each level is performed in parallel • Subtree Prefix • the sequence of bits that leads to that subtree
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- IDEA INTRODUCTION • eg. search (IP = 110 100 000 010, stride = 3) • find the involved subtrees each level • find the matched prefix(es) • get the nexthop information of the longest matched prefix 0* (C) 110* (A) 110 110 100 110 100 00* (B) 110 100 000
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- IDEA INTRODUCTION • eg. add (IP = 110 100 000 000, len. = 8, stride = 3) • find the involved subtrees each level • update the subtree by prefix length of inserted prefix • update the nexthop information 110 110 100 110 100 00* (B) 110 100 000
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - OVERALL ARCHITECTURE perform the search and update at the corresponding levels selects the best solution found by the level modules holds the nexthop information
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - OVERALL ARCHITECTURE • eg. search (IP = 110 100 000 010, stride = 3) 0* (F) 1 0 110* (A) 0 110 1, 0, 1, 0 for i= 1…4 B 110 100 Read 110 100 00* (B) B 110 100 000
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - OVERALL ARCHITECTURE • eg. add (IP = 110 100 000 000, len. = 8, stride = 3) 0 1 0 110 B 0, 0, 1, 0 for i= 1…4 110 100 Write 110 100 00* (B) B 110 100 000
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- LEVEL MODULE • eg. search (IP = 110 100 000 010, stride = 3) • (level module)3 110001 110100 110110 110* (A) comparator 010 110001 100* (C) 110100 0* (E) 110100 00* (B) 110110 01* (D) 2 00000000000000 00000000001000 10100000000000 1 00010000000000 0 0 1 addr(B)
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- LEVEL MODULE • eg. add (IP = 110 100 000 000, len. = 8, stride = 3) • (level module)3 110001 110100 110110 110* (A) comparator 010 110001 100* (C) 110100 0* (E) 110100 00* (B) 110110 01* (D) 2 00000000000000 00000000001000 8 10000000000000 10100000000000 0 00010000000000 1 10100000000000 0 1 addr(B)
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- LEVEL MODULE • For saving memory (resources are not used for an empty subtree) • associating one counter to each register • for counting the number of prefixes in each subtree with subtree prefix to the register
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM- LEVEL MODULE • eg. add (IP = 110 100 000 000, len. = 8, stride = 3) • (level module)3 1 0 1 1 110001 110100 110110 110* (A) comparator 010 110001 100* (C) 110100 00* (B) 110110 01* (D) 2 00000000000000 00000000001000 8 00000000000000 0 00010000000000 1 00100000000000 0 1 addr(B)
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - PERFORMANCE • Software • Quartus II 8.1 • Chip • Altera Cyclone II and III families, for IPv4 and IPv6 addresses, respectively • Table • 32.5K ~ 134K entries
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - PERFORMANCE • PFL for IPv4 • Modified PFL for IPv4 • only the leaf nodes of the subtrees are memorized • about 50% memory off • lead to slower update speed (may update more than one leaf nodes with a update operation)
PARALLELIZED FRUGAL LOOKUP (PFL) ALGORITHM - PERFORMANCE • PFL for IPv6 • real-life table (1.6K entries): 60M lookups/sec • expand table: 45.37M lookups/sec
Thanks for your listening!