![Page 1: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/1.jpg)
Cuckoo Filter: Practically Better Than Bloom
Bin Fan (CMU/Google)David Andersen (CMU)
Michael Kaminsky (Intel Labs)Michael Mitzenmacher (Harvard)
1
![Page 2: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/2.jpg)
What is Bloom Filter? A Compact Data Structure Storing Set-membership
• Bloom Filters answer “is item x in set Y ” by:
• “definitely no”, or
• “probably yes” with probability ε to be wrong
• Benefit: not always precise but highly compact
• Typically a few bits per item
• Achieving lower ε (more accurate) requires spending more bits per item2
false positive rate
![Page 3: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/3.jpg)
Example Use: Safe Browsing
3
www.binfan.com
Lookup(“www.binfan.com”)No!
Known Malicious URLs Stored in Bloom Filter
Scale to millions URLs
RemoteServer
Please verify“www.binfan.com”
It is Good!
Probably Yes!
![Page 4: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/4.jpg)
Bloom Filter Basics
A Bloom Filter consists of m bits and k hash functions
Example: m = 10, k = 3
4
0 0 0 0 0 0 0 0 0 0
Insert(x)
hash1(x)hash2(x)
hash3(x)
1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0
Lookup(y)
hash1(y)hash2(y)
hash3(y)
= not found
![Page 5: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/5.jpg)
High Performance
Low Space Cost
Delete Support
Bloom Filter
Counting Bloom Filter
Quotient Filter
5
Succinct Data Structures for Approximate Set-membership Tests
Can we achieve all three in practice?
✔ ✗✔
✔✔
✔✔
✗
✗
![Page 6: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/6.jpg)
Outline
• Background
• Cuckoo filter algorithm
• Performance evaluation
• Summary
6
![Page 7: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/7.jpg)
Basic Idea: Store Fingerprints in Hash Table
7
• Fingerprint(x): A hash value of x
• Lower false positive rate ε, longer fingerprint
FP(a)
0:
1:
2:
3:
FP(c)
FP(b)
5:
6:
7:
4:
![Page 8: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/8.jpg)
Basic Idea: Store Fingerprints in Hash Table
8
• Fingerprint(x): A hash value of x
• Lower false positive rate ε, longer fingerprint
• Insert(x):
• add Fingerprint(x) to hash table
FP(a)
0:
1:
2:
3:
FP(c)
FP(b)
5:
6:
7:
4:
FP(x)
![Page 9: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/9.jpg)
Basic Idea: Store Fingerprints in Hash Table
9
• Fingerprint(x): A hash value of x
• Lower false positive rate ε, longer fingerprint
• Insert(x):
• add Fingerprint(x) to hash table
• Lookup(x):
• search Fingerprint(x) in hashtable FP(a)
0:
1:
2:
3:
FP(c)
FP(b)
5:
6:
7:
4:
FP(x)
Lookup(x) = found
![Page 10: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/10.jpg)
Basic Idea: Store Fingerprints in Hash Table
10
• Fingerprint(x): A hash value of x
• Lower false positive rate ε, longer fingerprint
• Insert(x):
• add Fingerprint(x) to hash table
• Lookup(x):
• search Fingerprint(x) in hashtable
• Delete(x):
• remove Fingerprint(x) from hashtable
FP(a)
0:
1:
2:
3:
FP(c)
FP(b)
5:
6:
7:
4:
FP(x)
Delete(x)
How to Construct Hashtable?
![Page 11: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/11.jpg)
11
• Perfect hashing: maps all items with no collisions
FP(e)
FP(c)
FP(d)
FP(b)
FP(f)
FP(a)
{a, b, c, d, e, f}f(x)
(Minimal) Perfect Hashing: No Collision but Update is Expensive
![Page 12: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/12.jpg)
• Perfect hashing: maps all items with no collisions
• Changing set must recalculate f high cost/bad performance of update
12
{a, b, c, d, e, f}f(x)
(Minimum) Perfect Hashing: No Collision but Update is Expensive
{a, b, c, d, e, g}f(x) = ?
FP(e)
FP(c)
FP(d)
FP(b)
FP(f)
FP(a)
![Page 13: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/13.jpg)
Convention Hash Table: High Space Cost
• Chaining :
• Pointers low space utilization
• Linear Probing
• Making lookups O(1) requires large % table empty low space utilization
• Compare multiple fingerprints sequentially more false positives
13
bkt1
bkt2
bkt3 FP(a)
bkt0
FP(c)
FP(d)
FP(a)Lookup(x)
Lookup(x)
FP(c)
FP(f)
![Page 14: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/14.jpg)
Cuckoo Hashing[Pagh2004] Good But ..
• High Space Utilization
• 4-way set-associative table: >95% entries occupied
• Fast Lookup: O(1)
14
0:
1:
2:
3:
5:
6:
7:
4:hash2(x)
Standard cuckoo hashing doesn’t work with fingerprints[Pagh2004] Cuckoo hashing.
lookup(x)
hash1(x)
![Page 15: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/15.jpg)
15
Standard Cuckoo Requires Storing Each Item
b
0:
1:
2:
3:
c
a
5:
6:
7:
4:Insert(x)
h1(x)
h2(x)
![Page 16: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/16.jpg)
16
Standard Cuckoo Requires Storing Each Item
b
0:
1:
2:
3:
c
x
5:
6:
7:
4:Insert(x)
Rehash a: alternate(a) = 4Kick a to bucket 4
h2(x)
![Page 17: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/17.jpg)
17
Standard Cuckoo Requires Storing Each Item
b
0:
1:
2:
3:
a
x
5:
6:
7:
4:Insert(x)
Rehash a: alternate(a) = 4Kick a to bucket 4
Rehash c: alternate(c) = 1Kick c to bucket 1
h2(x)
![Page 18: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/18.jpg)
18
Standard Cuckoo Requires Storing Each Item
c
b
0:
1:
2:
3:
a
x
5:
6:
7:
4:Insert(x)
Insert complete(or fail if MaxSteps reached)
Rehash a: alternate(a) = 4Kick a to bucket 4
Rehash c: alternate(c) = 1Kick c to bucket 1
h2(x)
![Page 19: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/19.jpg)
Challenge: How to Perform Cuckoo?
• Cuckoo hashing requires rehashing and displacing existing items
19
With only fingerprint, how to calculate item’s alternate
bucket?
FP(b)
0:
1:
2:
3:
FP(c)
FP(a)
5:
6:
7:
4:
Kick FP(a) to which bucket?
Kick FP(c) to which bucket?
![Page 20: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/20.jpg)
We Apply Partial-Key Cuckoo
• Standard Cuckoo Hashing: two independent hash functions for two buckets
• Partial-key Cuckoo Hashing: use one bucket and fingerprint to derive the other [Fan2013]
To displace existing fingerprint:
20
bucket1 = hash(x)
bucket2 = bucket1 hash(FP(x))
bucket1 = hash1(x)
bucket2 = hash2(x)
alternate(x) = current(x) hash(FP(x))
[Fan2013] MemC3: Compact and Concurrent MemCachewith Dumber Caching and Smarter Hashing
![Page 21: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/21.jpg)
Partial Key Cuckoo Hashing
• Perform cuckoo hashing on fingerprints
21
FP(b)
0:
1:
2:
3:
FP(c)
FP(a)
5:
6:
7:
4:
Kick FP(a) to “6 hash(FP(a))”
Kick FP(c) to “4 hash(FP(c))”
Can we still achieve high space utilization with partial-key cuckoo
hashing?
![Page 22: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/22.jpg)
Fingerprints Must Be “Long” for Space Efficiency
• Fingerprint must be Ω(logn/b) bits in theory
• n: hash table size, b: bucket size
• see more analysis in paper22
When fingerprint > 5 bits, high table space
utilization
TableSpaceUtilization
Table size: n=128 million entries
![Page 23: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/23.jpg)
Space Efficiency
24
ε: target false positive rate
bits per item to achieve ε
Lower bound
More Space
More False Positive
![Page 24: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/24.jpg)
Space Efficiency
25
ε: target false positive rate
bits per item to achieve ε
Bloom filter
Lower bound
More Space
More False Positive
![Page 25: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/25.jpg)
Space Efficiency
26
ε: target false positive rate
bits per item to achieve ε
Cuckoo filter
Bloom filter
Lower bound
More Space
More False Positive
![Page 26: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/26.jpg)
Space Efficiency
27
ε: target false positive rate
bits per item to achieve ε
Cuckoo filter + semisorting
more compact than Bloom filter at 3%
Cuckoo filter
Bloom filter
Lower bound
More Space
More False Positive
![Page 27: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/27.jpg)
Outline
• Background
• Cuckoo filter algorithm
• Performance evaluation
• Summary
28
![Page 28: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/28.jpg)
Evaluation
• Compare cuckoo filter with
• Bloom filter (cannot delete)
• Blocked Bloom filter [Putze2007] (cannot delete)
• d-left counting Bloom filter [Bonomi2006]
• Cuckoo filter + semisorting
• More in the paper
• C++ implementation, single threaded
29
[Putze2007] Cache-, hash- and space- efficient bloom filters.
[Bonomi2006] Beyond Bloom filters: From approximate membership checks to approximate state machines.
![Page 29: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/29.jpg)
Lookup Performance (MOPS)
30
11.93
6.28
7.969.26
4.86
11.92
6.45
8.51
12.04
8.28
0
2
4
6
8
10
12
14
cf cfss dlbf bbf bf
Hit Miss
Cuckoo Cuckoo +semisort
d-left countingBloom
blockedBloom
(no deletion)
Bloom(no deletion)
![Page 30: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/30.jpg)
Lookup Performance (MOPS)
31
11.93
6.28
7.969.26
4.86
11.92
6.45
8.51
12.04
8.28
0
2
4
6
8
10
12
14
cf cfss dlbf bbf bf
Hit Miss
Cuckoo Cuckoo +semisort
blockedBloom
(no deletion)
Bloom(no deletion)
d-left countingBloom
![Page 31: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/31.jpg)
Lookup Performance (MOPS)
32
11.93
6.28
7.969.26
4.86
11.92
6.45
8.51
12.04
8.28
0
2
4
6
8
10
12
14
cf cfss dlbf bbf bf
Hit Miss
Cuckoo Cuckoo +semisort
blockedBloom
(no deletion)
Bloom(no deletion)
d-left countingBloom
![Page 32: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/32.jpg)
Lookup Performance (MOPS)
33
Cuckoo filter is among the fastest regardless workloads.
11.93
6.28
7.969.26
4.86
11.92
6.45
8.51
12.04
8.28
0
2
4
6
8
10
12
14
cf cfss dlbf bbf bf
Hit Miss
Cuckoo Cuckoo +semisort
blockedBloom
(no deletion)
Bloom(no deletion)
d-left countingBloom
![Page 33: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/33.jpg)
Insert Performance (MOPS)
34
Cuckoo filter has decreasing insert rate, but overall is only slower than blocked Bloom
filter.
Cuckoo
Blocked Bloom
d-left Bloom
Cuckoo +semisorting
Standard Bloom
![Page 34: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/34.jpg)
Summary
• Cuckoo filter, a Bloom filter replacement:
• Deletion support
• High performance
• Less Space than Bloom filters in practice
• Easy to implement
• Source code available in C++:
• https://github.com/efficient/cuckoofilter
35
![Page 35: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/35.jpg)
Othello Hashing and Its Applications for Network Processing
Chen Qian
Department of Computer [email protected]
https://users.soe.ucsc.edu/~qian/
• Publications in ICNP’17, SIGMETRICS’17, MECOMM’17 and Bioinformatics
![Page 36: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/36.jpg)
37
BackgroundPhD in 2013 from UT Austin with Simon Lam
Research: Computer networking SDN/NFV Internet of things Security
![Page 37: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/37.jpg)
MotivationNetwork algorithms always prefer small memory and fast processing speed. Fast memory is precious resource on network
devices Needs to reach the line rate to avoid being a
bottleneck, under large traffic volume
More important in networks with layer-two semantics
38
![Page 38: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/38.jpg)
Othello HashingEssentially a key-value lookup structureKeys can be any names, addresses, identifiers, etc.Values should not be too long. At most 64 bit.
For example Key: network address; Value: link to forward a packet Key: virtual IP; Value: direct IP
39
![Page 39: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/39.jpg)
Why Othello is specialMinimal query time: only two memory read operations (cachelines) per query. Minimal memory cost: 10%-30% of existing hash tables (e.g., Cuckoo).
Support dynamic updates: can be updated over a million times per second.
40
![Page 40: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/40.jpg)
Idea of dynamic Othello lookups
41
K-VLookup
Optimize memory and query cost
ControllerProgram
Lookup
ConstructUpdate
Update via existing API of programmable networks
![Page 41: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/41.jpg)
How Othello worksBasic version: Classifies keys to two sets 𝑋𝑋and 𝑌𝑌 Equivalent to key lookups for a 1-bit value
Query result 𝜏𝜏 𝑘𝑘 = 0 𝑘𝑘 ∈ 𝑋𝑋 𝜏𝜏 𝑘𝑘 = 1 𝑘𝑘 ∈ 𝑌𝑌
Advance version: Classifies keys to 2𝑙𝑙 sets Equivalent to key lookups for a 𝑙𝑙-bit value
42
![Page 42: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/42.jpg)
Othello Query StructureTwo bitmaps 𝑎𝑎, 𝑏𝑏 with size 𝑚𝑚 (𝑚𝑚 in (1.33𝑛𝑛, 2𝑛𝑛))
43
1 0 0𝑎𝑎
0 1 1 1𝑏𝑏
ℎ𝑎𝑎 █
ℎ𝑏𝑏 █𝜏𝜏 █ = 0 ⊕ 1 = 1
𝑚𝑚 bits█ is in set Y
Query is easy. Then how to construct it?
𝑛𝑛 is # of keys
![Page 43: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/43.jpg)
Othello Control Structure: Construct𝐺𝐺: acyclic bipartite graph
44
𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒
ℎ𝑎𝑎
ℎ𝑏𝑏
𝑎𝑎
𝑏𝑏
𝑘𝑘 ℎ𝑎𝑎(𝑘𝑘) ℎ𝑏𝑏(𝑘𝑘)█ 6 5
![Page 44: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/44.jpg)
Othello Construct
45
𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒
ℎ𝑎𝑎
ℎ𝑏𝑏
𝑎𝑎
𝑏𝑏
𝑘𝑘 ℎ𝑎𝑎(𝑘𝑘) ℎ𝑏𝑏(𝑘𝑘)█ 6 5█ 1 0█ 1 2█ 1 3█ 4 2
If finding a cycle, use another pair <ha, hb> until an acyclic graph is built
For n names, the time to find G is O(n).
![Page 45: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/45.jpg)
Compute Bitmap
46
𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒
𝑎𝑎
𝑏𝑏
𝑘𝑘 ℎ𝑎𝑎(𝑘𝑘) ℎ𝑏𝑏(𝑘𝑘) set█ 6 5 Y█ 1 0█ 1 2█ 1 3█ 4 2
1
0
![Page 46: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/46.jpg)
Compute Bitmap
47
𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒
𝑎𝑎
𝑏𝑏
𝑘𝑘 ℎ𝑎𝑎(𝑘𝑘) ℎ𝑏𝑏(𝑘𝑘) set█ 6 5 Y█ 1 0 X█ 1 2 Y█ 1 3 X█ 4 2 X
1
0
1
1 0 1
0
If G is acyclic, easy to find a coloring plan
![Page 47: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/47.jpg)
Name Addition – color flip
48
𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒
𝑎𝑎
𝑏𝑏
𝑘𝑘 ℎ𝑎𝑎(𝑘𝑘) ℎ𝑏𝑏(𝑘𝑘) set█ 6 5 Y█ 1 0 X█ 1 2 Y█ 1 3 X█ 4 2 X█ 6 3 Y
101
1 0 1
0ℎ𝑎𝑎
ℎ𝑏𝑏01
If G is acyclic, flipping is trivial
![Page 48: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/48.jpg)
L-Othello functionality Classifies names into 2𝑙𝑙 sets: 𝑍𝑍0,𝑍𝑍1,⋯ ,𝑍𝑍2𝑙𝑙−1
49
█ █
█
█
█
██
█
██
███
██
𝑍𝑍0
𝑍𝑍1
𝑍𝑍3
𝑍𝑍2
𝑋𝑋1
𝑌𝑌1 𝑋𝑋2 𝑌𝑌2
l Othellos can classify names to 2l sets
l < 8 for network devices
![Page 49: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/49.jpg)
ExampleClassify keys in 8 sets: 𝑍𝑍0,𝑍𝑍1,⋯ ,𝑍𝑍7Orthogonal separation of sets 𝑋𝑋3 = 𝑍𝑍0 ∪ 𝑍𝑍1 ∪ 𝑍𝑍2 ∪ 𝑍𝑍3 ; 𝑌𝑌3 = 𝑍𝑍4 ∪ 𝑍𝑍5 ∪ 𝑍𝑍6 ∪ 𝑍𝑍7 . 𝑋𝑋2 = 𝑍𝑍0 ∪ 𝑍𝑍1 ∪ 𝑍𝑍4 ∪ 𝑍𝑍5 ; 𝑌𝑌2 = 𝑍𝑍2 ∪ 𝑍𝑍3 ∪ 𝑍𝑍6 ∪ 𝑍𝑍7 . 𝑋𝑋1 = 𝑍𝑍0 ∪ 𝑍𝑍2 ∪ 𝑍𝑍4 ∪ 𝑍𝑍6 ; 𝑌𝑌1 = 𝑍𝑍1 ∪ 𝑍𝑍3 ∪ 𝑍𝑍5 ∪ 𝑍𝑍7 .
6=(110)2 𝑘𝑘 ∈ 𝑌𝑌3 ∩ 𝑌𝑌2 ∩ 𝑋𝑋1 ⇒ 𝑘𝑘 ∈ 𝑍𝑍6𝑙𝑙 Othellos : classify keys in 2𝑙𝑙 sets.
50
![Page 50: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/50.jpg)
51
0 1 0𝑎𝑎1𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒1 1 0 1 0𝑏𝑏1
𝑎𝑎2𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒1 0 1 0 1𝑏𝑏2
1 0 1
Othello 1 Othello 2
Same G, ha, hb. Different coloring plan and bitmaps
Do we need 2l memory reads to query l Othellos?
Same X UY
![Page 51: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/51.jpg)
52
0 1 0𝑎𝑎1𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒1 1 0 1 0𝑏𝑏1
ℎ𝑏𝑏
𝑎𝑎2𝒖𝒖𝟎𝟎
𝒗𝒗𝟎𝟎
𝒖𝒖𝟏𝟏
𝒗𝒗𝟏𝟏
𝒖𝒖𝟐𝟐
𝒗𝒗𝟐𝟐
𝒖𝒖𝟑𝟑
𝒗𝒗𝟑𝟑
𝒖𝒖𝟓𝟓
𝒗𝒗𝟓𝟓
𝒖𝒖𝟔𝟔
𝒗𝒗𝟔𝟔
𝒖𝒖𝟕𝟕
𝒗𝒗𝟕𝟕
𝒖𝒖𝟒𝟒
𝒗𝒗𝟒𝟒1 0 1 0 1𝑏𝑏2
1 0 1
Othello 1 Othello 2
𝐴𝐴
𝐵𝐵
ℎ𝑎𝑎
𝜏𝜏 𝑘𝑘 = 01 ⊕ 10 = 11 2k is in set Z3
CPUs can read l bits at one time
𝐴𝐴[0]𝐴𝐴[1]
![Page 52: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/52.jpg)
Alien keysWhat is 𝜏𝜏 𝑘𝑘 = 𝑎𝑎 ℎ𝑎𝑎 𝑘𝑘 ⊕ 𝑏𝑏[ℎ𝑏𝑏 𝑘𝑘 ] when 𝑘𝑘 is not in 𝑆𝑆? An arbitrary value
𝜏𝜏 𝑘𝑘 return 1 with when 𝑎𝑎 𝑖𝑖 = 1 && 𝑏𝑏 𝑗𝑗 = 0, or 𝑎𝑎 𝑖𝑖 = 0&& 𝑏𝑏 𝑗𝑗 = 1
53
![Page 53: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/53.jpg)
Applications of Othello1. Forwarding Information Base (FIB)2. Software load balancer3. Data placement and lookup4. Private queries5. Genomic sequencing searchAnd more…
54
![Page 54: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/54.jpg)
A Concise FIBResolving FIB explosion is crucial For layer-two interconnected data centers For OpenFlow-like fine-grained flow control
Concise using l-Othello is a portable solution In hardware devices Or software switches
55
A Fast, Small, and Dynamic Forwarding Information Base, In ACM SIGMETRICS 2017 A Concise Forwarding Information Base for Scalable and Fast Name Switching, in
IEEE ICNP 2017.
![Page 55: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/55.jpg)
Network-wide updatingIf all devices share a same set of network names/addresses Such as in layer-two Ethernet-based data
centers All Othellos will share a same G. Hence network-wide updating is very efficient!
Update consistency also provided
56
![Page 56: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/56.jpg)
Implementation of three prototypes1. Memory mode Query and control structures running on
different threads.
2. CLICK modular router3. Intel Data Plane Development Kit (DPDK)
57
![Page 57: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/57.jpg)
Comparison:Buffalo
Cuckoo hashing
58
Yu, Fabrikant, Rexford, in CoNEXT’09
Zhou, Fan, Lim, Kaminsky, Andersen, in CoNEXT’13 and SIGCOMM’15
![Page 58: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/58.jpg)
Comparison: Memory size
59
FIB Example Memory SizeName Type # Names # Actions Concise Cuckoo Buffalo
MAC (48 bits) 7*105 16 1M 5.62M 2.64MMAC (48 bits) 5*106 256 16M 40.15M 27.70MMAC (48 bits) 3*107 256 128M 321.23M 166.23MIPv4 (32 bits) 1*106 16 2M 4.27M 3.77M
IPv6 (128 bits) 2*106 256 8M 34.13M 11.08MOpenFlow (356 bits) 3*105 256 1M 14.46M 1.67MOpenFlow (356 bits) 1.4*106 65536 8M 67.46M 18.21MFile name (varied) 359194 16 512K 19.32M 1.35M
![Page 59: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/59.jpg)
Query speed
60
2x to 4x speed advantage
![Page 60: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/60.jpg)
Update speed
61
![Page 61: Cuckoo Filter: Practically Better Than Bloom · 2017. 12. 26. · Cuckoo Filter: Practically Better Than Bloom Bin Fan (CMU/Google) David Andersen (CMU) Michael Kaminsky (Intel Labs)](https://reader035.vdocument.in/reader035/viewer/2022081623/6148f1809241b00fbd673d5b/html5/thumbnails/61.jpg)
For unknown network names1. For data centers with most internal traffic Such situation is rare
2. For networks with much incoming traffic A filter can be installed at a firewall
3. Concise may include an r-bit checksum. A lookup still requires 2 memory accesses in
total, as long as l + r <= 64.
62