High-performance Pipelined Architecture for Tree-based IP lookup Engine on FPGA*

Similar documents
Architecture and Performance Models for Scalable IP Lookup Engines on FPGA*

Scalable and Dynamically Updatable Lookup Engine for Decision-trees on FPGA

Multi-core Implementation of Decomposition-based Packet Classification Algorithms 1

Scalable High Throughput and Power Efficient IP-Lookup on FPGA

SCALABLE HIGH-THROUGHPUT SRAM-BASED ARCHITECTURE FOR IP-LOOKUP USING FPGA. Hoang Le, Weirong Jiang, Viktor K. Prasanna

Memory-Efficient IPv4/v6 Lookup on FPGAs Using Distance-Bounded Path Compression

IP packet forwarding, or simply, IP-lookup, is a classic

An Architecture for IPv6 Lookup Using Parallel Index Generation Units

Large-scale Multi-flow Regular Expression Matching on FPGA*

High-throughput Online Hash Table on FPGA*

Disjoint Superposition for Reduction of Conjoined Prefixes in IP Lookup for Actual IPv6 Forwarding Tables

Dynamically Configurable Online Statistical Flow Feature Extractor on FPGA

Frugal IP Lookup Based on a Parallel Search

A Hybrid Approach to CAM-Based Longest Prefix Matching for IP Route Lookup

Decision Forest: A Scalable Architecture for Flexible Flow Matching on FPGA

FPGA Implementation of Lookup Algorithms

Towards Performance Modeling of 3D Memory Integrated FPGA Architectures

Routing Lookup Algorithm for IPv6 using Hash Tables

FlashTrie: Hash-based Prefix-Compressed Trie for IP Route Lookup Beyond 100Gbps

Packet Classification Using Dynamically Generated Decision Trees

High Performance Architecture for Flow-Table Lookup in SDN on FPGA

Energy Optimizations for FPGA-based 2-D FFT Architecture

Decision Forest: A Scalable Architecture for Flexible Flow Matching on FPGA

Growth of the Internet Network capacity: A scarce resource Good Service

Implementation of Boundary Cutting Algorithm Using Packet Classification

Parallel graph traversal for FPGA

Online Heavy Hitter Detector on FPGA

Scalable Name-Based Packet Forwarding: From Millions to Billions. Tian Song, Beijing Institute of Technology

Evaluating Energy Efficiency of Floating Point Matrix Multiplication on FPGAs

A Trie Merging Approach with Incremental Updates for Virtual Routers

Shape Shifting Tries for Faster IP Route Lookup

Dynamic Routing Tables Using Simple Balanced. Search Trees

LONGEST prefix matching (LPM) techniques have received

Journal of Network and Computer Applications

Switch and Router Design. Packet Processing Examples. Packet Processing Examples. Packet Processing Rate 12/14/2011

Shape Shifting Tries for Faster IP Route Lookup

CS 268: Route Lookup and Packet Classification

PUSHING THE LIMITS, A PERSPECTIVE ON ROUTER ARCHITECTURE CHALLENGES

Efficient Self-Reconfigurable Implementations Using On-Chip Memory

High Throughput Energy Efficient Parallel FFT Architecture on FPGAs

A Memory-Balanced Linear Pipeline Architecture for Trie-based IP Lookup

Power Efficient IP Lookup with Supernode Caching

Three Different Designs for Packet Classification

High-Performance Packet Classification on GPU

High Throughput Sketch Based Online Heavy Change Detection on FPGA

ISSN: [Bilani* et al.,7(2): February, 2018] Impact Factor: 5.164

Novel Hardware Architecture for Fast Address Lookups

Cisco Nexus 9508 Switch Power and Performance

Line-rate packet processing in hardware: the evolution towards 400 Gbit/s

Multiroot: Towards Memory-Ef cient Router Virtualization

