Scalable, memory efficient, high-speed IP lookup algorithms

  • Authors:
  • Rama Sangireddy;Natsuhiko Futamura;Srinivas Aluru;Arun K. Somani

  • Affiliations:
  • Department of Electrical Engineering, University of Texas at Dallas, Richardson, TX;Department of Computer Science and Engineering, Wright State University, Dayton, OH;Department of Electrical and Computer Engineering, Iowa State University, Ames, IA;Department of Electrical and Computer Engineering, Iowa State University, Ames, IA

  • Venue:
  • IEEE/ACM Transactions on Networking (TON)
  • Year:
  • 2005

Quantified Score

Hi-index 0.00

Visualization

Abstract

One of the central issues in router performance is IP address lookup based on longest prefix matching. IP address lookup algorithms can be evaluated on a number of metrics--lookup time, update time, memory usage, and to a less important extent, the time to construct the data structure used to support lookups and updates. Many of the existing methods are geared toward optimizing a specific metric, and do not scale well with the ever expanding routing tables and the forthcoming IPv6 where the IP addresses are 128 bits long. In contrast, our effort is directed at simultaneously optimizing multiple metrics and provide solutions that scale to IPv6, with its longer addresses and much larger routing tables. In this paper, we present two IP address lookup schemes-Elevator-Stairs algorithm and log W-Elevators algorithm. For a routing table with N prefixes, The Elevator-Stairs algorithm uses optimal O(N) memory, and achieves better lookup and update times than other methods with similar memory requirements. The logW-Elevators algorithm gives O(log W) lookup time, where is the length of an IP address, while improving upon update time and memory usage. Experimental results using the MAE-West router with 29 487 prefixes show that the Elevator-Stairs algorithm gives an average throughput of 15.7 Million lookups per second (Mlps) using 459 KB of memory, and the logW-Elevators algorithm gives an average throughput of 21.41 Mlps with a memory usage of 1259 KB.