130 likes | 246 Views
Tuple pruning using bloom filters for packet classification . Publisher : IEEE MICRO Author : Hyesook Lim , So Yeon Kim Presenter : Yu-Hsiang Wang Date : 2010/09/29. Outline . Introduction Background : tuple space pruning (TSP) TSP using bloom filter Performance evaluation.
E N D
Tuple pruning using bloom filtersfor packet classification Publisher : IEEE MICRO Author : Hyesook Lim , So Yeon Kim Presenter : Yu-Hsiang Wang Date : 2010/09/29
Outline • Introduction • Background : tuple space pruning (TSP) • TSP using bloom filter • Performance evaluation
Introduction • Many packet classification algorithms, such as tuple space pruning, perform a separate lookup on each field to narrow the search space. • These algorithms cause off-chip memory accesses for both the individual field lookups and the final combined lookup. • replace with on-chip Bloom filters to reduce unnecessary off-chip memory accesses
Background (TSP 1/2) • Tuple space : simple rule classification • Tuple space index : source / destination prefix length Regard as a 2-dimension space
Background (TSP 2/2) • Pruning table : distinct source/destination prefixes R1 (00* ,* ) T(2,0) R2 (1* ,00* ) T(1,2) R3 (01* , 100*) T(2,3) R4 (101* ,100* ) T(3,3) R5 (101* ,11* ) T(3,2) R6 (1* , * ) T(1,0) Incoming packet (0100,1001) Dimension 1 lookup : T(2,3) Dimension 2 lookup : T(1,0), T(2,0),T(2,3), T(3,3) intersected tuples : T(2,3)
TSP using bloom filter (1/5) • Replace pruning table (off chip) with bloom filters(on chip). • Tuple bloom filters for tuple Bloom filter
TSP using bloom filter (2/5) • 3 bloom filters with cyclic redundancy check(CRC) –8 generator • Pt : rule set composed of source and destination prefix pairs. Pt = { R1(00* ,*) , R2(1*,00*) , R3(01*,100*) , R4 (101*,100*) , R5 (101*,11*) , R6 (1*, *) } • Pruning sets : distinct source/destination prefixes P1 = { 00* , 1* ,01* ,101* } , P2 = { * ,00* ,100* ,11* } • Record distinct lengths : Lt = { (2,0) , (1,2) , (2,3) , (3,3) , (3,2) , (1,0) } L1 = { 1 , 2 , 3 } L2 = { 0 , 2 , 3 }
TSP using bloom filter (3/5) • Prefix -> CRC-8 generator -> CRC code • Choose indices from CRC code -> Set the correspond bits to 1 00 00111111 1,7 CRC-8 GENERATOR 11111100 at initial Source bloom filter
TSP using bloom filter (4/5) Hash table entry
TSP using bloom filter (5/5) Incoming packet (0100 ,1001) Dimension 1 lookup : { * , 0* , 01*, 010* ,0100} L1={ 1 , 2 , 3 } Dimension 2 lookup : { * , 1* , 10*, 100* ,1001} L2={ 0 , 2 , 3 } Intersected list : { (2,0) , (2,2) , (2,3) , (3,0) , (3,2) , (3,3) } Lt { (2,0) , (1,2) , (2,3) , (3,3) , (3,2) , (1,0) }
Performance evaluation : smallest multiple of 2 which is equal to or greater than n(P) • Source, destination filter size are increased by a factor. 4 , 8 ,16,32 [n(P1)], 4, 8 ,16,32 [n(P2)] , tuple filter size is fixed at 4[n(Pt)]
Performance evaluation • Source, destination filter size are fixed at 4[n(P1)], 4[n(P2)] , tuple filter size is increased by a factor . 1,2,….,32[n(Pt)] • The simulation result in using bloom filters with sizes 8[n(P1)], 8[n(P2)],8[n(Pt)] in performance.
Performance evaluation • Average 7~40 memory accesses per packet, each take 20 nanoseconds. =>140~800ns per packet =>1.25~7.14 million packets per second