Mainstream Computer System Components CPU Core 2 GHz GHz 4-way Superscaler (RISC or RISC-core (x86): Dynamic scheduling, Hardware speculation

Mainstream Computer System Components

A Novel Level-based IPv6 Routing Lookup Algorithm

Scalable Lookup Algorithms for IPv6

Optimizing Memory Performance for FPGA Implementation of PageRank

ISSN Vol.05,Issue.09, September-2017, Pages:

A Pipelined IP Address Lookup Module for 100 Gbps Line Rates and beyond

Problem Statement. Algorithm MinDPQ (contd.) Algorithm MinDPQ. Summary of Algorithm MinDPQ. Algorithm MinDPQ: Experimental Results.

Introduction to Partial Reconfiguration Methodology

Tree, Segment Table, and Route Bucket: A Multistage Algorithm for IPv6 Routing Table Lookup

Resource Efficient Multi Ported Sram Based Ternary Content Addressable Memory

A SCALABLE COMPUTING AND MEMORY ARCHITECTURE FOR VARIABLE BLOCK SIZE MOTION ESTIMATION ON FIELD-PROGRAMMABLE GATE ARRAYS. Theepan Moorthy and Andy Ye

CHAPTER 4 BLOOM FILTER

Binary Search Schemes for Fast IP Lookups

Don t Forget Memories A Case Study Redesigning a Pattern Counting ASIC Circuit for FPGAs

Scalable Ternary Content Addressable Memory Implementation Using FPGAs

Module 18: "TLP on Chip: HT/SMT and CMP" Lecture 39: "Simultaneous Multithreading and Chip-multiprocessing" TLP on Chip: HT/SMT and CMP SMT

Scalable Packet Classification on FPGA

Advanced Memory Organizations

FPGA Provides Speedy Data Compression for Hyperspectral Imagery

ECE697AA Lecture 20. Forwarding Tables

Multilevel Memories. Joel Emer Computer Science and Artificial Intelligence Laboratory Massachusetts Institute of Technology

Memory Systems IRAM. Principle of IRAM

Performance Evolution of DDR3 SDRAM Controller for Communication Networks

Novel Hardware Architecture for Fast Address Lookups

Frequency Domain Acceleration of Convolutional Neural Networks on CPU-FPGA Shared Memory System

Efficient hardware architecture for fast IP address lookup. Citation Proceedings - IEEE INFOCOM, 2002, v. 2, p

EE414 Embedded Systems Ch 5. Memory Part 2/2

CS419: Computer Networks. Lecture 6: March 7, 2005 Fast Address Lookup:

DESIGN AND IMPLEMENTATION OF SDR SDRAM CONTROLLER IN VHDL. Shruti Hathwalia* 1, Meenakshi Yadav 2

Last Lecture: Network Layer

Design and Implementation of a Packet Switched Dynamic Buffer Resize Router on FPGA Vivek Raj.K 1 Prasad Kumar 2 Shashi Raj.K 3

Design and Implementation of High Performance DDR3 SDRAM controller

Chapter 5A. Large and Fast: Exploiting Memory Hierarchy

Multi-dimensional Packet Classification on FPGA: 100 Gbps and Beyond

Parallel-Search Trie-based Scheme for Fast IP Lookup

Improving Reconfiguration Speed for Dynamic Circuit Specialization using Placement Constraints

A Configurable Multi-Ported Register File Architecture for Soft Processor Cores

Performance Modeling and Optimizations for Decomposition-based Large-scale Packet Classification on Multi-core Processors*

An Enhanced Bloom Filter for Longest Prefix Matching

Multiway Range Trees: Scalable IP Lookup with Fast Updates

AN EFFICIENT HYBRID ALGORITHM FOR MULTIDIMENSIONAL PACKET CLASSIFICATION

Overview. Implementing Gigabit Routers with NetFPGA. Basic Architectural Components of an IP Router. Per-packet processing in an IP Router

A Hybrid IP Lookup Architecture with Fast Updates

Performance of Multihop Communications Using Logical Topologies on Optical Torus Networks

2000 N + N <100N. When is: Find m to minimize: (N) m. N log 2 C 1. m + C 3 + C 2. ESE534: Computer Organization. Previously. Today.

Scalable Multi-Pipeline Architecture for High Performance Multi-Pattern String Matching

High-Performance Packet Classification on GPU

2. Link and Memory Architectures and Technologies

EECS150 - Digital Design Lecture 16 - Memory

Transcription:

High-performance Pipelined Architecture for Tree-based IP lookup Engine on FPGA* Yun Qu Ming Hsieh Dept. of Electrical Eng. University of Southern California Email: yunqu@usc.edu Viktor K. Prasanna Ming Hsieh Dept. of Electrical Eng. University of Southern California Email: prasanna@usc.edu Abstract IP lookup problem involves searching the input IP address for a matching IP prefix in the routing table. Hardwareaccelerated IP lookup engines based on various data structures such as balanced tree structures have been proposed over the years. In tree-based approaches, as the size of the tree increases, large off-chip memory has to be used. In addition, the linear growth of wire length with respect to the number of nodes at a level adversely affects the throughput. We present a tree-based IP lookup engine on FPGA which optimizes the pipeline with respect to scalability and throughput. Our solution has the following novel features: (1) We present a 2-dimensional fine-grained layout for the Processing Elements (s) using distributed RAM to reduce the maximum wire length. (2) We employ split-tree architecture for BRAM-based s at each tree level to improve the clock rate. (3) We use a realistic model of off-chip memory access and guarantee high throughput for the lookup process. Post place-and-route results show that, our tree-based IP lookup engine can achieve a throughput of 4 MLPS (million lookups per second) for any routing table containing 256 512 K IPv6 prefixes, while using 59% of the logic resources and 19% of the BRAM available on a state-of-the-art FPGA device. Index Terms Balanced trees, IP lookup, FPGA I. INTRODUCTION Internet Protocol address lookup (IP lookup) has been a classic problem for the past few decades. While many sophisticated solutions have been proposed over the years [1], [2], [3], [4], designing a practical and robust IP lookup engine remains a challenging problem due to longer prefix length, larger routing table and higher lookup rate required by the future Internet architecture. IPv4 with its 32-bit address length is running out of available addresses for the growing number of Internet-connected devices. IPv6 has been developed to overcome the longanticipated IPv4 address exhaustion by extending the address length to 128 bits. This increased length allows for a broader range of addressing hierarchies and a much larger number of addressable nodes. In the mean time, the routing table size of Internet s core routers continues to grow exponentially at a rate of 1.13 (IPv4) and 1.6 (IPv6) number of prefixes per year [5]. Furthermore, Internet link bandwidth is also increasing rapidly. Today s data center switches and core routers need to * This work is supported by the U.S. National Science Foundation under grant CCF-1116781; Equipment grant from Xilinx Inc. is gratefully acknowledged. handle data traffic at hundreds of gigabits per second (Gbps), which translates to lookup rates ranging from hundreds of million lookups per second (MLPS) to over a billion lookups per second (BLPS). The higher IP lookup rate in turn requires a higher (random) memory access rate to the routing table. Both the growing size of the routing tables and the increasing bandwidth of the network links make memory access a critical bottleneck for scalable IP lookup. State-of-the-art VLSI chips can be built with massive amount of on-chip computation and memory resources, as well as large number of I/O pins for off-chip memory accesses; Field-Programmable Gate Arrays (FPGAs), with their flexibility and reconfigurability, are especially suitable for accelerating network operations. On the other hand, it is still challenging to accelerate IP lookup on VLSI/FPGA due to many design-time and run-time issues. First, network operations, especially packet forwarding, usually have stringent requirements on scalability, throughput and energy consumption. Second, since future networks are expected to evolve and vary drastically in their structures and compositions, the performance of an IP lookup solution should not depend on any network-specific statistics; hence an IP lookup engine should be evaluated with its guaranteed worstcase performance. Third, the massive on-chip and off-chip resources provide many choices in designing the IP lookup engine, which can be optimized for diverse performance requirements with complex tradeoffs. Last but not the least, accurate and realistic models must be used during design time for fair estimation of the achievable performance, especially when off-chip resources such as DRAM or Reduced-Latency DRAM (RLDRAM) are utilized. With these challenges in mind, we present a FPGA-based architecture for balanced tree structures which achieves both scalability and high throughput. In summary: We present a deeply pipelined architecture for tree-based IP lookup by efficiently mapping the tree structure levelby-level onto various types of s. We map the first few tree levels onto s based on distributed RAM (distram) and propose a fine-grained 2-dimensional layout for each to reduce the maximum wire length. We map the following several tree levels onto s using Block RAM (BRAM) and employ split-tree architecture to improve the clock rate.

2 We use off-chip DRAM/RLDRAM to construct the s for the last few tree levels and guarantee high access rate independent of the access pattern based on realistic models. We present a high-throughput IP lookup engine (4 MLPS per dual-pipeline) whose performance does not depend on the features of the routing table. This engine sustains a routing table containing 256 512 K IPv6 prefixes, using 59% of the logic resources and 19% of the BRAM on FPGA; it achieves 6.6 power efficiency compared with TCAM [6]. The rest of the paper is organized as follows: Section II introduces the tree-based lookup engine and summarizes the related work. We present our architecture in Section III. We also detail the optimization techniques for s based on various types of memory in this section. Section IV provides the performance evaluation for tree structures on FPGA. Section V covers a specific implementation for tree-based IP lookup and Section VI concludes the paper. A. IPv4/v6 Lookup II. BACKGROUND AND RELATED WORK IP Lookup involves retrieving the routing information by finding the longest prefix match (LPM) of the destination IP address in the routing table. With IPv4, the prefix length can be up to 32 bits; with IPv6, the prefix length can be up to 64 bits, and in some cases even 128 bits. 1 A TCAM-based architecture for IPv4/v6 lookup is proposed in [7], [8]. The TCAM-based IP lookup architecture does not depend on prefix distribution, but it is expensive and powerhungry as well. As an alternative solution, algorithms for IPv6 lookup on FPGA have involved trie-based, hash-based and tree-based approaches. In trie-based approaches [9], [2], [], the path from the trie root to each match node in the trie represents the bit string of a prefix. In [2], compression is employed to remove redundancy in trie nodes. In [], only the next-hop bit map and the offset value are stored in each node. In general, triebased lookup requires memory bandwidth proportional to the prefix length. In hash-based approaches [11], [12], [13], [1], hash functions or bloom filters are used to improve memory efficiency. In particular, the Concise Lookup Tables (CoLT) [3] is a unified hash table-based architecture which handles both IPv4 and IPv6 lookups simultaneously. The FlashTrie [1] proposes a hash-based trie architecture for both high lookup rate and large IPv4 and IPv6 routing tables. However, these architectures provide solutions under various high-level assumptions on hardware resource and prefix distribution; it is difficult to scale up their performance for larger routing table or longer prefix length (e.g. 64 or 128-bit IPv6) given more available resources. 1 The IPv6 Addressing Architecture (RFC 4291) specifies IPv6 unicast address to consist of a (64-bit) subnet prefix followed by a (64-bit) interface ID. However, an IPv4-embedded IPv6 address can have a longer-than-64 bits routing prefix (RFC 652). B. Tree Structures A classic search problem is to find or insert a key into an ordered list [14]. This problem can be described as follows: given an ordered set of N keys a, a 1,..., a N 1, where a a 1... a N 1, an input b is to be inserted into the correct position of the sequence such that a k 1 b a k, where k = 1, 2,..., N 1. A general search tree structure keeps single or multiple keys in each node, where each node can be linked to multiple children. In the previous example, a, a 1,..., a N 1 can be used as keys to construct a search tree. The input (b) is compared against the values of keys inside a tree node, and any node in the data structure can be reached by starting at root node and repeatedly following the results of key comparisons. As a result, the input can be efficiently searched inside the tree level-by-level. The search tree is balanced when the heights of the left and right subtrees of each node never differ by more than 1. For any set of N nodes, the height of a balanced tree is at most log m N, where m is the degree of the tree [15], [16]. This leads to a search time of O(log m N). C. Tree-based IP Lookup on FPGA A dual-pipeline architecture on FPGA for IP lookup problem using binary search tree is introduced in [17]. In their architecture, each tree level constructed on the prefix set is mapped onto a single pipeline stage on FPGA with 2 n s, where n is the stage number. Dual-port on-chip memory access is used to achieve a throughput of 324 MLPS (million lookups per second) or a clock rate of 162 MHz on Virtex-4 devices. Although off-chip SRAM is explored to improve the scalability, the long wires connecting a large number of s and I/O pins become the throughput bottleneck when the tree becomes large. Range trees have been proposed as efficient and robust data structures for storing and searching routing tables [18]. To construct a range tree from the routing table, each routing prefix is first represented as a prefix range in the address space. Then, all pairs of overlapping prefix ranges are flattened to produce a set of non-intersecting subranges. The range tree is constructed of the subrange boundaries. In [19], IP lookup is performed using a multi-way range tree algorithm, which achieves a worst-case search and update time of O(log N). In [2], the subranges are organized in a B- tree data structure for efficient lookup and dynamic update. The range tree data-structure is extended in [21] to support both LPM and incremental updates. [22] introduces a recursive balanced multi-way range tree. Although range-trees have been widely used for the classic IP lookup problem, achieving high throughput and fast clock rate on hardware is still challenging for large routing tables due to long wires connecting large memory. Besides range trees, another tree-based IP lookup architecture is developed in [4], where specialized prefix matching and prefix partitioning are employed to minimize the total memory requirement. Their architecture can support a large

3 routing table of 33 K IPv6 prefixes on FPGA; it can achieve a throughput of 39 MLPS and 195 MHz clock rate. As we can see, dual-pipeline designs using dual-port memory are commonly used on FPGA to double the throughput performance with respect to the maximum achievable clock rate [17], [4]. Since the memory and I/O banks are usually linearly aligned on FPGA [23], for large IP routing table using large amount of on-chip and off-chip memory, the length of the wires connecting a large number of components grows rapidly, which in turn limits the maximum clock rate [24]. III. ARCHITECTURE We adopt the range search-based approach discussed in Section II-C as the basis of our IP lookup architecture on FPGA [18], [19], [2], [22]. All prefixes are first translated into non-overlapping subranges; the subrange boundaries are used to construct a balanced range tree (BRTree). On average, each routing prefix can be defined by at least one and at most two subrange boundaries (SB), plus one next-hop information (NHI). For each input IP address, the lookup engine searches the BRTree for the subrange where the input address is located. Each subrange is identified by an NHI stored in a leaf node. A large (leaf) node may store multiple subrange boundaries and NHIs. We choose BRTree for implementation on FPGA because for a given routing table size, the lookup latency and the throughput performance of the BRTree do not depend on the routing table features such as the number of overlapping prefixes or the average length of prefixes. The main challenges of mapping a large BRTree onto FPGA are as follows: Scalability: The number of BRTree nodes increases exponentially with each additional tree level. For limited on-chip resources, only a limited number of tree levels can use on-chip resources, which restricts the scalability of the architecture. High throughput: When a large amount of memory are to be utilized, long wires connecting memory modules become the clock rate bottleneck, which in turn limits the throughput. When the routing table size becomes larger, we use offchip memory to support large routing tables. We choose DRAM/RLDRAM as the off-chip memory due to its low power and price per bit. In this section, we first present the overall pipeline architecture in Section III-A. Then we present optimization techniques to improve throughput for distram-based s and BRAMbased s in Section III-B and Section III-C, respectively. To achieve scalability for the pipeline architecture, we use off-chip DRAM/RLDRAM in Section III-D and show how to sustain high throughput for the pipeline architecture. A. Overall Architecture The overall pipeline architecture is shown in Figure 1. Each tree level is mapped onto a single or multiple s; each has its own designated memory modules. We configure the memory module to be dual-port, therefore in each clock cycle Pipeline on FPGA (distram) p 1 s (BRAM) p 2 s Off-chip memory (off-chip DRAM) Figure 1: Overall Architecture Table I: ory hierarchy p 3 s ory type distram BRAM off-chip DRAM No. tree levels l 1 l 2 l 3 No. of s p 1 p 2 p 3 two inputs are fed into the dual-pipeline architecture. As the tree grows, we use various types of memory in different s as shown in Table I: The top l 1 tree levels are mapped onto p 1 s, while each one of the p 1 s uses distram. The middle l 2 tree levels are mapped onto p 2 s, each using BRAM. The bottom l 3 tree levels are mapped onto p 3 s, each using off-chip DRAM to achieve better scalability. The underlying reason of this organization is that: distram is based on a limited number of slice Look Up Tables (LUTs), and it has the smallest total size but the lowest delay, while off-chip DRAM has the largest size but the longest delay and limited bandwidth; compared with distram and DRAM, BRAM offers the largest bandwidth and moderate size. As the number of tree levels increases, the memory size required for each tree level also increases; a scalable architecture should accommodate this requirement. In the case of a binary BRTree, the pipelined architecture in Figure 1 can support 2 the routing table size with each additional off-chip memory stage, while taking only a constant number of additional I/O pins per off-chip memory stage 2. By utilizing multiple off-chip memory stages per pipeline and multiple memory buses per stage, the routing table size can be scaled up significantly. Therefore the pipelined BRTree architecture in Figure 1 provides a scalable solution to IPv4/v6 lookup. The main difference between our architecture and the architectures introduced in [17], [24] is that in our architecture, each tree level can be mapped onto several s, each having multiple pipeline stages. Search in each tree level can take multiple clock cycles to complete in our architecture; the architectures mentioned in [17], [24], however, strictly enforce the delay per tree level to be exactly one clock cycle. As a result, our design achieves better clock rate and throughput. 2 For BRTree with a larger degree, the pipelined architecture can support even larger routing table size with each additional off-chip memory stage.

Comparator B Comparator A 4 Level k 1 1 CU Dual-port distram/bram Level k 1 Level k 1 + 1 CU IP_in_a Comparison Unit IP_out_a Level k 1 + 2 CU CU addr_in_a addr_in_b IP_in_b addr_a_reg data_a data_b addr_b_reg addr_out_a addr_out_b IP_out_b Figure 2: 2-dimensional layout starting at level k 1 B. distram-based 1) 2-dimensional layout: Each distram-based consists of a multi-stage Comparison Unit (CU) and a single or multiple distram modules. At the top (k 1 1) BRTree levels ( < k 1 l 1 ), since the memory size required for each level is relatively small and can be fit in a single distram module, each BRTree level is mapped onto a CU along with one distram module. When the tree grows larger ( k 1 levels), more memory modules need to be used for a single BRTree level, where the wire length connecting those modules also increases. We show a 2-dimensional layout in Figure 2 to improve the clock rate: The distram modules are arranged in a 2-dimensional array. The CU is located in the center of the 2-dimensional array. As shown in Figure 2, each circle represents a tree node. The black solid arrows indicate the node access order in the tree structure. All the tree nodes inside a specific dotted block are stored in a single distram module. Specifically, Figure 2 shows an example of a lookup process; the grey nodes signify the nodes used for comparison with the input, while the distram modules in grey indicate the corresponding activated distram modules. The advantages include: A tree level using a large amount of distram is mapped onto a 2-dimensional array that can be easily fit on FPGA. Initially the wire length grows at a rate of 2 in the BRTree structure, while with the 2-dimensional layout, the maximum wire length grows at a rate of 2 for each additional BRTree level. For each of the tree levels from level k 1 to level (l 2 1) with the 2-dimensional layout, only one distram module is accessed by the CU during run-time, while others can be deactivated to save energy. The 2-dimensional layout is only done when the tree grows beyond a sufficient depth (k 1 ); the value of k 1 will be decided later in Section IV. 2) CU organization: To achieve high clock rate, we divide each CU further into multiple stages. As a result, a 3-stage Figure 3: Organization of distram/bram-based Table II: Types of split-tree architecture (N: number of nodes) Type Wire No. of s in Example length each tree level 1, x k2, x k2 +1, x k2 +2,... I ( O(N) ) O(1) 1, 1, 1, 1,... II O N O(log N) 1, 2, 3, 4,... log N III O(1) O(N) 1, 2, 4, 8,... dual-pipeline architecture consisting of 3 register groups is constructed for each CU as shown in Figure 3. The memory addresses for the two inputs are provided to the memory after the first pipeline register group; the keys are fed into the comparators in the next stage, where the comparison results are combined with the memory address. The data paths of pass-by signals are also included; all control signals have been omitted for simplicity. C. BRAM-based Level l 1 to level (l 1 +l 2 1) of the BRTree are mapped onto BRAM-based s. When the tree grows larger, more BRAM modules need to be used for a single BRTree level; the wire length also increases. We propose a split-tree architecture to improve the clock rate: When a large amount of BRAM blocks is to be used (starting from level k 2, l 1 < k 2 l 2 ), instead of mapping each BRTree level onto a single, we split the set of nodes in this level onto multiple subsets and use one for each subset. In total, x i s are used for level i of the BRTree, where i = k 2, k 2 + 1,..., and x i = p 2. i The number of s in a specific tree level (x i ) is to be determined later. In a specific tree level that has been split, each is designed to have its own designated memory module. All the s in a specific tree level are locally connected and linearly aligned to be efficiently mapped onto FPGA. Only one performs key comparison instructed by the previous tree levels, while other s in the same level forward data on to the next without key comparison. We identify three types of split-tree architecture as shown in Table II. For instance, let M denote the total memory required

