Basic Data Structures for IP lookups and Packet Classification

33
1 Basic Data Structures for IP lookups and Packet Classification

description

Basic Data Structures for IP lookups and Packet Classification. Prefix. Length format : b n-1 …b 0 / l ( l is prefix length) In IPv4, d3.d2.d1.d0/ l can also be used. Mask format : b n-1 …b 0 /m n-1 …m 0 (prefix length is l ) - PowerPoint PPT Presentation

Transcript of Basic Data Structures for IP lookups and Packet Classification

Page 1: Basic Data Structures for  IP lookups  and  Packet Classification

1

Basic Data Structures for

IP lookups and

Packet Classification

Page 2: Basic Data Structures for  IP lookups  and  Packet Classification

2

Prefix Length format: bn-1…b0/l (l is prefix length)

In IPv4, d3.d2.d1.d0/l can also be used. Mask format: bn-1…b0/mn-1…m0 (prefix length is l)

mj = 1 for all n – 1 j n – l+1, and mj =0 otherwise. d3.d2.d1.d0/ m3.m2.m1.m0 for IPv4.

Ternary format: bn-1…bn-l+1*…* (prefix length is l) bj = 0 or 1 for n – 1 j n – l + 1. If tk is *, then tj must also be * for all j < k. A single don’t care bit can be used to denote a series of

don’t care bits, e.g., 1* denotes 1**** in the 5-bit address space.

Page 3: Basic Data Structures for  IP lookups  and  Packet Classification

3

Prefix (n+1)-bit format: bn-1…bn-l+110…0 (l is prefix len)

for the prefix bn-1…bn-l+1* of length l in ternary format, there is one trailing ‘1’ followed by n – l 0’s.

or (n+1)-bit format: bn-1…bn-l+101…1

for the prefix bn-1…bn-l+1* of length l in ternary format, there is one trailing ‘0’ followed by n – l 1’s.

Page 4: Basic Data Structures for  IP lookups  and  Packet Classification

4

5-bit Prefixes: bn-1…bn-l+110…0

11111

11110

11101

11100

1110*

1111*

111**

00011

00010

00001

00000

0000*

0001*

000**

*****

0****

00***

000111

000101

000011

000001

000010

000110

000100

001000

111111

111101

111011

111001

111010

111110

111100

11***

111000

6-bit binary address space000000 is not used

Page 5: Basic Data Structures for  IP lookups  and  Packet Classification

5

5-bit Prefixes: bn-1…bn-l+101…1

11111

11110

11101

11100

1110*

1111*

111**

00011

00010

00001

00000

0000*

0001*

000**

*****

0****

00***

000111

000101

000011

000001

000010

000110

000100

111101

111011

111001

111010

111110

111100

11***

111000

6-bit binary address space111111 is not used

110111

000000

Page 6: Basic Data Structures for  IP lookups  and  Packet Classification

6

Prefix properties Disjoint prefixes:

Two prefixes are said to be disjoint if they do not share any address.

Prefix enclosure: A = bn-1…bj…bi* and B = bn-1…bj* and j > i. Prefix A is enclosed by B (B A) since the IP address

space covered by A is a subset of that covered by B, where is the enclosure operator.

A special case of overlapping. Prefix comparison

The inequality 0 < * < 1 is used to compare two prefixes in the ternary representation of prefixes.

Page 7: Basic Data Structures for  IP lookups  and  Packet Classification

7

Prefix properties The most specific prefixes (MSP):

The prefixes that do not cover any others. Disjoint, so can be put in an array for binary search

Grouping prefixes in layers based on MSP. Six layers at most for IPv4 tables

1

2

3

1 1

2

4

1 1

2

3

1 1

2

5

4

1 1

2

3

1 1

2

1 1

2

3

1 1

2

1

Page 8: Basic Data Structures for  IP lookups  and  Packet Classification

8

Prefix propertiesDatabase

(year-month)AS6447(2000-4)

AS6447(2002-4)

AS6447(2005-4)

number of prefixes

79,530 124,798 163,535

