Preface |
|
xiii | |
Acknowledgments |
|
xv | |
About the Author |
|
xvii | |
|
|
1 | (30) |
|
|
1 | (1) |
|
|
2 | (1) |
|
Basic Functionalities of Routers |
|
|
2 | (5) |
|
|
2 | (2) |
|
|
4 | (1) |
|
|
5 | (2) |
|
Evolution of Router Architecture |
|
|
7 | (7) |
|
First Generation---Bus-Based Router Architectures with Single Processor |
|
|
7 | (1) |
|
Second Generation---Bus-Based Router Architectures with Multiple Processors |
|
|
8 | (1) |
|
Architectures with Route Caching |
|
|
8 | (1) |
|
Architectures with Multiple Parallel Forwarding Engines |
|
|
9 | (2) |
|
Third Generation---Switch Fabric-Based Router Architecture |
|
|
11 | (1) |
|
Fourth Generation---Scaling Router Architecture Using Optics |
|
|
12 | (2) |
|
Key Components of a Router |
|
|
14 | (17) |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
15 | (1) |
|
|
15 | (1) |
|
|
16 | (1) |
|
|
16 | (3) |
|
|
19 | (1) |
|
|
19 | (1) |
|
Shared Memory Switch Fabric |
|
|
20 | (1) |
|
Distributed Output Buffered Switch Fabric |
|
|
21 | (1) |
|
|
22 | (3) |
|
Space-Time Division Switch |
|
|
25 | (2) |
|
IP-Address Lookup: A Bottleneck |
|
|
27 | (1) |
|
|
27 | (4) |
|
Concept of IP-Address Lookup and Routing Table |
|
|
31 | (38) |
|
IP Address, Prefix, and Routing Table |
|
|
31 | (1) |
|
Concept of IP-Address Lookup |
|
|
32 | (1) |
|
|
33 | (3) |
|
Design Criteria and Performance Requirement |
|
|
34 | (2) |
|
Difficulty of the Longest-Prefix Matching Problem |
|
|
36 | (3) |
|
Comparisons with ATM Address and Phone Number |
|
|
36 | (1) |
|
Internet Addressing Architecture |
|
|
36 | (3) |
|
Routing Table Characteristics |
|
|
39 | (13) |
|
|
40 | (1) |
|
|
41 | (2) |
|
Impact of Address Allocation on Routing Table |
|
|
43 | (1) |
|
Migration of Address Allocation Policy |
|
|
44 | (1) |
|
Impact of Address Allocations on Routing Table Size |
|
|
45 | (1) |
|
Impact of Address Allocation on Prefixes with 24-Bit Length |
|
|
46 | (1) |
|
Contributions to Routing Table Growth |
|
|
46 | (2) |
|
|
48 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
50 | (1) |
|
|
50 | (2) |
|
Constructing Optimal Routing Tables |
|
|
52 | (17) |
|
Filtering Based on Address Allocation Policies |
|
|
52 | (1) |
|
|
52 | (2) |
|
|
54 | (1) |
|
Minimization of the Routing Table with Address Reassignments |
|
|
55 | (1) |
|
Case of a Single IP Routing Table |
|
|
56 | (3) |
|
|
59 | (4) |
|
Optimal Routing Table Constructor |
|
|
63 | (1) |
|
Description of the Algorithm |
|
|
63 | (3) |
|
|
66 | (1) |
|
|
67 | (1) |
|
|
68 | (1) |
|
|
69 | (38) |
|
|
69 | (1) |
|
|
69 | (20) |
|
|
70 | (1) |
|
|
70 | (1) |
|
|
71 | (1) |
|
|
72 | (7) |
|
|
79 | (1) |
|
Characteristics of Destination Address Locality |
|
|
80 | (1) |
|
|
80 | (1) |
|
Cache Replacement Algorithms |
|
|
81 | (2) |
|
Stack Reference Frequency |
|
|
83 | (3) |
|
Analysis of Noninteractive Traffic |
|
|
86 | (1) |
|
|
87 | (2) |
|
|
89 | (1) |
|
|
89 | (2) |
|
|
91 | (1) |
|
|
92 | (15) |
|
Definition and Data Structure |
|
|
93 | (2) |
|
|
95 | (2) |
|
|
97 | (1) |
|
|
97 | (5) |
|
|
102 | (2) |
|
|
104 | (1) |
|
|
105 | (1) |
|
|
105 | (2) |
|
|
107 | (58) |
|
|
107 | (6) |
|
|
107 | (2) |
|
Representation of LC-Tries |
|
|
109 | (2) |
|
|
111 | (1) |
|
|
112 | (1) |
|
|
113 | (1) |
|
Controlled Prefix Expansion |
|
|
113 | (10) |
|
|
114 | (1) |
|
Constructing Multibit Tries |
|
|
115 | (1) |
|
Efficient Fixed-Stride Tries |
|
|
116 | (2) |
|
|
118 | (5) |
|
|
123 | (5) |
|
Level 1 of the Data Structure |
|
|
124 | (3) |
|
Levels 2 and 3 of the Data Structure |
|
|
127 | (1) |
|
Growth Limitations in the Current Design |
|
|
128 | (1) |
|
|
128 | (1) |
|
|
128 | (10) |
|
Elevator-Stairs Algorithm |
|
|
129 | (3) |
|
log W-Elevators Algorithm |
|
|
132 | (4) |
|
|
136 | (2) |
|
|
138 | (11) |
|
Construction of Block Trees |
|
|
138 | (2) |
|
|
140 | (2) |
|
|
142 | (1) |
|
|
143 | (2) |
|
|
145 | (3) |
|
|
148 | (1) |
|
Multibit Tries in Hardware |
|
|
149 | (16) |
|
|
149 | (1) |
|
|
150 | (4) |
|
Tree Bitmap Optimizations |
|
|
154 | (3) |
|
Hardware Reference Design |
|
|
157 | (5) |
|
|
162 | (3) |
|
|
165 | (40) |
|
Fast Incremental Updates for the Pipelined Fixed-Stride Tries |
|
|
165 | (20) |
|
Pipelined Lookups Using Tries |
|
|
165 | (2) |
|
Forwarding Engine Model and Assumption |
|
|
167 | (2) |
|
Routing Table and Route Update Characteristics |
|
|
169 | (1) |
|
Constructing Pipelined Fixed-Stride Tries |
|
|
170 | (7) |
|
|
177 | (1) |
|
Separating Out Updates to Short Routes |
|
|
177 | (1) |
|
|
178 | (2) |
|
Eliminating Excess Writes |
|
|
180 | (1) |
|
|
181 | (3) |
|
|
184 | (1) |
|
|
185 | (13) |
|
|
186 | (1) |
|
|
186 | (4) |
|
|
190 | (2) |
|
Faster Two-Phase Algorithm for k = 2, 3 |
|
|
192 | (2) |
|
|
194 | (1) |
|
|
195 | (3) |
|
Pipelined Variable-Stride Multibit Tries |
|
|
198 | (7) |
|
Construction of Optimal PVST |
|
|
199 | (1) |
|
Mapping onto a Pipeline Architecture |
|
|
200 | (2) |
|
|
202 | (2) |
|
|
204 | (1) |
|
Efficient Data Structures for Bursty Access Patterns |
|
|
205 | (32) |
|
|
205 | (6) |
|
|
205 | (2) |
|
Dynamic Programming Algorithm |
|
|
207 | (2) |
|
Lagrange Approximation Algorithm |
|
|
209 | (2) |
|
Near-Optimal Scheme with Bounded Worst-Case Performance |
|
|
211 | (6) |
|
|
211 | (2) |
|
|
213 | (3) |
|
Depth-Constrained Weight Balanced Tree |
|
|
216 | (1) |
|
|
217 | (1) |
|
|
217 | (8) |
|
|
218 | (1) |
|
|
219 | (1) |
|
|
219 | (1) |
|
|
220 | (1) |
|
|
221 | (1) |
|
Constructing Data Structure |
|
|
221 | (1) |
|
|
222 | (1) |
|
|
223 | (1) |
|
|
224 | (1) |
|
Collection of Trees for Bursty Access Patterns |
|
|
225 | (12) |
|
|
225 | (1) |
|
Collection of Red-Black Trees (CRBT) |
|
|
226 | (1) |
|
Biased Skip Lists with Prefix Trees (BSLPT) |
|
|
227 | (2) |
|
Collection of Splay Trees |
|
|
229 | (1) |
|
|
230 | (4) |
|
|
234 | (3) |
|
|
237 | (38) |
|
|
237 | (11) |
|
|
237 | (1) |
|
|
237 | (3) |
|
Network Address Routing Table |
|
|
240 | (2) |
|
|
242 | (1) |
|
|
243 | (1) |
|
|
244 | (1) |
|
|
244 | (2) |
|
Comparisons between IHARC and HARC |
|
|
246 | (2) |
|
Selective Cache Invalidation |
|
|
248 | (1) |
|
|
248 | (8) |
|
|
249 | (1) |
|
|
249 | (1) |
|
|
250 | (1) |
|
|
251 | (1) |
|
Reverse Routing Cache (RRC) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
252 | (1) |
|
|
253 | (2) |
|
|
255 | (1) |
|
|
256 | (10) |
|
Two-Zone Full Address Cache |
|
|
256 | (1) |
|
Multi-Zone Pipelined Cache |
|
|
257 | (1) |
|
|
257 | (1) |
|
|
258 | (1) |
|
|
258 | (2) |
|
Lookup Table Transformation |
|
|
260 | (1) |
|
|
261 | (1) |
|
Design Method of Multi-Zone Cache |
|
|
261 | (1) |
|
|
262 | (2) |
|
|
264 | (1) |
|
|
265 | (1) |
|
Cache-Oriented Multistage Structure |
|
|
266 | (9) |
|
Bi-Directional Multistage Interconnection |
|
|
267 | (1) |
|
|
267 | (2) |
|
|
269 | (1) |
|
|
270 | (1) |
|
Routing Table Partitioning |
|
|
271 | (1) |
|
|
272 | (3) |
|
|
275 | (42) |
|
Binary Search on Hash Tables |
|
|
275 | (12) |
|
Linear Search of Hash Tables |
|
|
275 | (1) |
|
Binary Search of Hash Tables |
|
|
276 | (1) |
|
Precomputation to Avoid Backtracking |
|
|
277 | (1) |
|
Refinements to Basic Scheme |
|
|
278 | (1) |
|
|
278 | (3) |
|
|
281 | (5) |
|
|
286 | (1) |
|
Parallel Hashing in Prefix Length |
|
|
287 | (3) |
|
|
287 | (1) |
|
|
288 | (2) |
|
|
290 | (7) |
|
|
290 | (2) |
|
Multiple Hashing Using Cyclic Redundancy Code |
|
|
292 | (2) |
|
|
294 | (1) |
|
|
295 | (1) |
|
Update and Expansion to IPv6 |
|
|
295 | (2) |
|
|
297 | (1) |
|
|
297 | (20) |
|
|
297 | (2) |
|
|
299 | (1) |
|
Basic Configuration of LPM Using Bloom Filter |
|
|
299 | (2) |
|
|
301 | (1) |
|
|
302 | (2) |
|
|
304 | (1) |
|
Reducing the Number of Filters |
|
|
305 | (2) |
|
Fast Hash Table Using Extended Bloom Filter |
|
|
307 | (1) |
|
|
307 | (2) |
|
|
309 | (3) |
|
Shared-Node Fast Hash Table |
|
|
312 | (2) |
|
|
314 | (3) |
|
TCAM-Based Forwarding Engine |
|
|
317 | (54) |
|
|
317 | (4) |
|
Basic Architectural Elements |
|
|
317 | (2) |
|
Binary versus Ternary CAMs |
|
|
319 | (1) |
|
Longest-Prefix Match Using TCAM |
|
|
320 | (1) |
|
Efficient Updating on the Ordered TCAM |
|
|
321 | (4) |
|
Algorithm for the Prefix-Length Ordering Constraint |
|
|
321 | (1) |
|
Algorithm for the Chain-Ancestor Ordering Constraint (CAO_OPT) |
|
|
322 | (1) |
|
Level-Partitioning Technology |
|
|
322 | (3) |
|
VLMP Technique to Eliminate Sorting |
|
|
325 | (3) |
|
VLMP Forwarding Engine Architecture |
|
|
325 | (2) |
|
|
327 | (1) |
|
|
327 | (1) |
|
|
327 | (1) |
|
Performance of VLMP Architecture |
|
|
327 | (1) |
|
|
328 | (28) |
|
Pruned Search and Paged-TCAM |
|
|
329 | (1) |
|
|
329 | (1) |
|
|
330 | (1) |
|
Heuristic Partition Techniques |
|
|
331 | (1) |
|
Bit-Selection Architecture |
|
|
331 | (3) |
|
Trie-Based Table Partitioning |
|
|
334 | (6) |
|
|
340 | (1) |
|
|
341 | (2) |
|
|
343 | (1) |
|
|
343 | (3) |
|
Prefix Aggregation and Expansion |
|
|
346 | (1) |
|
EaseCAM: A Two-Level Paged-TCAM Architecture |
|
|
347 | (3) |
|
Algorithms for Bursty Access Pattern |
|
|
350 | (1) |
|
|
350 | (2) |
|
|
352 | (3) |
|
|
355 | (1) |
|
A Distributed TCAM Architecture |
|
|
356 | (15) |
|
Analysis of Routing Tables |
|
|
356 | (2) |
|
Distributed Memory (TCAM) Organization |
|
|
358 | (1) |
|
|
358 | (1) |
|
|
359 | (2) |
|
|
361 | (1) |
|
Analysis of the Power Efficiency |
|
|
362 | (2) |
|
Complete Implementation Architecture |
|
|
364 | (1) |
|
|
364 | (1) |
|
Priority Selector (Adaptive Load Balancing Logic) |
|
|
365 | (1) |
|
|
366 | (1) |
|
|
366 | (3) |
|
|
369 | (2) |
|
Routing-Table Partitioning Technologies |
|
|
371 | (44) |
|
Prefix and Interval Partitioning |
|
|
371 | (17) |
|
Partitioned Binary Search Table |
|
|
371 | (1) |
|
Encoding Prefixes as Ranges |
|
|
372 | (1) |
|
|
373 | (2) |
|
Insertion into a Modified Binary Search Table |
|
|
375 | (1) |
|
Multiway Binary Search: Exploiting the Cache Line |
|
|
376 | (2) |
|
|
378 | (1) |
|
Multilevel and Interval Partitioning |
|
|
379 | (1) |
|
|
380 | (3) |
|
|
383 | (2) |
|
|
385 | (3) |
|
|
388 | (13) |
|
|
388 | (1) |
|
Primary Lookup Table Transformation |
|
|
388 | (3) |
|
Partition Algorithm Based on Next Hops |
|
|
391 | (2) |
|
|
393 | (1) |
|
|
393 | (1) |
|
Imbalance Distribution of Prefixes |
|
|
393 | (1) |
|
|
394 | (1) |
|
|
395 | (1) |
|
|
395 | (2) |
|
|
397 | (1) |
|
Implementation Using TCAM |
|
|
398 | (1) |
|
|
399 | (1) |
|
|
400 | (1) |
|
|
401 | (6) |
|
Concept of ROT-Partitioning |
|
|
401 | (1) |
|
Generalization of ROT-Partition |
|
|
402 | (2) |
|
|
404 | (1) |
|
Results of ROT-Partitioning |
|
|
405 | (1) |
|
|
405 | (1) |
|
|
406 | (1) |
|
|
407 | (8) |
|
|
408 | (4) |
|
|
412 | (1) |
|
Implementation Using Binary Trie |
|
|
413 | (1) |
|
|
414 | (1) |
Index |
|
415 | |