rows 5 for level k 2 of the BRTree. In Type-II split-tree architecture, level k 2 is split into x k2 = 2 s, each having a memory size of M 2. Level (k 2 + 1) is split into x k2+1 = 3 s. For a specific tree level, one of the s performs key comparison; the other simply receives data from its previous and passes data directly to the next. We have the following observations: Type-I split-tree architecture is exactly the original mapping without any optimization, while Type-III split-tree architecture results in a linear array of s. At any particular time, all s except those who need to perform key comparisons can turn off their memory modules to save energy. The split is only done when the tree grows to a sufficient depth (k 2 ); the value of k 2 which gives the best timing performance will be shown later in Section IV. We will also study the tradeoffs for various types of split-tree architecture in Section IV. For BRAM-based s, the internal organization of each CU is similar to that of distram-based s as shown in Figure 3, except that dual-port BRAM is utilized. D. DRAM-based s 1) Timing constraints: We use DDR3 DRAM as an example to illustrate our ideas. The same methodology and analysis presented in this section can be easily extended to other types of DRAM including RLDRAM. For the sake of completeness, we briefly discuss DRAM timing issue, which leads to our data layout optimization. The memory interface on FPGA for a single DRAM bus takes 6 FPGA I/O pins; two DRAM chips can be connected to this DRAM bus (dual-rank). A DRAM chip is organized in multiple (usually 8) banks, each composed of a large array of (usually 8K) rows and (usually 1K) columns. A fixed number of data bits (usually 16; the bus width) are located at any valid [bank, row, column] address. A sense amplifier is connected to each row via long wires. Every DRAM read or write can initiate a burst of 8 transfers of sequential data, which leads to 128 bits per access. The following major parameters define the DDR3 DRAM access performance with various activation scenarios [25], [26]: 3 t CCD t RRD t RC t F AW t RCD CL Minimum time between successive accesses to the same bank and row, 5 ns. Minimum time between successive row activations to different banks, 8 ns. Minimum time between issuing two successive row activations to the same bank, 5 ns. Minimum time to perform 4 row activations in different banks, 4 ns. Minimum time to open/activate a row in a bank, 14 ns. Delay from when the column address is provided to when the data appears on the data pins, ns. 3 Since we only read data from DRAM, we only focus on the read access model in this paper. Chip --Bank 2 z 1 ACT Chip Chip 1 Chip --Bank 1 y 1 READ Bank Bank 1 Bank 2 Bank 7 Bank Bank 1 Bank 2 Chip --Bank columns x 1 sense amps PRE Bank 7 5 ns Same copy of data sense amps MUX To I/O pins Chip 1--Bank 2 ACT Chip 1--Bank 1 READ Figure 4: Data layout t RC accessing Chip t FAW accessing Chip 1 t FAW Chip 1--Bank sense amps > t RRD 8 ns Figure 5: Timing In addition to the timing constraints mentioned above, the DDR3 controller must issue at least 8192 refresh commands every 32 ms in the worst case [25]. Since all accesses to the memory bank are delayed during the refresh process, this leads to an access rate loss of 5% [26]. Usually a single read command is issued by the memory controller for each row access. 4 Therefore the number of successive accesses to the same row of a bank is assumed to be 1; t CCD can be ignored due to the random access pattern. For successive row activations to the same bank, t F AW dominates the term t RRD. Hence the read access rate is mainly limited by t RC and t F AW. We will use t RCD and CL later to optimize the internal organization of CUs. 2) Data replication: As shown in Figure 4 and Figure 5, we use the data replication technique to improve read access rate: We replicate the same data in all the 8 banks of a DRAM chip, which allows successive accesses always to be performed to a different bank in a round-robin fashion. This technique can remove t RC from being a timing constraint and increase the access rate to Maccs/s (or 95 Maccs/s considering refresh operations). 4 More reads per row access enforces the DRAM to work in Fast Page Mode (FPM), which leads to even better access rate. PRE

