Tải bản đầy đủ (.ppt) (47 trang)

Báo cáo màu đề tài nghiên cứu bộ lọc bloom và ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.15 MB, 47 trang )

1
Nghiên cứu bộ lọc Bloom và ứng dụng
Giáo viên hướng dẫn:
ĐỒ ÁN TỐT NGHIỆP
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng2
Giới thiệu bộ lọc Bloom

Được Burton H.Bloom đưa ra năm 1970

Bộ lọc Bloom là một cấu trúc dữ liệu rất hiệu quả về
không gian cho việc truy vấn thành viên nhóm, cho
phép bỏ qua các trường hợp không cần thiết phải
tìm kiếm.

Các ứng dụng của Bloom:

Được sử dụng rộng rãi trong các ứng dụng phân loại gói
tin trên mạng theo dữ liệu của header/nội dung gói tin.

Gần đây bộ lọc Bloom còn được sử dụng trong các ứng
dụng mạng: web caching, IP traceback,…
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng3
Nội dung
Lý thuyết về bộ lọc Bloom
1
Các ứng dụng của bộ lọc Bloom:
2
Một số ứng dụng khác
3


2.1
2.2
Bài toán khớp tiền tố dài nhất
Bài toán phân loại gói tin
2.3
Bài toán khai phá phần tử phổ biến
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng4
1. Lý thuyết về bộ lọc Bloom
Cấu trúc bộ lọc Bloom cơ bản
Cơ chế hoạt động của bộ lọc Bloom
Ước lượng sai số
Chương trình demo
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng5
1
Một vectơ Bit
V có kích
thước là m,
ban đầu mỗi
bit đều có giá
trị là 0.
2
k hàm băm
(h1 hk), hi: U
→ [1 m]
3
Tập X gồm n
phần tử xi.
Cấu trúc bộ lọc Bloom cơ bản

GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng6
Cơ chế hoạt động của bộ lọc Bloom

Chèn một phần tử vào bộ lọc: Mỗi phần tử x thuộc tập X
được nạp vào trong bộ lọc Bloom theo phương pháp như
sau:

Tính toán x qua k hàm băm ta có k giá trị: h
1
(x),…,h
k
(x).

K bit có vị trí tương ứng với h
1
(x),…,h
k
(x) trong vectơ bit V
sẽ được gán là 1.
x
h
1
(x) h
2
(x) h
k
(x)h
3
(x)

V
m-1
V
0
01000 10100 00010
0
0
0
0
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng7
Cơ chế hoạt động của bộ lọc Bloom

Kiểm tra một phần tử y:

Nếu V[h
1
(y)]=1,… và V[h
k
(y)]=1 thì y có thể thuộc
X.

Nếu chỉ một bit V[h
i
(y)] =0 thì y chắc chắn không
thuộc X.
=> Kết quả kiểm tra qua bộ lọc: phần tử đó không
thuộc hoặc có khả năng thuộc bộ lọc.
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng8

Ước lượng sai số

False Negative: kiểm tra qua bộ lọc là không có
nhưng tìm kiếm thực thì lại có.

False Positive: kiểm tra qua bộ lọc là có nhưng
tìm kiếm thực thì không có.

Bộ lọc Bloom: không bao giờ xảy ra lỗi false
negative. Chỉ xảy ra lỗi false positive với xác
suất rất nhỏ.
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng9
Ước lượng sai số - False positive

Xác suất để một bit được gán là 0 bởi tất cả các
hàm băm là:

Đặt p=e
-kn/m
, xác suất của một false positive là:

Giả sử cho trước m và n thì giá trị k tối ưu là:
( )
m
nk
eem
mkn
kn
==≈−

−−
γ,/11
γ/
( )
( )
k
k
mkn
k
kn
pe
m
f
−=−≈














−−=


11
1
11
/
2ln
n
m
k
=
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng10
Kết quả sử dụng bộ lọc trong bài toán tìm kiếm
Số
phần tử
Số
hàm
băm
Độ dài
vectơ
bit
Số
phần
tử so
sánh
Số
PT
lọc
qua
là có
Số PT

BF KT
sai
Tỉ lệ
đúng
(%)
Tỉ lệ
sai
-FP(%
)
So
sánh
TG
10000 5 72463 2500 334 82 96.76 3.24 1/7.81
50000 5 370000 12500 1532 266 97.87 2.13 1/13.7
100000 5 730000 25000 3197 712 97.15 2.95 1/11.9
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng11
2. Các ứng dụng của bộ lọc Bloom
Bài toán khớp tiền tố dài nhất
2.1
2.2
Bài toán khai phá phần tử phổ biến
2.3
Bài toán phân loại gói tin
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng12
2.1 Bài toán khớp tiền tố dài nhất
Bảng định tuyến trong router
a
Thuật toán khớp tiền tố cổ điển

b
Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
c
Chương trình demo
d
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng13
a. Bảng định tuyến router

Chuyển tiếp các gói tin
dựa trên địa chỉ IP đích
trong phần Header của
gói tin.
Prefix Next Hop
* N1
0101* N2
100* N3
1001* N4
10111* N5
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng14
b. Thuật toán khớp tiền tố cổ điển

