Download - Address Lookup and Classification
![Page 1: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/1.jpg)
1
Address Lookup and Classification
EE384Y
May 23, 2006High PerformanceSwitching and RoutingTelecom Center Workshop: Sept 4, 1997.
Pankaj GuptaPrincipal Architect and Member of Technical
Staff, Netlogic Microsystems
[email protected]://klamath.stanford.edu/~pankaj
![Page 2: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/2.jpg)
2
Generic Router Architecture (Review from EE384x)
LookupIP Address
UpdateHeader
Header ProcessingData Hdr Data Hdr
~1M prefixesOff-chip DRAM
AddressTable
AddressTable
IP Address Next Hop
QueuePacket
BufferMemoryBuffer
Memory~1M packetsOff-chip DRAM
![Page 3: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/3.jpg)
3
Lookups Must be Fast
1. Lookup mechanism must be simple and easy to implement2. Memory access time is the bottleneck
200Mpps × 2 lookups/pkt = 400 Mlookups/sec → 2.5ns per lookup
Year Aggregate Line-rate
Arriving rate of 40B POS packets (Million pkts/sec)
1997 622 Mb/s 1.56
1999 2.5 Gb/s 6.25
2001 10 Gb/s 25
2003 40 Gb/s 100
2006 80 Gb/s 200
![Page 4: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/4.jpg)
4
Memory Technology (2006)
Technology
Max single chip density
$/chip ($/MByte)
Access speed
Watts/chip
Networking DRAM
64 MB $30-$50($0.50-$0.75)
40-80ns 0.5-2W
SRAM 8 MB $50-$60($5-$8)
3-4ns 2-3W
TCAM 2 MB $200-$250($100-$125)
4-8ns 15-30W
Note: Price, speed and power are manufacturer and market dependent.
![Page 5: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/5.jpg)
5
Lookup Mechanism is Protocol Dependent
Networking Protocol
Lookup Mechanism
Techniques we will study
MPLS, ATM, Ethernet
Exact match search
–Direct lookup–Associative lookup–Hashing–Binary/Multi-way Search Trie/Tree
IPv4, IPv6 Longest-prefix match search
-Radix trie and variants-Compressed trie-Binary search on prefix intervals
![Page 6: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/6.jpg)
6
Outline
I. Routing Lookups• Overview• Exact matching
– Direct lookup– Associative lookup– Hashing– Trees and tries
• Longest prefix matching– Why LPM?– Tries and compressed tries– Binary search on prefix intervals
• References
II. Packet Classification
![Page 7: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/7.jpg)
7
Exact Matches in ATM/MPLS
VCI/MPLS-label
Addre
ss
Memory
Data
(Outgoing Port, new VCI/label)
• VCI/Label space is 24 bits- Maximum 16M addresses. With 64b data, this is 1Gb of memory.
• VCI/Label space is private to one link • Therefore, table size can be “negotiated”• Alternately, use a level of indirection
Direct Memory Lookup
![Page 8: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/8.jpg)
8
Exact Matches in Ethernet Switches
• Layer-2 addresses are usually 48-bits long,
• The address is global, not just local to the link,
• The range/size of the address is not “negotiable” (like it is with ATM/MPLS)
• 248 > 1012, therefore cannot hold all addresses in table and use direct lookup.
![Page 9: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/9.jpg)
9
Exact Matches in Ethernet Switches (Associative Lookup)
• Associative memory (aka Content Addressable Memory, CAM) compares all entries in parallel against incoming data.
Network address Data
AssociativeMemory(“CAM”)
Addre
ss48bitsMatch
Location
Addre
ss“Normal”Memory
Data
Port
![Page 10: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/10.jpg)
10
Exact MatchesHashing
• Use a pseudo-random hash function (relatively insensitive to actual function)
• Bucket linearly searched (or could be binary search, etc.)• Leads to unpredictable number of memory references
HashingFunction
Memory
Addre
ss
Data
NetworkAddress
48
16, say Pointer
Memory
Addre
ss
DataList/Bucket
List of network addresses in this bucket
![Page 11: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/11.jpg)
11
Exact Matches Using HashingNumber of memory references
Where:
ER Expected number of memory references=
M Number of memory addresses in table=
N Number of linked lists= M N=
M
N)
11(1
12
1
empty)not islist |list oflength Expected(2
1ER
:referencesmemory ofnumber Expected
![Page 12: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/12.jpg)
12
Exact Matches in Ethernet Switches
Perfect Hashing
HashingFunction
Memory
Addre
ss
Data
NetworkAddress
48
16, say Port
There always exists a perfect hash function.
Goal: With a perfect hash function, memory lookup always takes O(1) memory references.
Problem: - Finding perfect hash functions (particularly a
minimal perfect hash) is complex. - Updates make such a hash function yet more
complex- Advanced techniques: multiple hash functions,
bloom filters…
![Page 13: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/13.jpg)
13
Exact Matches in Ethernet Switches
Hashing• Advantages:
– Simple to implement– Expected lookup time is small– Updates are fast (except with perfect hash functions)
• Disadvantages– Relatively inefficient use of memory– Non-deterministic lookup time (in rare cases)
Attractive for software-based switches. However, hardware platforms are moving to other techniques (but they can do well with a more sophisticated form of hashing)
![Page 14: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/14.jpg)
14
Exact Matches in Ethernet Switches
Trees and TriesBinary Search Tree
< >
< > < >
log
2 NN entries
Binary Search Trie
0 1
0 1 0 1
111010
Lookup time bounded and independent of table size, storage
is O(NW)
Lookup time dependent on table size, but independent of address length, storage is O(N)
![Page 15: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/15.jpg)
15
Exact Matches in Ethernet Switches
Multiway tries16-ary Search Trie
0000, ptr 1111, ptr
0000, 0 1111, ptr
000011110000
0000, 0 1111, ptr
111111111111
Ptr=0 means no children
Q: Why can’t we just make it a 248-ary trie?
![Page 16: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/16.jpg)
16
Exact Matches in Ethernet Switches
Multiway tries
Degree ofTree
# MemReferences
# Nodes(x106)
Total Memory(Mbytes)
FractionWasted (%)
2 48 1.09 4.3 494 24 0.53 4.3 738 16 0.35 5.6 8616 12 0.25 8.3 9364 8 0.17 21 98256 6 0.12 64 99.5
Table produced from 215 randomly generated 48-bit addresses
As degree increases, more and more pointers are “0”
![Page 17: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/17.jpg)
17
Exact Matches in Ethernet Switches
Trees and Tries
• Advantages:– Fixed lookup time– Simple to implement and update
• Disadvantages– Inefficient use of memory and/or
requires large number of memory references
More sophisticated algorithms compress ‘sparse’ nodes.
![Page 18: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/18.jpg)
18
Outline
I. Routing Lookups• Overview• Exact matching
– Direct lookup– Associative lookup– Hashing– Trees and tries
• Longest prefix matching– Why LPM?– Tries and compressed tries– Binary search on prefix intervals
• References
II. Packet Classification
![Page 19: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/19.jpg)
19
Longest Prefix Matching: IPv4 Addresses
• 32-bit addresses• Dotted quad notation: e.g.
12.33.32.1• Can be represented as integers on
the IP number line [0, 232-1]: a.b.c.d denotes the integer: (a*224+b*216+c*28+d)
0.0.0.0 255.255.255.255IP Number Line
![Page 20: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/20.jpg)
20
Class-based Addressing
A B C D
0.0.0.0
E
128.0.0.0 192.0.0.0
Class Range MS bits netid hostidA 0.0.0.0 –
128.0.0.00 bits 1-7 bits 8-31
B 128.0.0.0 -191.255.255.255
10 bits 2-15 bits 16-31
C 192.0.0.0 -223.255.255.255
110 bits 3-23 bits 24-31
D (multicast)
224.0.0.0 - 239.255.255.255
1110 - -
E (reserved)
240.0.0.0 -255.255.255.255
11110 - -
![Page 21: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/21.jpg)
21
Lookups with Class-based Addresses
23
186.21
Port 1
Port 2192.33.32.1
Class A
Class B
Class C
192.33.32 Port 3Exact match
netid port#
![Page 22: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/22.jpg)
22
Problems with Class-based Addressing
• Fixed netid-hostid boundaries too inflexible– Caused rapid depletion of address
space
• Exponential growth in size of routing tables
![Page 23: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/23.jpg)
23
Early Exponential Growth in Routing Table Sizes
Num
ber
of
BG
P r
oute
s advert
ised
![Page 24: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/24.jpg)
24
Classless Addressing (and CIDR)
• Eliminated class boundaries• Introduced the notion of a variable
length prefix between 0 and 32 bits long
• Prefixes represented by P/l: e.g., 122/8, 212.128/13, 34.43.32/22, 10.32.32.2/32 etc.
• An l-bit prefix represents an aggregation of 232-l IP addresses
![Page 25: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/25.jpg)
25
CIDR:Hierarchical Route Aggregation
Backbone
Router
R1R2
R3R4
ISP, P ISP, Q192.2.0/22 200.11.0/22
Site, S
192.2.1/24
Site, T
192.2.2/24 192.2.0/22 200.11.0/22
192.2.1/24 192.2.2/24
192.2.0/22, R2
Backbone routing table
IP Number Line
R2
![Page 26: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/26.jpg)
26
Post-CIDR Routing Table sizes
Source: http://bgp.potaroo.net
Nu
mb
er
of
act
ive B
GP p
refixes Optional Exercise: What would this graph
look like without CIDR? (Pick any one random AS, and plot the two curves side-by-side)
![Page 27: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/27.jpg)
27
Routing Lookups with CIDR
192.2.0/22, R2
192.2.2/24, R3 192.2.0/22 200.11.0/22
192.2.2/24
200.11.0/22, R4
200.11.0.33192.2.0.1 192.2.2.100
LPM: Find the most specific route, or the longest matching prefix among all the prefixes matching the destination address of an incoming packet
Optional Exercise: Find the ‘nesting distribution’ for routes in your randomly-picked AS
![Page 28: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/28.jpg)
28
Longest Prefix Match is Harder than Exact Match
• The destination address of an arriving packet does not carry with it the information to determine the length of the longest matching prefix
• Hence, one needs to search among the space of all prefix lengths; as well as the space of all prefixes of a given length
![Page 29: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/29.jpg)
29
LPM in IPv4Use 32 exact match algorithms for
LPM!
Exact matchagainst prefixes
of length 1
Exact matchagainst prefixes
of length 2
Exact matchagainst prefixes
of length 32
Network Address PortPriorityEncodeand pick
![Page 30: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/30.jpg)
30
Metrics for Lookup Algorithms• Speed (= number of memory accesses)• Storage requirements (= amount of
memory)• Low update time (support >10K updates/s)• Scalability
– With length of prefix: IPv4 unicast (32b), Ethernet (48b), IPv4 multicast (64b), IPv6 unicast (128b)
– With size of routing table: (sweetspot for today’s designs = 1 million)
• Flexibility in implementation• Low preprocessing time
![Page 31: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/31.jpg)
31
Radix Trie (Recap)
P1 111* H1
P2 10* H2
P3 1010*
H3
P4 10101
H4
P2
P3
P4
P1
A
B
C
G
D
F
H
E
1
0
0
1 1
1
1
Lookup 10111
Add P5=1110*
I
0
P5
next-hop-ptr (if prefix)
left-ptr right-ptr
Trie node
![Page 32: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/32.jpg)
32
Radix Trie
• W-bit prefixes: O(W) lookup, O(NW) storage and O(W) update complexity
Advantages
SimplicityExtensible to wider fields
Disadvantages
Worst case lookup slowWastage of storage space in chains
![Page 33: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/33.jpg)
33
Leaf-pushed Binary Trie
A
B
C
G
D
E
1
0
0
1
1
left-ptr or next-hop
Trie node
right-ptr or next-hop
P2
P4P3
P2
P1P1 111* H1
P2 10* H2
P3 1010*
H3
P4 10101
H4
![Page 34: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/34.jpg)
34
PATRICIA
2A
B C
E
10
1
Patricia tree internal node
3
P3
P2
P4
P110
0F G
D5
bit-position
left-ptr right-ptr
Lookup 10111
P1 111* H1
P2 10* H2
P3 1010*
H3
P4 10101
H4
Bitpos 12345
![Page 35: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/35.jpg)
35
• W-bit prefixes: O(W2) lookup, O(N) storage and O(W) update complexity
Advantages
Decreased storage Extensible to wider fields
Disadvantages
Worst case lookup slowBacktracking makes implementation complex
PATRICIA
![Page 36: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/36.jpg)
36
Path-compressed Tree
1, , 2A
B C10
10,P2,4
P4
P1
1
0
E
D1010,P3,5
bit-position
left-ptr right-ptr
variable-length bitstring
next-hop (if prefix present)
Path-compressed tree node structure
Lookup 10111
P1 111* H1
P2 10* H2
P3 1010*
H3
P4 10101
H4
![Page 37: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/37.jpg)
37
• W-bit prefixes: O(W) lookup, O(N) storage and O(W) update complexity
Advantages
Decreased storage
Disadvantages
Worst case lookup slow
Path-compressed Tree
![Page 38: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/38.jpg)
38
Multi-bit Tries
Depth = WDegree = 2Stride = 1 bit
Binary trieW
Depth = W/kDegree = 2k
Stride = k bits
Multi-ary trie
W/k
![Page 39: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/39.jpg)
39
Prefix Expansion with Multi-bit Tries
If stride = k bits, prefix lengths that are not a multiple of k need to be expanded
Prefix Expanded prefixes
0* 00*, 01*
11* 11*
E.g., k = 2:
Maximum number of expanded prefixes corresponding to one non-expanded prefix = 2k-
1
![Page 40: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/40.jpg)
40
Four-ary Trie (k=2)
P2
P3 P12
A
B
F11
next-hop-ptr (if prefix)
ptr00 ptr01
A four-ary trie node
P11
10
P42
H11
P41
10
10
1110
D
C
E
G
ptr10 ptr11
Lookup 10111
P1 111* H1
P2 10* H2
P3 1010*
H3
P4 10101
H4
![Page 41: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/41.jpg)
41
Prefix Expansion Increases Storage Consumption
• Replication of next-hop ptr• Greater number of unused (null)
pointers in a node
Time ~ W/kStorage ~ NW/k * 2k-1
Optional Exercise: The increase in number of null pointers in LPM is a worse problem than in exact match. Why?
![Page 42: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/42.jpg)
42
Generalization: Different Strides at Each Trie Level
• 16-8-8 split• 4-10-10-8 split• 24-8 split• 21-3-8 split
Optional Exercise: Why does this not work well for IPv6?
![Page 43: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/43.jpg)
43
Choice of Strides: Controlled Prefix Expansion [Sri98]
Given a forwarding table and a desired number of memory accesses in the worst case (i.e., maximum tree depth, D)
A dynamic programming algorithm to compute the optimal sequence of strides that minimizes the storage requirements: runs in O(W2D) timeAdvantages
Optimal storage under these constraints
Disadvantages
Updates lead to sub-optimality anywayHardware implementation difficult
![Page 44: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/44.jpg)
44
Binary Search on Prefix Intervals [Lampson98]
0000 11110010 0100 0110 1000 11101010 1100
P1
P4P3
P5P2
Prefix IntervalP1 /0 0000…
1111
P2 00/2 0000…0011
P3 1/1 1000…1111
P4 1101/4 1101…1101
P5 001/3 0010…0011
1001
I1 I3 I4 I5 I6I2
![Page 45: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/45.jpg)
45
I1
I3
I2 I4 I5
I6
0111
0011 1101
11000001
>Alphabetic Tree
1/2 1/4
1/8
1/16 1/32
1/32
>
>
>
>
0000 11110010 0100 0110 1000 11101010 1100
P1
P4P3
P5P2
1001
I1 I3 I4 I5 I6I2
![Page 46: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/46.jpg)
46
0001
Another Alphabetic Tree
I1
I2
I5
I3
I4
I6
0111
0011
1100
1101
1/2
1/4
1/8
1/16
1/32 1/32
![Page 47: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/47.jpg)
47
Advantages
Storage is linearCan be ‘balanced’Lookup time independent of W
Disadvantages
But, lookup time is dependent on NIncremental updates more complex than triesEach node is big in size: requires higher memory bandwidth
•W-bit N prefixes: O(logN) lookup, O(N) storage
Multiway Search on Intervals
![Page 48: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/48.jpg)
48
Routing Lookups: References
• [lulea98] A. Brodnik, S. Carlsson, M. Degermark, S. Pink. “Small Forwarding Tables for Fast Routing Lookups”, Sigcomm 1997, pp 3-14. [Example of techniques for decreasing storage consumption]
• [gupta98] P. Gupta, S. Lin, N.McKeown. “Routing lookups in hardware at memory access speeds”, Infocom 1998, pp 1241-1248, vol. 3. [Example of hardware-optimized trie with increased storage consumption]
• P. Gupta, B. Prabhakar, S. Boyd. “Near-optimal routing lookups with bounded worst case performance,” Proc. Infocom, March 2000 [Example of deliberately skewing alphabetic trees]
• P. Gupta, “Algorithms for routing lookups and packet classification”, PhD Thesis, Ch 1 and 2, Dec 2000, available at http://yuba.stanford.edu/ ~pankaj/phd.html [Background and introduction to LPM]
![Page 49: Address Lookup and Classification](https://reader035.vdocuments.us/reader035/viewer/2022062221/56812e92550346895d9433bc/html5/thumbnails/49.jpg)
49
Routing lookups : References (contd)
• [lampson98] B. Lampson, V. Srinivasan, G. Varghese. “ IP lookups using multiway and multicolumn search”, Infocom 1998, pp 1248-56, vol. 3. [Multi-way search]
• [PerfHash] Y. Lu, B. Prabhakar and F. Bonomi. “Perfect hashing for network applications”, ISIT, July 2006
• [LC-trie] S. Nilsson, G. Karlsson. “Fast address lookup for Internet routers”, IFIP Intl Conf on Broadband Communications, Stuttgart, Germany, April 1-3, 1998.
• [sri98] V. Srinivasan, G.Varghese. “Fast IP lookups using controlled prefix expansion”, Sigmetrics, June 1998.
• [wald98] M. Waldvogel, G. Varghese, J. Turner, B. Plattner. “Scalable high speed IP routing lookups”, Sigcomm 1997, pp 25-36.