Comparator B Comparator A 6 Table III: Guaranteed access rate for a DRAM-based Pipeline clock rate (MHz) 95 95 19 19 285 No. of data copies 16 32 48 Access rate (Maccs/sec) 19 19 38 38 57 No. of DRAM buses 1 2 3 No. of used I/O pins 6 12 18 Table IV: Virtex 6 XC6VLX76 FFG176-2 FPGA [23] Configurable Logic Blocks (CLBs) BRAM User Slices Distributed RAM (Kb) (Kb) I/O pins 118,56 8,28 25,92 1,2 Off-chip memory (DDR3 DRAM, RLDRAM, etc.) 4 IP_in_a addr_in_a addr_in_b IP_in_b Comparison Unit IP_out_a addr_out_a addr_out_b IP_out_b Clock rate (MHz) 3 2 32-FL 64-FL 32 64 3 5 7 9 11 Figure 7: Achievable clock rate of distram-based for various key widths (FL: 2-dimensional fine-grained layout) Latency-hiding stages Figure 6: Organization of using off-chip DRAM We further replicate the same copy of data in two chips connecting to the same DRAM bus. Two chips can take turns to provide data to the FPGA device; although the access rate is limited by Maccs/s for a single DRAM chip, data can be fetched every 5 ns via one dualrank DRAM bus. Hence an access rate of 2 Maccs/s (or 19 Maccs/s considering refresh operations) can be achieved. The relationship between the on-chip pipeline clock rate and the data replication in off-chip DRAM is shown in Table III. 3) CU organization: Figure 6 shows the organization of the CU for s based on off-chip memory. Since the delay between sending out the address signals to off-chip memory and retrieving the valid data back into the can be long (t RCD + CL), multiple stages are used to compensate the offchip DRAM access latency as shown in Figure 6. The number of latency-hiding stages will be decided in Section IV. A. Experimental Setup IV. RFORMANCE EVALUATION We conduct experiments using Xilinx ISE Design Suite 14.1, targeting the Virtex 6 XC6VLX76 FFG176-2 FPGA [23]. This device has moderate BRAM and can be configured to realize large amount of distram compared with other FPGAs in this family as shown in Table IV. All the reported results in this section use post place-and-route results for clock rate and resource consumption. The data width of the keys (key width) in the BRTree is chosen to be 32 and 64, which covers the input network address in IP lookup problem. We use the following design procedure in this section to identify the parameters mentioned in Section III: 1) First we only implement distram-based s and decide the number of tree levels to be mapped onto distrambased s. We use 2-dimensional fine-grained layout when a large number of distram modules are used. 2) With the distram-based s already implemented, we decide the number of tree levels to be mapped onto BRAM-based s; we use split-level architecture for BRAM-based s. 3) With the guaranteed off-chip DRAM access rate as discussed in Section III-D2, we map the last few levels of the tree onto DRAM-based s. B. Parameter Optimization The parameters (l 1, l 2, l 3, p 1, p 2, p 3, k 1, k 2 ) are optimized with respect to the following metrics: Achievable clock rate: maximum clock rate a specific design can run at after place-and-route process. Resource consumption: on-chip and off-chip resources consumed including logic, memory and I/O pins. 5 Now we optimize distram-based s, BRAM-based s and DRAM-based s individually. 1) distram-based : We show the achievable clock rate in Figure 7; specifically, we use solid lines for 2-dimensional layout implementation, compared with the dotted lines where no optimization is explored. The resource consumption of all distram-based s is shown in Figure 8. In these two figures, we vary both the key width and the number of tree levels to be mapped to distram-based s (l 1 ). We have the following observations: Internally, distram is based on 6-input LUTs, which can support efficient access to a 64-entry table which stores the keys. Therefore level 6 with a table of 2 6 entries, and 5 For logic resources, we mainly report the number of used slice and slice LUTs, since these two components are the most important resources in a logic slice.