LongestPrefixMatching(d )
1. for each length i = [1, length(d)]
2. x = prefix(d, i)
3. {prefix, nexthop} ← Lookup(x, y)
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng15
c. Khớp tiền tố dài nhất sử dụng bộ lọc Bloom


Chia bảng định tuyến thành các bảng nhỏ theo
độ dài tiền tố gọi là các bảng băm. Mỗi bảng
băm chỉ chứa các tiền tố có cùng độ dài.

Giả sử địa chỉ IP có W bit. Cấu trúc bao gồm:

W bộ lọc Bloom: B(1),…, B(W).

W bộ đếm tương ứng với W bộ lọc Bloom: C(1),…,
C(W).

Cặp <B(i), C(i)> được nạp vào bảng băm HT(i).
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng16
c. Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
Prefix Next hop
1* 100.5.2.0
Prefix Next hop
00* 100.5.2.0
01* 100.5.1.0
10* 100.5.3.0
11* 100.5.5.0
Prefix Next hop
001* 100.5.2.0
010* 100.5.1.0
100* 100.5.5.0
111* 100.5.6.0
• Giả sử một gói tin đến với địa chỉ
đích là 1011

• Lọc qua các bộ lọc giả sử ta có vectơ
khớp (1, 2, 3)
• Tìm kiếm trực tiếp trong các bảng
theo thứ tự: từ 3 đến 2 đến 1
– Bảng HT(3): không có 101

Bảng HT(2): có 10 ứng với
nexthop là 100.5.3.0, tìm kiếm
dừng.
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng17
c. Khớp tiền tố dài nhất sử dụng bộ lọc Bloom

Địa chỉ IP đầu vào được
kiểm tra song song qua W
bộ lọc Bloom.

Mỗi bộ lọc chỉ đơn giản
đưa ra kết quả là khớp hay
không khớp.

Vector khớp là tập hợp tất
cả các độ dài tiền tố có
khớp .

Tìm kiếm trong các bảng
băm với thứ tự từ tiền tố
dài nhất đến ngắn nhất.

Quá trình tìm kiếm dừng

khi tìm thấy một kết quả
khớp hoặc đã duyệt qua
hết vectơ khớp
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng18
2.2. Bài toán phân loại gói tin
Khái niệm phân loại gói tin
a
Thuật toán tích chéo cổ điển
b
e
Chương trình demo
f
Thuật toán tích chéo đa tập con
c
TT tìm kiếm không gian bộ mức xếp chồng
d
TT tích chéo và trộn bộ mức xếp chồng
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng19
a. Phân loại gói tin

Phân loại gói tin là một hoạt động của router nhằm
phân loại gói tin dựa trên phần header.

Khi nhận được một gói tin, router sẽ tìm một quy tắc
khớp với gói tin để xác định xử lý thích hợp với gói tin
đó.

Giả sử gói tin đến có header

(5.168.3.0,152.133.171.71,…,TCP.
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng20

Xây dựng bảng
quy tắc đầy đủ
bằng cách thêm
vào các quy tắc
tích chéo.

Bởi vì với tập quy
tắc ban đầu thì
việc tìm kiếm gặp
khó khăn do độ
dài tiền tố của
các quy tắc khác
nhau.
b. Thuật toán tích chéo cổ điển
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng21

Bảng quy tắc tích chéo gồm các quy tắc giả
thêm vào, khi đó ta có thuật toán phân loại gói
tin đơn giản như sau:
ClassifyPacket(P )
1. for each field i
2. vi ← LPM(P.fi)
3. {match, {Id}} ← HashLookup(‹v1, . . . , vk›)

Tìm tiền tố khớp dài nhất trên mỗi trường, kết

hợp thành khoá và tìm kiếm khoá đó trong bảng
quy tắc.
b. Thuật toán tích chéo cổ điển
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng22

Ta xét ví dụ <10101100, 00111011>

Thực hiện khớp tiền tố dài nhất trên mỗi trường
ta có khoá <101, 00>.

Tìm kiếm khoá ta thấy quy tắc khớp là p2.
b. Thuật toán tích chéo cổ điển
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng23
c. Thuật toán tích chéo đa tập con

Thuật toán tích chéo cổ điển: lượng quy tắc giả
thêm vào có thể là rất lớn, tăng theo lượng hàm
mũ.

Tức là mỗi trường có m tiền tố không trùng nhau
thì số quy tắc giả thêm vào tương đương với m
n

với n là số trường trong bảng quy tắc.

Giảm lượng quy tắc giả: chia tập quy tắc ban
đầu thành các tập con và thực hiện thuật toán
tích chéo cổ điển trên mỗi tập con.

GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng24

Chia tập quy tắc thành các
tập con.

Tập G1 sinh thêm 1, tập
G2 sinh p2, tập G3 không
sinh thêm.

Với mỗi trường ta xây
dựng một bảng LPM xác
định độ dài tiền tố dài nhất
của một tiền tố trong các
tập con.
c. Thuật toán tích chéo đa tập con
GVHD: TS Nguyễn Mạnh Hùng
HVTH: Trương Thị Thu Hằng25

ClassifyPacket(P)

for each field i

t
i
← LPM (P.f
i
)

for each subset j


for each field i

if (ti.u[j] = =
NULL) bỏ qua tập con
j

{match, {Id}} ←
HashLookupj(t
i
.u[j],…,
t
k
.u[j])
c. Thuật toán tích chéo đa tập con

×