Level-1 prefixes73,891(92.9%

)114,745 (91.9%)

150,245 (91.9%)

Level-2 prefixes 4,874 (6.1%) 8,496 (6.8%) 11,135 (6.8%)

Level-3 prefixes 642 (0.8%) 1,290 (1%) 1,775 (1.1%)

Level-4 prefixes 104 (0.1%) 235 (0.2%) 329 (0.2%)

Level-5 prefixes 17 29 45

Level-6 prefixes 2 3 6

Page 9: Basic Data Structures for  IP lookups  and  Packet Classification

9

Prefix properties

Prefix length

Num

ber

Page 10: Basic Data Structures for  IP lookups  and  Packet Classification

10

Prefix

Prefix Next-hopP1 111* H1P2 10* H2P3 1010* H3P4 10101 H4

P1 is disjoint from the other three prefixes. P2 P3 P4 Longest prefix match(LPM), not exact match enclosure makes (1) sorting prefixes and (2) binary sea

rching prefixes difficult

Forwarding table example

Page 11: Basic Data Structures for  IP lookups  and  Packet Classification

11

Example Forwarding Table Prefix Next-hop

P1 111* H1P2 10* H2P3 1010* H3P4 10101 H4

Longest prefix match(LPM), not exact match Prefix enclosure makes (1) sorting prefixes and

(2) binary searching prefixes difficult. So, trie based schemes emerge naturally

Page 12: Basic Data Structures for  IP lookups  and  Packet Classification

12

Binary Trie (Radix Trie)

P1 111* H1

P2 10* H2

P3 1010* H3

P4 10101 H4P2

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 13: Basic Data Structures for  IP lookups  and  Packet Classification

13

Binomial spanning tree

1000

1100

1110

1111

01

2

3

A 4-cube and its corresponding binomial spanning tree.

3

2

1

0

1000

1100

1110 1111

0000

0000

Page 14: Basic Data Structures for  IP lookups  and  Packet Classification

14

Perfect code: Hamming code (7, 4) 7-cube example:

0000000

1000000 0100000 0010000 0001000 0000100 0000010 0000001

24(16) one-level binomial spanning trees

= 7-cube

Page 15: Basic Data Structures for  IP lookups  and  Packet Classification

15

r = received codeSyndrome s = (s2 s1 s0) = r . H7

T Corrected code = r + ErrorPattern[s]

Perfect code: Hamming code (7, 4)1 1 0 1 1 0 0

1 0 1 1 0 1 0

0 1 1 1 0 0 1

H7 = G7 =

1 0 0 0 1 1 00 1 0 0 1 0 10 0 1 0 0 1 10 0 0 1 1 1 1

(a) Parity-check and generator matrices of Hamming code (7, 4).

(c) Decoding table

000 0000-000001 0000-001010 0000-010011 0010-000100 0000-100101 0100-000110 1000-000111 0001-000

Syndrome ErrorPatternInner product Transpose

Page 16: Basic Data Structures for  IP lookups  and  Packet Classification

16

Perfect code: Hamming code (7, 4) u Codeword

0000 0000-0000001 0001-1110010 0010-0110011 0011-1000100 0100-1010101 0101-0100110 0110-1100111 0111-0011000 1000-1101001 1001-0011010 1010-1011011 1011-0101100 1100-0111101 1101-1001110 1110-0001111 1111-111

16 codewordsGenerate 16 Codewords u . G7

Page 17: Basic Data Structures for  IP lookups  and  Packet Classification

17

Perfect code: Golay code (23, 12) 212 3-level binomial spanning trees C(23,0)+C(23, 1)+C(23,2)+C(23,3)

= 1 + 23 + 23*22/2 +3*22*21/(3*2) = 24 + 23*11 + 23*11*7 = 24 + 253*8 = 24 + 2024 = 2048 = 211

Page 18: Basic Data Structures for  IP lookups  and  Packet Classification

18

Ranges Why ranges?

Prefixes can also be represented by ranges. The source/destination port fields of rule tables for packet