7 Used slice reg. (K) 15 5 reg.,32 reg.,64 LUTs,32 LUTs,64 3 5 7 9 3 2 Figure 8: Resource consumption of distram-based for various key widths all levels above it can be mapped onto distram-based s without adversely affecting the clock rate. We are still able to sustain high clock rate ( 3 MHz) when l 1 = p 1 7 in Figure 7 even when wider keys are used in the BRTree. For tree levels under the seventh level, the table that stores keys is deeper than 64; in this case, multiple 6-input LUTbased distram modules need to be used instead of only one. Without 2-dimensional fine-grained layout, due to complex address decoding and wire routing, the clock rate deteriorates dramatically (< 2 MHz) when l 1 = p 1 > 7 in Figure 7. Using the 2-dimensional layout starting from k 1 = 6, we improve the clock rate to > 2 MHz for l 1 = p 1 > 7. In order to achieve very high clock rate ( 25 MHz), the value of l 1 and p 1 is chosen to be 9. In Figure 8, the resource consumption increases linearly with respect to the key width. The distram-based s for l 1 = p 1 = 9 consume under 52% of total logic resources for all key widths. Logic resource consumption grows exponentially with respect to the number of tree levels mapped onto distrambased s. 2) BRAM-based : Given l 1 = p 1 = 9 above, we first choose the value of k 2. Then we aim to choose the type of the split-tree architecture and determine the values of l 2 and p 2. As shown in Table V, each BRAM module can be arranged in various key widths with various depths but fixed maximum size (36 Kb). For instance, a data width of 64 bit limits each BRAM to have a maximum depth of 512 entries, while the th tree level (level 9) requires a memory depth of exactly 512 entries. Using the same approach discussed in Section IV-B1 where the value of l 1 and p 1 is determined, we split level and all tree levels below level, before the clock rate can drop dramatically. We come to the following conclusion: the value of k 2, as shown in Table V, depends on the data width of the keys in the search tree. Using the values of k 2 in Table V to split tree levels for various key widths, we show the achievable clock rate and processing delay in Figure 9. The tree levels above and including level 6 are all implemented using distram- Used slice LUTs (K) Table V: RAMB36 module organization Key width BRAM configuration k 2 IPv4 32 1K 32 11 IPv6 64 512 64 based s. When calculating the processing delay of the pipeline consisting of both distram-based s and BRAMbased s, we assume all distram-based s can run at the same clock rate as the BRAM-based s. We also show the resource consumption in Figure for BRAM-based s with respect to the number of tree levels. We have the following observations: A pipeline architecture without split (Type-I) can run at most 12 MHz clock rate, but the processing delay is also the minimum among all three types of split-tree architecture. We can sustain > 27 MHz clock rate using Type- III split-tree architecture, which guarantees a very high throughput for BRTree levels up to 15, while the processing delay is increasing exponentially with respect to the number of tree levels. For key widths of 32 and 64, Type-II split-tree architecture supports > 2 MHz clock rate with a little increase in processing delay. Therefore: We choose Type-II splittree architecture when designing the entire pipeline. Since the BRAM is aligned linearly on FPGA in multiple lines, the single dual-pipeline architecture should also be placed next to BRAM lines linearly. For instance, since the FPGA shown in Table IV has BRAM lines, one dual-pipeline architecture can use at most 2 lines of the total BRAM available on-chip without significantly affecting the achievable clock rate. Using 36 Kb BRAM, 16 BRTree levels for key width of 32 and 15 BRTree levels for key width of 64, both consume only < 19% of total BRAM on-chip (two lines of BRAM). This analysis leads to the following conclusion: For key widths of 32 and 64, the values of l 2 are chosen to be under 16 and 15, respectively, while the value of p 2 is under 21 in Type-II split-tree architecture. The resource consumption increases linearly with respect to the number of s that are used as shown in Figure. 3) DRAM-based : We conservatively estimate the clock rate of the entire pipeline architecture implementation on FPGA to be around 28 MHz. Therefore, in order to remove the memory access rate as a performance bottleneck, we use 3 dual-rank DRAM buses for the same data copy in a bank (in total 3 2 8 = 48 data copies) in our design for one DRAM-based. In addition, as discussed in Section IV-B3, 7 latency-hiding stages have to be used in one to compensate the extra latency (t RCD +CL 24 ns) introduced by each offchip DRAM access. Considering the large amount of resource overhead introduced by the off-chip DRAM access, we choose not to map the last few levels individually onto DRAM-based s; instead, we map multiple levels onto a small number of DRAM-based

