Các ứng dụng của bộ lọc Bloom Bài toán khớp tiền tố dài nhất... 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á
Trang 1Nghi ên cứu bộ lọc Bloom và ứng dụng
Giáo viên hướng dẫn:
ĐỒ ÁN TỐT NGHIỆP
Trang 2Giớ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.
Trang 3Bài toán khớp tiền tố dài nhất Bài toán phân loại gói tin
Trang 41 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
Trang 5Mộ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
Trang 6Cơ 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ị: h1(x),…,hk(x)
– K bit có vị trí tương ứng với h1(x),…,hk(x) trong vectơ bit
V sẽ được gán là 1
x
VV
Trang 7Cơ chế hoạt động của bộ lọc Bloom
• Kiểm tra một phần tử y:
– Nếu V[h1(y)]=1 ,… và V[hk(y)]=1 thì y có thể thuộc X.
– Nếu chỉ một bit V[hi(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
Trang 8Ướ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ỏ.
Trang 9Ướ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 e
p
e m
Trang 10Kế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
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
Trang 112 Các ứng dụng của bộ lọc Bloom
Bài toán khớp tiền tố dài nhất
Trang 122.1 Bài toán khớp tiền tố dài nhất
Bảng định tuyến trong router
Trang 13a 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
Trang 14b Thuật toán khớp tiền tố cổ điển
Trang 15c 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)
Trang 16c Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
Prefix Next hop
Trang 17c 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.
Trang 182.2 Bài toán phân loại gói tin
Khái niệm phân loại gói tin
Trang 19a 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.
Trang 21• 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
b Thuật toán tích chéo cổ điển
Trang 22• 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
Trang 23c 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 mnvớ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
Trang 24• 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
Trang 25• ClassifyPacket(P)
• for each field i
• t i ← LPM (P.f i)
• for each subset j
• for each field i
Trang 26• Tính chất: trong mỗi trường không có tiền tố chồng nhau thì không sinh ra quy tắc tích chéo
• Phương pháp gom nhóm không chồng nhau.
• Đây là cách chia tập quy tắc không sinh thêm quy tắc chéo nào.
d Thuật toán tìm kiếm không gian NLT
Trang 27• Mỗi trường được xây dựng thành một cây bộ mức xếp chồng và ta tính được số bộ mức xếp chồng (NLT) của một tập quy tắc.
• Trong một NLT thì không có tiền tố chồng nhau nên tập quy tắc sẽ được chia thành các tập con mà mỗi tập con chứa toàn bộ quy tắc thuộc một NLT Gọi là tập quy tắc con NLT
d Thuật toán tìm kiếm không gian NLT
Trang 28d Thuật toán tìm kiếm không gian NLT
1 B1: Tìm ra các tiền tố khớp dài nhất trên mỗi trường.
2 B2: Thực hiện phép giao của các bản đồ bit NLT tương ứng để tìm các tập NLT có chứa tiền tố của 2 địa chỉ 2 trường.
3 B3: Từ bản đồ bit giao nhau và từ bảng NLT nhận được cặp mức xếp chồng của NLT thực.
4 B4: Kết hợp cặp mức xếp chồng của tập NLT với bản đồ bit PL/NL của mỗi trường, thu được danh sách các bộ độ dài tiền tố PLT.
5 B5: Kết hợp danh sách bộ PLT với tiền tố mỗi trường, chúng ta nhận được các cặp khoá́
Trang 29e Thuật toán tích chéo và trộn NLT
• Số tập quy tắc con nhiều thì tiêu tốn nhiều tài nguyên khi
sử dụng bộ lọc Bloom Nhưng nếu số tập con ít thì lại có khả năng sinh nhiều quy tắc chéo
• Phương pháp gom nhóm không chồng nhau thì không sinh ra quy tắc tích chéo nào nhưng số tập quy tắc con lại rất nhiều Mặt khác thì phân phối quy tắc có độ lệch cao
• Phần lớn số quy tắc tập
trung trong một số rất ít
Trang 30e Thuật toán tích chéo và trộn NLT
• Sau khi trộn NLT thì các tập con chứa quy tắc
có thể thuộc nhiều NLT khác nhau do đó không thể dùng bản đồ bit NLT và bản đồ bit PL/NL.
• Lúc này thuật toán tương tự với thuật toán tích chéo đa tập con.
• Với thuật toán này số quy tắc tích chéo đã giảm bớt rất nhiều trong khi số bộ lọc Bloom sử dụng
Trang 31f Kết quả
Số QT
Số QTTC TT1
Số QTTC TT2
Số tập con TT2 con TT3 Số tập con TT4 Số tập
Số QTTC TT4
Trang 322.3 Bài toán khai phá phần tử phổ biến
Luồng dữ liệu và phần tử phổ biến
Trang 33a Luồng dữ liệu và phần tử phổ biến
• Một luồng dữ liệu là một chuỗi không giới hạn của các phần tử dữ liệu được truyền đi với tốc độ cao
• Trong phần này ta ĐN luồng dữ liệu S là một chuỗi gồm
N cặp của N phần tử kết hợp với nhãn thời gian khi xuất hiện phần tử đó
• S = {(e1, t1), (e2, t2),…, (eN, tN)}
• Một phần tử phổ biến là một phần tử có tần số xuất hiện
Trang 34Các phần tử cũ
hơn đóng góp trọng số ít hơn tới tần số phần tử đó.
Mô hình này thích hợp với các ứng dụng trong đó dữ liệu cũ có tác động vào khai phá
nhưng tác động này giảm dần theo thời gian.
b Mô hình Damped
Trang 35c Bộ đếm phân rã theo thời gian
• Bộ đếm phân rã theo thời gian hay còn gọi đơn giản là bộ đếm phân rã là một bộ đếm mà giá trị của nó phân rã theo từng giai đoạn
• Giá trị của bộ đếm giảm theo một hàm không âm, không tăng, gọi là hàm phân rã theo thời gian (TDF) Một hàm TDF phải thoã mãn các điều kiện sau:
» = 1
» là hàm không tăng ( 0 )
) 0 (
Trang 36d Bộ lọc ESBF Extensible and scalable bloom Filter
• Bộ lọc ESBF bao gồm một chuỗi EBF và số bộ lọc EBF trong ESBF có thể thay đổi
ESBF
• Kích thước của EBF mới là M1si, trong đó M1 là kích thước của bộ lọc đầu tiên và i là số bộ lọc hiện có của
Trang 37d Bộ lọc ESBF
• EBF (Extensible
Bloom Filter): bộ
đếm mở rộng linh
Trang 38d Bộ lọc ESBF
• Ban đầu, chỉ có các bộ
đếm BC và OF
• Một BC tràn: một LC
được tạo ra Giá trị BC
chuyển sang LC và giá
trị BC là con trỏ trỏ tới
LC Giá trị OF bật lên 1
LC0
0
1
00
0000
EBF
Trang 39• Chia vectơ bit V thành h phần, h: số hàm băm Mỗi phần
có m’=m/h (bit)
d Bộ lọc ESBF
EBF
Trang 40e Thuật toán MIBFD
• Hàm tính độ phổ biến của các phần tử MIBFD(M)
• Hàm phân rã Decay()
• Hàm chèn phần tử vào bộ lọc Insert(k)
Trang 42Hàm phân rã
• Sau mỗi chu kỳ t phân rã một
lần
• Sau khi phân rã nếu giá trị LC
nhỏ hơn 2x – 1 thì thu hồi LC
và copy giá trị LC về BC
• Các bộ đếm LC có thể được
thêm và thu hồi liên tiếp, đưa
ra ngưỡng T thuộc khoảng:
[2x – 1,2x – 1]
OF = 1 Begin
Phân rã LC
LC < T
BC=LC Giải phóng LC OF=0
Phân rã BC yes
no
yes no
Trang 43Hàm chèn phần tử vào bộ lọc
• Chọn bộ lọc EBF thích hợp
để chèn
• Khi bộ đếm BC C[i][h i (k)] với
1≤ i ≤ h bị tràn thì tạo ra bộ
đếm LC new với độ dài là 2x (x
là độ dài của BC)̀ và giá trị
của BC là con trỏ tới LC new
• Đồng thời OF[i][h i (k)] được
gán là 1 để̉ chỉ ra rằng bộ
OF = 1 Begin
BC = BC + 1
BC bị
tràn?
LC = LC + 1 no
yes
yes no
Chọn EBF thích hợp
Trang 443 Một số ứng dụng khác của bộ lọc Bloom
1 Khai phá phần tử phổ biến trong luồng dữ liệu.
2 IP traceback: lưu trữ đặc trưng của gói tin
trong router, dùng để xác nhận lại gói tin đã đi qua.
3 Web caching trong mạng peer to peer: chia sẽ
bộ nhớ cache giữa các máy trong mạng.
Trang 45• Kết quả đạt được:
Tìm hiểu cấu
trúc và cách
thức hoạt
động của bộ
lọc Bloom cơ
bản Cài đặt
Tìm hiểu và cài đặt một số bài toán có ứng dụng bộ
Trang 46• Hướng phát triển:
Tìm hiểu và nghiên
cứu sâu hơn về các
cải tiến của bộ lọc
Bloom: DBF, SBF,
Compressed BF,…
Tìm hiểu và phát triển các ứng dụng thực tế có khả năng
áp dụng bộ lọc Bloom
Kết luận