classification are ranges. Prefixes are special cases of ranges. Prefix bn-1…bn-l+1* of length l is the range of addresses

from bn-1…bn-l+10…0 to bn-1…bn-l+11…0, denoted as [bn-1…bn-l+10…0, bn-1…bn-l+11…0].

Overlapping: Two ranges are overlapping if they are not disjoint.

Partially overlapping: Two ranges are partially overlapping if they are neither disjoint

nor enclosing.

Page 19: Basic Data Structures for  IP lookups  and  Packet Classification

19

Elementary Intervals for Ranges Definition: Let the set of k elementary intervals

constructed from a set R of ranges in the address space of 0 … N – 1 be X = {Xi | Xi = [ei, fi], for i = 1 to k}.

X must satisfy the following: 1) e1 = 0 and fk = N – 1,

2) fi = ei+1 – 1 for i = 1 to k – 1,

3) all addresses in Xi are covered by the same subset of

R (called the range matching set of Xi) denoted by EIi,

and

4) EIi EIi+1, for i = 1 to k – 1.

Page 20: Basic Data Structures for  IP lookups  and  Packet Classification

20

Elementary Intervals for RangesID Prefix Range Minus-1 Traditional

start finish start finishP1 000000/2 [0, 15] - 15 0 15P2 010000/2 [16, 31] 15 31 16 31P3 000100/4 [4, 7] 3 7 4 7P4 100000/1 [32, 63] 31 - 32 63P5 010110/5 [22, 23] 21 23 22 23P6 110000/2 [48, 63] 47 - 48 63P7 110000/4 [48, 51] 47 51 48 51P8 110111/6 [55, 55] 54 55 55 55P9 100000/3 [32, 39] 31 39 32 39

Page 21: Basic Data Structures for  IP lookups  and  Packet Classification

21

Elementary Intervals for Ranges Graphical view

EI7

{P4,P9}X7

[32, 39]

EI8

{P4}X8

[40, 47]

EI9

{P4,P6,P7}

X9

[48, 51]

EI10

{P4,P6}X10

[52, 54]

EI11

{P4,P6,P8}

X11

[55, 55]

EI12

{P4,P6}X12

[56, 63]

EI4

{P2}X4

[16, 21]

EI5

{P2,P5}X5

[22, 23]

EI6

{P2}X6

[24, 31]

EI2

{P1,P3}X2

[4, 7]

EI3

{P1}X3

[8, 15]

EI1

{P1}X1

[0, 3]

Page 22: Basic Data Structures for  IP lookups  and  Packet Classification

22

Segment Tree

y

w

z

u v

h

q g

r s t

15

23

15

P13 3

154

P4P6

P221

47

P439

7

55

P8X12

[56,63]X11

[55,55]

51

P7X10

[52,54]X9

[48,51]

P9X8

[40,47]X7

[32,39]

P2X6

[24,31]

X5

[22,23]X4

[16,21]

P5

P1X3

[8,15]X2

[4,7]X1

[0,3]

P3

leaf node

Page 23: Basic Data Structures for  IP lookups  and  Packet Classification

23

Interval Tree Each node in an interval tree is associated with a key which

must be covered by at least one range. Depending on whether a node can store 1 or 1+ range, fat interval tree

each node is allowed to store more than one range. The number of nodes in the interval tree is O(N). To insert a range R = [e, f], if R covers root’s key, R is stored in

the root. Otherwise, R is inserted in the left (right) subtree of the root when f is smaller (e is larger) than the key of the root.

When R does not cover the key of any node which is traversed, a new node with the key selected from addresses e to f is created and inserted as the left or right child of the node which was last visited.

O(logN + k) time, k is # of prefixes that match the given address.

Prefix insertion and deletion are very expensive because ranges in some nodes may need relocations after tree rotations.

Page 24: Basic Data Structures for  IP lookups  and  Packet Classification

24

Interval Tree thin interval tree: each node of the interval tree stores exactly one range. Since ranges may overlap, two comparison rules are used to