8 Clock rate (MHz) 3 2 32-I 64-I 32-II 64-II 32-III 64-III Used slice reg. (K) 2 15 5 reg.,32 reg.,64 LUTs,32 LUTs,64 2 15 5 Used slice LUTs (K) 11 12 13 14 15 11 12 13 14 15 (a) Achievable clock rate (a) Logic resources 8 8 Delay (ns) 6 4 2 32-I 64-I 32-II 64-II 32-III 64-III Used BRAM 6 4 2 32 64 11 12 13 14 15 (b) Delay of the pipeline Figure 9: Clock rate and delay for BRAM-based s at various key widths (e.g. 32-I means Type-I split-tree architecture for 32-bit key width, etc.) Table VI: Performance of 3 DRAM-based s at various key widths Key width Clock rate (MHz) Slice reg. Slice LUTs IPv4 32 291.85 84 942 IPv6 64 248.68 1476 1716 s. This can be done by merging the last few levels onto new levels with a higher node degree. We have the following observations: Virtex 6 XC6VLX76 FFG176-2 FPGA has 4 I/O bank lines aligned in the same direction as BRAM lines, each having 6, 9, 9, 6 4-pin I/O banks. Since the I/O pins to be utilized should be allocated locally close to the occupied BRAM line to achieve better clock rate, at most 15 banks (6 pins) can be used for a single dual-pipeline design. Therefore the maximum number of DRAM-based s is limited by p 3 6 18 = 3. Considering the pins used for other inputs and outputs, we choose p 3 = 3. Since each DRAM access brings in 128 bits, we choose the values of l 3 to be 4 and 2 for key widths of 32 and 64, respectively. For instance, one 128-bit DRAM access can provide data for 4 BRTree nodes of 32-bit key width, meaning at least 2 levels can be merged together. 6 The post place-and-route results in Table VI show that a pipeline consisting of 3 DRAM-based s can run at 6 Generally it is not easy to convert several BRTree levels into a multi-way tree level, unless the degree of the multi-way tree is the power of 2. 11 12 13 14 15 (b) ory (BRAM) Figure : Resource consumption for BRAM-based s at various key widths Table VII: Design Parameters for the entire pipeline architecture l 1 p 1 l 2 p 2 l 3 p 3 k 1 k 2 9 9 6 21 3 3 6 > 24 MHz clock rate, and utilize under 5% of total I/O pins for DRAM buses. V. TREE-BASED IP LOOKUP After we optimized the design parameters in the previous section, now we combine the designs of distram-based s, BRAM-based s and s based on off-chip memory together using Xilinx ISE Design Suite 14.1 PlanAhead Tool and measure the overall performance of the entire design. The BRTree is constructed with key width of 64 bits to accommodate IPv6 lookup. We map the tree structure onto Virtex 6 XC6VLX76 FFG176-2 FPGA [23], following the design procedure discussed in Section IV. A summary of the optimized design parameters is shown in Table VII. The following four metrics are used to measure the performance of our pipeline architecture: Throughput (MLPS): product of achievable clock rate and the number of pipelines. Routing table size: minimum number of IPv6 prefixes the pipeline architecture can support. Resource consumption: sum of the resources used for all s, including both on-chip and off-chip resources. Energy efficiency: total energy consumed by the lookup engine normalized by routing table size and throughput.

