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
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
2.3 Bài toán khai phá phần tử phổ biến
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ố
Bộ lọc Bloom đếm Lựa chọn hàm băm
Trang 5Cấ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
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
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
k =
Trang 10Bộ lọc Bloom đếm
• Một đặc điểm của bộ lọc Bloom cơ bản là không
thể xoá một phần tử khỏi bộ lọc vì như vậy sẽ
làm xáo trộn những phần tử khác.
• Người ta đã cải tiến và đưa ra bộ lọc Bloom đếm trong đó thêm vào một vectơ đếm có độ dài bằng vectơ bit.
• Khi thêm vào hoặc xoá một phần tử chỉ cần tăng
hoặc giảm bộ đếm tương ứng, và nếu khi bộ đếm bằng 0 thì vectơ bit tương ứng bằng 0, nếu bộ
Trang 11Bộ lọc Bloom đếm
0000
0000
00000
0
1
0
11
Trang 13Kế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
Trang 152.1 Bài toán khớp tiền tố dài nhất
Bảng định tuyến trong router
Trang 16a 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
• Nó so sánh địa chỉ đích với
bảng định tuyến để tìm ra
một lối khớp, lối này sẽ cho
Router biết gói tin sẽ được
chuyển đi đâu tiếp
Prefix Next Hop
Trang 17b Thuật toán khớp tiền tố cổ điển
• Trên Router dùng định tuyến phân lớp giữa các
miền CIDR chia các địa chỉ IP thành các khối
tiền tố, để đăng ký sử dụng Internet giữa các
vùng.
• CIDR sử dụng kỹ thuật mặt nạ mạng có chiều
dài thay đổi (VLSM-Variable Length Subnet
Masking) cho phép định vị trí các tiền tố có chiều dài tùy ý.
• Khối CIDR IPv4 (W = 32): A.B.C.D/N trong đó
A.B.C.D là địa chỉ IP (A, B, C, D có giá trị từ
0-255), N chiều dài tiền tố (có giá trị 0-32).
Trang 18b Thuật toán khớp tiền tố cổ điển
• Ví dụ một khối có địa chỉ bắt đầu là 220.78.168.0
Trang 19b Thuật toán khớp tiền tố cổ điển
• Mỗi địa chỉ IP là một phần của tiền tố, và một địa chỉ IP
có thể khớp với nhiều tiền tố có chiều dài khác nhau
• Tìm một tiền tố khớp với địa chỉ đích d thì tiền tố phải
giống với N bit đầu của địa chỉ (N là độ dài tiền tố)
• VD xét với địa chỉ IP 5 bít Tiền tố 1101* khớp với tất cả các địa chỉ đích mà bắt đầu với các bít 1101 Khi biểu
diễn các tiền tố thành một đoạn thì 1101* trở thành
{11010,11011} = {26,27}
• Giả sử một BĐT Router bao gồm các tiền tố P1=101*,
P2=10010*, P3=01*, P4=1* và P5=1010* Địa chỉ đích
d=1010100 khớp với các tiền tố P1, P4, P5 Trong đó P5
là tiền tố dài nhất khớp với d
Trang 20b Thuật toán khớp tiền tố cổ điển
• Như vậy ta có thuật toán khớp tiền tố cổ
điển như sau: so sánh địa chỉ IP với mỗi
tiền tố trong bảng định tuyến để tìm ra tiền
Trang 21c Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
• Bộ lọc Bloom được sử dụng trong bài toán này
nhằm giúp tăng hiệu quả quá trình tìm kiếm.
• Bảng định tuyến được chia 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 tiền tố có cùng độ dài.
• Mỗi bảng băm được khởi tạo với một bộ lọc
Bloom để hỗ trợ trước khi tìm kiếm.
• Nếu địa chỉ IP có W bit thì cần dùng W bảng
băm Mỗi bản ghi trong bảng băm là một cặp
[tiền tố, bước truyền tiếp theo]
Trang 22c 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)
Trang 23c Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
• Quá trình tìm kiếm diễn ra như sau:
– Địa chỉ IP đầu vào được kiểm tra song song qua W
bộ lọc Bloom Tiền tố 1-bit của địa chỉ được đưa qua
bộ lọc B(1) mà được khởi tạo bởi các tiền tố của bảng băm HT(1), tiền tố 2-bit được đưa qua bộ lọc B(2) mà được khởi tạo bởi các tiền tố 2-bit của bảng băm HT(2)…
– Mỗi bộ lọc chỉ đơn giản đưa ra kết quả là khớp hay
không khớp Tập hợp tất cả các độ dài tiền tố mà kết quả từ bộ lọc tương ứng là khớp chúng ta có một
vectơ, chúng ta gọi là vector 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
Trang 24c Khớp tiền tố dài nhất sử dụng bộ lọc Bloom
Prefix Next hop
Trang 25c 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ó
khi tìm thấy một kết quả
khớp hoặc đã duyệt qua
Trang 262.2 Bài toán phân loại gói tin
Khái niệm phân loại gói tin
Trang 27a 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 header thành các lớp tương đương
gọi là các dòng (flow)
• Tất cả gói tin của một dòng đều tuân theo một quy tắc
được xác định trước và được router xử lý như nhau Ví
dụ một dòng = (địa chỉ nguồn, điạ chỉ đích) hay một dòng
= (tiền tố địa chỉ đích, giao thức)
• 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
đó
Trang 28a Phân loại gói tin
• Giả sử gói tin đến có header
(5.168.3.0,152.133.171.71,…,TCP), ta thấy gói
tin khớp với quy tức 2 và N, nhưng kết quả khớp với quy tắc 2 có tiền tố dài hơn do đó ta xử lý gói tin này với hành động là A2
Trang 29b Thuật toán tích chéo cổ điển
• 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.
Trang 30b Thuật toán tích chéo cổ điển
• Xét ví dụ bảng quy tắc có hai trường f1 và f2, mỗi trường có độ rộng 4 bit, tập quy
tắc có 3 quy tắc: r1: ‹1*,*›, r2‹1*,00*›, r3
‹101*, 100*›
• Biểu diễn mỗi trường bằng một cây nhị
phân, với mỗi nút màu đen là tương ứng
với tiền tố hợp lệ của các trường Mỗi kết
nối giữa 2 nút màu đen là một quy tắc Ta
Trang 31b Thuật toán tích chéo cổ điển
• một khoá khớp
bảng không có
quy tắc gốc
• Thêm vào một số
quy tắc giả ta có
bảng quy tắc tích
chéo
Trang 32• 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 33• 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
Trang 34c 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 mn
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
Trang 35c Thuật toán tích chéo đa tập con
• Số quy tắc cần
thêm vào là 7
Trang 36• 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 37• ClassifyPacket(P)
• for each field i
• t i ← LPM (P.f i)
• for each subset j
• for each field i
Trang 38• 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 39• Mức xếp chồng (Nested Level): mức xếp chồng của
một nút được đánh dấu trong một cây nhị phân là số nút ancestor(ông bà) đã được đánh dấu của nút đó Nút gốc luôn được xem là đã được đánh dấu Ví dụ, mức xếp
chồng của nút m2 và m3 là 1 và mức xếp chồng của nút
m4 là 2.
• Cây mức xếp chồng (Nested Level Tree): cho biết một
cây nhị phân với các nút đã được đánh dấu, chúng ta
xây dựng một cây mức xếp chồng bằng cách bỏ đi các
nút không đánh dấu và liên kết mỗi nút được đánh dấu
tới nút ancestor gần nhất của nó.
d Thuật toán tìm kiếm không gian NLT
Trang 40• Bộ mức xếp chồng (Nested Level Tuple – NLT): với mỗi
trường có trong tập quy tắc, chúng ta tạo ra một cây mức xếp chồng Bộ mức xếp chồng của quy tắc r là tập hợp
mức xếp chồng của mỗi trường tiền tố của quy tắc đó.
• Ví dụ, NLT của r6 là [1,0] và của r4 là [2,1]
d Thuật toán tìm kiếm không gian NLT
Trang 41• Các nút cùng mức xếp chồng thì không có nút nào là ancestor của nút khác.
• Tập gồm quy tắc trong cùng một bộ mức
xếp chồng thì không sinh một quy tắc tích
chéo nào.
• Tập quy tắc như vậy gọi là tập quy tắc con NLT.
• Cải tiến bảng LPM để giảm
chi phí bộ nhớ đưa ra khái
niệm bản đồ bit NLT và bản
đồ bit PL/NL.
d Thuật toán tìm kiếm không gian NLT
Trang 42• Trong trường hợp ngược lại thì có giá trị là null (biểu
diễn trong bảng dưới đây ký hiệu là ‘–‘)
Bản đồ bit PL/NL
• Với mỗi NLT chỉ biết mức xếp chồng của tiền tố
• Đưa ra bản đồ bit PL/NL để tính độ dài của tiền tố từ
mức xếp chồng và bản đồ bit PL/NL
• Bản đồ bit PL/NL có độ dài bằng độ dài địa chỉ IP và bit
d Thuật toán tìm kiếm không gian NLT
Trang 43d Thuật toán tìm kiếm không gian NLT
Trang 441 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á́
d Thuật toán tìm kiếm không gian NLT
Trang 45e 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
Trang 46• ĐN: khoảng cách giữa hai NLT là tổng của các
độ lệch giữa các mức nạp chồng của từng
trường riêng lẻ.
• Ví dụ, NLT [3, 1] và [1, 0] có khoảng cách là |3 - 1| + |1 - 0| = 3.
• ĐN: NLT đậm đặc là NLT chứa phần nhiều quy
tắc của tập quy tắc ban đầu.
e Thuật toán tích chéo và trộn NLT
Trang 47• Thuật toán trộn NLT thực hiện theo các
bước như sau:
1 Sắp xếp p NLT theo số lượng quy tắc ở
trong nó.
2 Chọn g NLT đậm đặc nhất trong đó g là giới
hạn số lượng tập con cho trước.
3 Với mỗi NLT trong số p-g NLT còn lại, trộn
nó vào trong NLT đậm đặc nhất có khoảng cách gần nhất tới nó Nếu khoảng cách bằng nhau, trộn với tập có số lượng quy tắc nhỏ
nhất.
e Thuật toán tích chéo và trộn NLT
Trang 48• 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
e Thuật toán tích chéo và trộn NLT
Trang 49e 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 502.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 51a Định nghĩa 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
• Dữ liệu của nhiều ứng dụng phổ biến có dạng là các
dòng liên tục thay vì các tập dữ liệu có lượng phần tử
được lưu trữ hạn chế
• 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 trong một luồng S(N) vượt quá một giá trị được xác định bởi người sử dụng φN, trong đó 0 ≤ φ ≤ 1
Trang 52b Mô hình Damped
• Là mô hình xử lý luồng dữ liệu.
• Còn gọi là mô hình Time – Fading, khai phá các phần tử phổ biến trong luồng dữ liệu mà mỗi
phần tử có một trọng số và trọng số này giảm
theo thời gian Cá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 kết quả khai phá,
nhưng tác động này giảm theo thời gian.
Trang 53c 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 ≤ ≤ 1 với mọi t ≥ 0
) 0 (
φ
) 0 (
φ
) 0 (
φ