compare if a range is smaller or larger than another range. For two ranges R1 = [e1, f1] and R2 = [e2, f2], R1 < R2 if e1 < e2. If tie, the second rule applies. R1 < R2 if R2 is a subrange of R1 (i.e. e1 = e2 and f2 < f1).

Also, a node stores a max value, Max(the finish endpoints of all ranges) stored in the subtree rooted at that node.

In contrast with the fat interval tree, prefix insertion and deletion take O(logN) time. However, O(min{N, klogN}) time is needed to find the longest matching prefix as well as the highest-priority matching prefix, where k is the number of matched prefixes for a given address.

Page 25: Basic Data Structures for  IP lookups  and  Packet Classification

25

Hash Table Narrowing down the search space. Index = Hash_function(key)%m, where key may

be the first k bits of IP addresses and m is the size of the hash table.

Perfect hash: no collision Minimal perfect hash: A perfect hash, where the

size of its hash table is k for k different hashing keys.

Page 26: Basic Data Structures for  IP lookups  and  Packet Classification

26

Hash Table

H(k1)%m

k1

Array of m elements

Difficulties: prefixes and ranges can not be used as the keys of the hash functions directly.

H(k2)%mk2

collision

Page 27: Basic Data Structures for  IP lookups  and  Packet Classification

27

Hash Table: 8-bit Segmentation table A 8-bit segmentation table is usually used for

IPv4 forwarding tables because there is no prefix of length shorter than 8.

H(prefix)%256(MSB 8 bits of prefix)

Array of 256 elements

Prefixes with the same first 8 MSB bits

0

1

255

Prefix: 0.x.y.z

Maybe empty set

Page 28: Basic Data Structures for  IP lookups  and  Packet Classification

28

Hash Table: 16-bit Segmentation table Prefixes of length <= 16 must be stored properly.

For example, duplicate 0.0.b.c/15 into buckets 0 and 1 or store the port of 0.0.b.c/15 into elements 0 and 1.

Put them into another set (good for update but need to search two sets in the worst case).

H(prefix)%216

(MSB 16 bits of prefix)

Array of 216 elements

Prefixes with the same first 16 MSB bits

0

1

216-1

Prefix: 0.0.y.z

Maybe empty set

Prefixes of length 16

Page 29: Basic Data Structures for  IP lookups  and  Packet Classification

29

Hash Table: Compression Since there are many empty elements in the

segmentation table, we can use bitmap to compress the segmentation table.

Array of M elements

Prefixes with the same first 16 MSB bits

0

1

M-1

Prefix: 0.0.y.z

Must be non-empty

1100...011001

Prefix: 0.1.y.z

216-Bitmap containing M 1’s

Page 30: Basic Data Structures for  IP lookups  and  Packet Classification

30

Bloom filter H1(key) = P1

H2(key) = P2

H3(key) = P3

H4(key) = P4

Hk(key) = Pk

Hi() is a hash function, e.g. MD5

1

1

1

1

Bit vector of m bits

m bits

Page 31: Basic Data Structures for  IP lookups  and  Packet Classification

31

Bloom filter After inserting n keys (kn bits), the probability that a pa

rticular bit is still 0 is (1-1/m)kn

So, the probability of a false positive is

p for the right-hand side is minimized when k = ln2m/n m/n = 6, k = 4: p = 0.0561 m/n = 8, k = 6: p = 0.0215 m/n=12, k = 8: p =0.00314 m/n=16, k=11: p =0.000458

k

m

nkknk

em

p

1

111

Page 32: Basic Data Structures for  IP lookups  and  Packet Classification

32

Bloom filter Update:

Update whole SC Threshold: when the digests differ beyond a threshold, say, 5

% or 10%, Regular time intervals: every say 5 mins,

Page 33: Basic Data Structures for  IP lookups  and  Packet Classification

33

Counting Bloom filter Deletion operation for local digest:

For each bit in the m-bit vector, use an l-bit counter to record the number of times that a particular bit is turned on by different URLs

l = 4 by experience If deletion is not supported, cache summary must be

rebuilt from scratch on a periodic basis to erase stale bits and prevent bit pollution