9 6 6 18 29 Throughput (MLPS) 4 2 Table size Throughput 13 14 15 16 17 18 No. of BST levels 4 2 No. of IPv6 prefixes (K) Used slice reg. (K) 17 16 15 12 14 16 18 No. of BST levels Reg. LUTs 28 27 26 Used slice LUTs (K) Figure 11: Throughput and routing table size Figure 12: Logic resource consumption A. Throughput We show the achievable throughput with respect to number of tree levels for a single dual-pipeline architecture in Figure 11. As can be seen, a throughput of 4 MLPS (2 MHz clock rate) can be sustained for BRTree with 18 levels. The throughput bottleneck is still from BRAM-based s. B. Routing table size We also show the ranges of achievable routing table size for various number of BRTree levels in Figure 11. As can be seen, the routing table size that a single dual-pipeline architecture can support increases exponentially with respect to the number of BRTree levels. Since each subrange boundary corresponds to at least one and at most two IP prefixes, and the balanced BRTree consists of 18 levels, our pipeline architecture can support any routing table containing 256 K 512 K IPv6 prefixes. C. Resource Consumption The BRAM consumption for the BRTree of 18 levels is 468 Kb (19% of total BRAM), while 637 I/O pins (53% of total pins) are used in the entire dual-pipeline design. After careful floorplanning, the entire dual-pipeline design only consumes two lines of BRAM and three lines of I/O pins. The logic resource consumption with respect to the number of BRTree levels is shown in Figure 12. As can be seen: Only a small amount of logic resources (19% of total slice and 59% total slice LUTs) are used in a dual-pipeline design for one BRTree of 18 levels. Logic resource consumption increases exponentially with respect to the number of tree levels due to the split-level architecture, until DRAM-based s are used. D. Power Dissipation and Energy Efficiency As we maintain a high clock rate for the pipeline architecture, one concern is that the power consumption can be relatively high, compared with a pipeline design running at a low clock rate. To save on-chip power, we shut off the memory module when it is not being accessed as discussed in Section III. Xilinx ISE Design Suite 14.1 XPower Analyzer is used to estimate the worst-case on-chip power of one dualpipeline design specified in Table VII. The off-chip power is calculated by using [27], assuming 9 dual-rank DDR3 DRAM Power (W) 2 15 5 DDR3 I/O BRAM signals logic clock leakage -distram -BRAM -DRAM off-chip Total Figure 13: Power dissipation buses are connected to the I/O pins of the FPGA device. Since one 8 16 dual-rank DDR3 DRAM bus consumes a power of 677 mw, the total off-chip power for a single dual-pipeline architecture is estimated to be around 6.9 W. In Figure 13, we show the power dissipation of the pipeline architecture; the entire design of the single dual-pipeline is based on the design parameters shown in Table VII. Mapped from a 18-level BRTree, this pipeline architecture can support a routing table with at least 256 K IPv6 prefixes. We also show the power dissipation of s using distram, BRAM and offchip DRAM separately, excluding leakage power. As can be seen: The total power consumption for a BRTree with 18 levels is under 2 W. Excluding leakage power, which is a static power that we have no control on, the off-chip dual-rank DRAM buses along with the off-chip DDR3 chips consume the most power (33% of total power). 14% of total power is spent on I/O interface; 17% of total power is spent on BRAM. To make a fair comparison of our energy consumption with other hardware-based approaches for IPv6 lookup, we define the energy efficiency per lookup operation as: η Energy Consumption per Lookup T hroughput Routing T able Size This metric captures the energy consumption normalized by throughput and routing table size; a small value of η is desirable. We show the power efficiency of our dual-pipeline architecture for 18-level BRTree in Table VIII. Note that (1)

