of 27

Small Forwarding Tables for Fast Routing Lookups

Published on July 2018 | Categories: Documents | Downloads: 17 | Comments: 0



Presenter: Pr esenter: Shin, Byoungheon Byou ngheon

Introduction  Routing and Forwarding tables  Design goals and parameters  Data Structure  Performance measurements  Scaling  Conclusion 

Larger network size (Internet) and Faster network speed

IP routing lookup in software level ◦

…Possible? Most think software IP routing lookup cannot c annot come up with the speed of Gigabit network.


Local version of  routing table

Local version of  routing table

 Traditional implementations of routing tables use Patricia trees.

How about very small and fast forwarding table? ◦

More than 2MB

40,000 routing entries, 150-160KB size

Purpose ◦

Software IP routing lookup on the general purpose processors (Alpha 21164 333MHz, Pentium Pro 200MHz)

Routing table ◦

Determines next hop for IP datagrams Updated frequently (dynamic)

Forwarding table ◦

Local version of routing table Can be optimized for “lookup speed”

Goal ◦

Minimize lookup time Minimize two parameters: parameters: The number of memory of memory accesses during lookup The size of data structure

 The data structure: Need few instructions during lookup Keep the entities naturally aligned as much as possible to avoid expensive instructions and cumbersome bit-extraction operations

 The forwarding table

Binary tree covering all IP addresses

Rule of the longest match ◦

When several routing entries cover the same sa me IP address

Routing entry e1 is hidden by e2 for  addresses in the range r .

Forwarding table ◦

Representation of the binary tree spanned by all routing entries Prefix tree (trie) should be complete

 Three levels of the data structure

Level 1: 16 bits Level 2: 8 bits Level 3: 8 bits

Core result ◦

can represent a complete binary tree of height h using only one bit per possible leaf at depth h, plus one base index per 64 possible leaves, plus the information stored in the leaves.  The size of a tree in bytes with l leaves holding information of size d is:

2h-3 + b × 2h-6 + l × d  (b: size of a base index)

Level 1 ◦

Initial 16 bits of IP address: used for an index Depth is 16. (binary tree) 1 – 64K(216) children Leaves in depth 16: bit vector

Level 1 cont’d ◦

Heads: Heads: Nodes in depth 16 if existing Or, the lowest bit in the interval covered by that leaf is set. A bit in the bit vector: A one representing a root head A one representing a genuine head Zero which means this value is a member of a range covered by a leaf at a depth less than 16

Level 1 cont’d

Root head Genuine head

Level 1 cont’d ◦

Head information Root head: index to the level 2 chunk that represents the corresponding subtree Genuine head: index into the next-hop table Encoded in 16-bit pointers stored in an array 2 bits: the kind of pointer  14 bits: index into next-hop or index into an array

Level 1 cont’d ◦

Finding pointer groups An array of codewords of codewords as many as bit-masks An array of base of base indices, indices, one per four code words: to find a group of pointers Codeword: 10 bit value(r1, r2, …) + 6 bit offset(0,3,10, …)

Level 1 cont’d ◦

Maptable To find the correct pointer in the group of pointers Bit-masks are generated from a complete prefix tree, tree, not all combinations of the 16 bits are possible. Non-zero bit-mask of length 2n: combination of two bitmasks of length n or bit-mask with value 1

Level 1 cont’d ◦


Levels 2 and 3 ◦

Chunks: A chunk covers a subtree of height 8 and can contain at most 28=256 heads. 3 kinds of chunks 1-8 heads: the chunk is “sparse “sparse.” .” 9-64 heads: the chunk is “dense “dense.” .” 65-256 heads: the chunk is “very “very dense.” dense.”

Levels 2 and 3 cont’d ◦

Sparse: array of 8-bit indices of the heads Dense: just one base index for all 16 codewords ‘Dense and very dense’ chunks are searched analogously with the 1st level.

Growth limitations ◦

 The number of chunks of  chunks of each kind is limited to 214=16384.  The number of pointers of  pointers in levels 2 and 3 is limited by the size of base indices.  The number of distinct next-hops is limited to 214=16384. BUT, with small modifications, it can accommodate a large increase in number of  routing entries.

Many routing tables ◦

Collected through the

Very few. Searching one level takes 4 memory accesses.  Mostly less than 8 memory Internet (IPMA project) accesses

Lookup times ◦

Alpha 21164: at least 2.2 million lookups /sec Pentium Pro: at least 2.0 million lookups l ookups /sec

Forwarding table size

 Table building time

 The table is built during a single pass over all routing entries.

Larger addresses ◦

IPv6 possible inflating table size

Compact forwarding table ◦

Searched quickly to find the longest matching prefix.

Resides in the cache of general purpose CPUs.  Can scale to accommodate the growth in routing table size. 

 Thank you!

Sponsor Documents

Or use your account on DocShare.tips


Forgot your password?

Or register your new account on DocShare.tips


Lost your password? Please enter your email address. You will receive a link to create a new password.

Back to log-in