Table VIII: Power efficiency Solution Our design TCAM Throughput (MLPS) 4 36 IPv6 prefixes (K) 256 24 Power (W) 18.74 - Delay per Lookup (ns) 282. 1843. [6] Energy Consumption (µj) 5.28 127.55 [6] η (nj/mlps).52.346 most of the prior designs [17], [1], [28] do not focus on optimizing power efficiency. Also, our approach does not exploit statistics of the routing table such as average length of the prefixes, while the trie-based and hash-based approaches optimize performance based on the features of the routing table. Thus, we compare our design with the TCAM solution only 7. The TCAM results are based on a state-of-the-art 2 Mb TCAM [29], assuming 4 chips are used in parallel to boost the size and bandwidth performance [8]. As can be seen, we achieve better power efficiency (6.6 ) than TCAM. For our pipeline architecture, we have considered the power spent on FPGA, off-chip DRAM and I/O interfaces. VI. CONCLUSION AND FUTURE WORK In this paper we presented a high-performance pipeline architecture on FPGA as a scalable solution to IP lookup problem. We optimized the pipeline architecture using various hardware resources and an accurate model of off-chip memory access. We studied the tradeoffs between design parameters and system requirements in detail. We have used careful floorplanning and considered the actual layout on FPGA for tree structures. In the future, we will explore efficient mapping from other data structures onto hardware for network applications. REFERENCES [1] M. Bando and J. Chao, FlashTrie: Hash-based Prefix-Compressed Trie for IP Route Lookup Beyond Gbps, in Proc. of the 29th conference on Information Communications, ser. INFOCOM, 2, pp. 1 9. [2] M. Hanna, S. Cho, and R. Melhem, A Novel Scalable IPv6 Lookup Scheme using Compressed Pipelined Tries, in Proc. of the th international IFIP TC 6 conference on Networking - Volume Part I, ser. NETWORKING 11, 211, pp. 46 419. [3] F. Pong and N.-F. Tzeng, Concise Lookup Tables for IPv4 and IPv6 Longest Prefix Matching in Scalable Routers, IEEE/ACM Transactions on Networking, vol. 2, no. 3, pp. 729 741, 212. [4] H. Le and V. Prasanna, Scalable Tree-based Architectures for IPv4/v6 Lookup using Prefix Partitioning, IEEE Transactions on Computers, vol. 61, no. 7, pp. 26 39, 212. [5] Growth of the BGP Table 1994 to Present, http://bgp.potaroo.net/, July 212. [6] B. Agrawal and T. Sherwood, Modeling TCAM Power for Next Generation Network Devices, in Proc. of IEEE International Symposium on Performance Analysis of Systems and Software, ser. ISPASS 6, 26, pp. 12 129. [7] F. Zane, G. Narlikar, and A. Basu, CoolCAMs: Power-efficient TCAMs for Forwarding Engines, in Proc. of 22nd Annual Joint Conference of the IEEE Computer and Communications, ser. INFOCOM 3, vol. 1, 23, pp. 42 52. [8] K. Zheng, C. Hu, H. Lu, and B. Liu, A TCAM-based Distributed Parallel IP Lookup Scheme and Performance Analysis, IEEE/ACM Transactions on Networking, vol. 14, no. 4, pp. 863 875, 26. [9] V. Srinivasan and G. Varghese, Fast Address Lookups using Controlled Prefix Expansion, ACM Transactions on Computer Systems, vol. 17, pp. 1 4, 1999. [] K. Huang, G. Xie, Y. Li, and A. Liu, Offset Addressing Approach to ory-efficient IP Address Lookup, in Proc. of the 3th conference on Information Communications, ser. INFOCOM 11, 211, pp. 36 3. [11] H. Fadishei, M. S. Zamani, and M. Sabaei, A Novel Reconfigurable Hardware Architecture for IP Address Lookup, in Proc. of the 25 ACM symposium on Architecture for Networking and Communications Systems, ser. ANCS 5, 25, pp. 81 9. [12] R. Sangireddy, N. Futamura, S. Aluru, and A. K. Somani, Scalable, ory efficient, High-speed IP Lookup Algorithms, IEEE/ACM Transactions on Networking, vol. 13, no. 4, pp. 82 812, 25. [13] H. Song, M. Kodialam, F. Hao, and T. Lakshman, Scalable IP Lookups using Shape Graphs, in Proc. of 17th IEEE International Conference on Network Protocols, ser. ICNP 9, 29, pp. 73 82. [14] M. AdelsonVelskii and E. Landis, An Algorithm for the Organization of Information, 26. [15] D. E. Knuth, The art of computer programming, volume 3: (2nd ed.) sorting and searching, 1998. [16] R. Sedgewick, Left-Leaning Red-Black Tree, http://www.cs.princeton.edu/ rs/talks/llrb/llrb.pdf, September 28. [17] H. Le, W. Jiang, and V. Prasanna, Scalable High-throughput SRAMbased Architecture for IP-lookup using FPGA, in Proc. of 18th international conference on Field Programmable Logic and Applications, ser. FPL 8, 28, pp. 137 142. [18] B. Lampson, V. Srinivasan, and G. Varghese, IP Lookups using Multiway and Multicolumn Search, IEEE/ACM Transactions on Networking, vol. 7, no. 3, pp. 324 334, 1999. [19] P. Warkhede, S. Suri, and G. Varghese, Multiway Range Trees: Scalable IP Lookup with Fast Updates, Computer Networks, vol. 44, no. 3, pp. 289 33, 24. [2] H. Lu and S. Sahni, A B-Tree Dynamic Router-Table Design, IEEE Transactions on Computers, vol. 54, no. 7, pp. 813 824, 25. [21] I. Sourdis and S. Katamaneni, Longest Prefix Match and updates in Range Tries, in Proc. of IEEE international conference on Applicationspecific Systems, Architectures and Processors, ser. ASAP 11, 211, pp. 51 58. [22] P. Zhong, An IPv6 Address Lookup Algorithm based on Recursive Balanced Multi-way Range Trees with Efficient Search and Update, in Proc. of international conference on Computer Science and Service System, ser. CSSS 11, 211, pp. 259 263. [23] Virtex-6 FPGA Family, http://www.xilinx.com/products/virtex6. [24] D. Sheldon and F. Vahid, Don t Forget ories: A Case Study Redesigning a Pattern Counting ASIC Circuit for FPGAs, in Proc. of the 6th IEEE/ACM/IFIP international conference on hardware/software Codesign and System Synthesis, ser. CODES+ISSS 8, 28, pp. 155 16. [25] DDR3 SDRAM MT41J128M16-16 Meg x 16 x 8 Banks, http://www.micron.com/products/dram/ddr3-sdram, Micron Technology, Inc., 26. [26] G. Yuan and T. Aamodt, A Hybrid Analytical DRAM Performance Model, in Proc of the 36th annual international symposium on Computer architecture, 29. [27] DDR3 SDRAM System-Power Calculator, http://www.micron.com/products/support/power-calc. [28] Y.-H. E. Yang and V. K. Prasanna, High Throughput and Large Capacity Pipelined Dynamic Search Tree on FPGA, in Proc. of the 18th annual ACM/SIGDA international symposium on Field Programmable Gate Arrays, ser. FPGA, 2, pp. 83 92. [29] 2Mbit QUAD-Search Content Addressable ory, http://am.renesas.com/products/memory/tcam. 7 TCAM solution also does not depend on the routing table features.