Đồ án tốt nghiệp đại học nghiên cứu bộ lọc bloom và ứng dụng

73 2.9K 7
Đồ án tốt nghiệp đại học nghiên cứu bộ lọc bloom và ứng dụng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng MỤC LỤC 1 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng LỜI NÓI ĐẦU Internet là một kho dữ liệu khổng lồ, mọi người có thể tìm được bất kỳ thông tin nào về khoa học, sức khoẻ, đời sống, tin tức, và cả việc thông tin liên lạc qua thư điện tử, chat,…Với những ưu điểm lớn của World Wide Web, số lượng người sử dụng, máy chủ, các mạng con kết nối vào Internet ngày tăng với tốc độ chóng mặt. Điều đó cũng đồng nghĩa với việc lưu lượng lưu thông trên mạng ngày càng tăng lên và dường như quá tải. Để giải quyết vấn đề đó, những nghiên cứu cả về phần cứng và phần mềm không ngừng được nêu ra nhằm tăng tốc độ truyền tải trên mạng, tăng tốc độ xử lý của các thiết bị mạng…Việc sử dụng mạng Internet ngày càng phổ biến thì cũng càng đặt nhiều vấn đề mới hơn như vấn đề an ninh mạng, vấn đề bảo mật thông tin trên mạng… Bộ lọc Bloom do Burton Bloom đưa ra năm 1970 đã cho thấy được hiệu quả của nó trong việc góp phần giải quyết một số vấn đề về tốc độ và thời gian xử lý với cơ sở dữ liệu trên mạng. Chính vì thế bộ lọc Bloom ngày càng được sử dụng rộng rãi trong rất nhiều ứng dụng mạng: định tuyến IP, phân loại gói tin, chia sẽ bộ nhớ cache trong mạng per to per, IP traceback, khai phá phần tử phổ biến trong luồng dữ liệu, phát hiện sự xâm nhập trong hệ thống an ninh mạng Bộ lọc Bloom cũng rất hiệu quả trong việc xử lý với cơ sở dữ liệu nói chung nên thực sự rất hữu ích trong rất nhiều ứng dụng thực tế khác. Trong đồ án tốt nghiệp của mình, em chọn đề tài là “Nghiên cứu bộ lọc Bloom Filter và ứng dụng” gồm 3 nội dung chính: - Lý thuyết về bộ lọc Bloom - Tìm hiểu một số ứng dụng của bộ lọc Bloom: khớp tiền tố dài nhất, phân loại gói tin khai phá phần tử phổ biến sử dụng ESBF theo mô hình Damped. 2 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng - Cài đặt chương trình minh họa. Em xin chân thành cảm ơn thầy giáo cùng các thầy cô trong Bộ môn Công nghệ phần mềm, Khoa CNTT đã tận tình hướng dẫn, chỉ bảo tạo mọi điều kiện giúp đỡ em hoàn thành tốt đồ án này. 3 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Chương 1: LÝ THUYẾT VỀ BỘ LỌC BLOOM 1.1 Giới thiệu Bộ lọc Bloom là một cấu trúc dữ liệu được dùng để biểu diễn ngắn gọn một tập phần tử. Bộ lọc trước hết được khởi tạo với mỗi phần tử trong tập, sau đó nó được dùng để xác định một phần tử có thuộc tập đó hay không. Nó được xây dựng bởi Burton H.Bloom năm 1970 và được sử dụng rộng rãi cho nhiều mục đích khác nhau như là web caching, phát hiện sự xâm nhập và tìm đường dựa trên nội dung… do có khả năng hạn chế những trường hợp không cần thiết phải thực hiện việc tìm kiếm. 1.2 Cấu trúc bộ lọc Bloom cơ bản Một bộ lọc Bloom cơ bản bao gồm: - Một vectơ Bit V có kích thước là m ban đầu được thiết lập là 0. - k hàm băm (h 1 h k ), h i : U → [1 m] - Tập X gồm n phần tử x i , với mỗi x thì các bít V[h 1 (x)], V[h k (x)] được gán là 1. Bộ lọc Bloom cơ bản là một vector bit có độ dài m, được sử dụng để biểu diễn một cách khá hiệu quả một tập phần tử. Cho trước một tập X với n phần tử, bộ lọc Bloom được khởi tạo như sau: mỗi phần tử x i trong X sẽ được tính toán qua k hàm băm h 1 ,…,h k để tạo ra k giá trị nằm trong khoảng [1, m] là h 1 (x i ), ,h k (x i ) và các bit trong vector m–bit tương ứng có thứ tự là h 1 (x i ), ,h k (x i ) sẽ được gán là 1. 4 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Hình 1.1: Khởi tạo phần tử x Khi khởi tạo bộ lọc Bloom với phần tử x thì các bit V[h 1 (x)], V[h 2 (x)],…,V[h k (x)] được gán là 1. 1.3 Cơ chế hoạt động của bộ lọc Bloom Chức năng của bộ lọc Bloom là xác định một phần tử x có thuộc tập X hay không (các phần tử tập X đã được nạp vào trong bộ lọc). Nó được dùng là bước tiền xử lý của quá trình tìm kiếm. Nếu sau khi lọc qua bộ lọc Bloom trả về kết quả “không” thì không cần thực hiện việc tìm kiếm nữa, nếu trả về kết quả “có thể có” thì thực hiện tìm kiếm. Để xác định một phần tử x bất kỳ có thuộc tập X hay không, chúng ta cũng tính toán k giá trị là h 1 (x), ,h k (x) từ x qua k hàm băm. Nếu k bit trong vector m-bit có vị trí tương ứng là V[h 1 (x)], V[h 2 (x)],…,V[h k (x)] đều có giá trị là 1 thì x “có thể” có trong tập X với một xác suất nào đó, còn nếu chỉ cần ít nhất 1 bit có giá trị là 0 thì khẳng định là x không thuộc tập X. Chúng ta chỉ có thể khẳng định là x “có thể” thuộc tập X là bởi vì trong vector bit, 1 bit có thể được gán giá trị là 1 nhiều lần bởi nhiều phần tử trong X khi khởi tạo bộ lọc. Chỉ cần một bit 0 chúng ta có thể khẳng V m-1 01000 10100 00010 x h 1 (x) h 2 (x) h k (x) V 0 h 3 (x) 5 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng định x không thuộc X bởi vì nếu x thuộc X thì tất cả k bit tương ứng sẽ được gán là 1 khi khởi tạo bộ lọc với phần tử x đó. Hình 1.2: V[h 1 (x)], V[h 2 (x)] được gán giá trị bởi cả x k x i . 1.4 Ước lượng sai số Với một bộ lọc có thể xảy ra 2 lỗi sau: • Lỗi false positive: kiểm tra qua bộ lọc là không có nhưng tìm kiếm thực thì lại có. • Lỗi false negative: kiểm tra qua bộ lọc là có nhưng thực là không có. Với bộ lọc Bloom chúng ta có thể gặp phải lỗi false positive với xác suất rất nhỏ mà hoàn toàn không có khả năng xảy ra lỗi false negative. x i x k 6 h 2 (x)h 1 (x) h k (x) h 3 (x) V 0 V m-1 01010 10100 00010 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Hình 1.3: Minh hoạ lỗi false positive, các bit V[h 1 (x)], V[h 2 (x)],…,V[h k (x)] được gán bằng 1 bởi các phần tử khác nhau a, b, c, d. Khi kiểm tra phần tử x, chúng ta thấy tất cả các bit này bằng 1 nên khẳng định là x “có thể” thuộc X. Chúng ta sẽ xác định xác suất xảy ra lỗi false positive. Xác suất để một bit ngẫu nhiên của vector m-bit được gán là 1 bởi 1 hàm băm là m 1 . Và xác để bit đó không được gán là 1 là m 1 1− . Bởi n phần tử của X là n m       − 1 1 . Vì mỗi phần tử của X qua k hàm băm sẽ thiết lập k bit của vector m-bit thành 1 nên xác suất để 1 bit không được thiết lập thành 1 là nk m       − 1 1 và do đó xác suất để 1 bit được thiết lập thành 1 là nk m       −− 1 11 . Đối với mỗi phần tử sau khi kiểm tra qua bộ lọc thấy rằng có thể thuộc tập X thì tất cả k bit được xác định bởi k hàm băm phải là 1. Do đó xác suất để một phần tử thuộc tập X: 01000 10100 00010 h 2 (x) h k (x) V 0 V m-1 h 3 (x) a b c d x h 1 (x) 7 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng k nk m f               −−= 1 11 Với m rất lớn chúng ta có thể viết lại công thức tương đương sau: k m nk ef         −≈ − 1 Vì xác suất này không phụ thuộc vào phần tử cần kiểm tra nên được gọi là xác suất false positive. Xác suất false positive có thể giảm xuống nếu chọn giá trị m và k, n thích hợp. Giá trị m–độ dài vector bit cần phải khá lớn hơn so với n-kích thước tập phần tử. Với tỉ số n m cho trước, xác suất này có thể giảm xuống nếu tăng số hàm băm. Trong trường hợp tốt nhất, khi xác xuất false positive được cực tiểu hoá theo k, chúng ta nhận được mối liên hệ sau: 2ln n m k = Xác suất false positive tại điểm tối ưu nhất được cho như sau: k f       = 2 1 Chú ý rằng khi xác suất false positive cố định thì kích thước của bộ lọc-m cần phải tỉ lệ tuyến tính với kích thước của tập phần tử – n. 1.5 Bộ lọc Bloom đếm (counting Bloom Filters) Một đặc điểm của bộ lọc Bloom cơ bản là không thể xoá được một phần tử sau khi đã được đưa vào trong bộ lọc. Xoá một phần tử riêng biệt có nghĩa rằng k bit tương ứng trong vector m-bit được thiết lập trở về 0. 8 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Điều này có thể sẽ làm xáo trộn các phần tử khác đã được đưa vào trong bộ lọc mà đã băm tới các bit này. Hình 1.4: mỗi bit trong vectơ bit V có thể được gán bằng 1 nhiều lần bởi nhiều phần tử. Ví dụ ở hình trên bit V 7 được thiết lập là 1 hai lần bởi x i và x j . Bây giờ nếu muốn xoá x i ra khỏi bộ lọc thì chúng ta cần gán các bit V 3 , V 7 , V 9 , V m-4 trở lại là 0, điều này sẽ làm xáo trộn x j . Để giải quyết vấn đề này, ý tưởng về một bộ lọc Bloom đếm đã được đưa ra. Bộ lọc này có thêm một vector đếm có độ dài m tương ứng với mỗi bit của vector m-bit. Khi một phần tử được thêm vào hoặc xoá đi trong bộ lọc thì k giá trị tương ứng với k giá trị băm trong vector đếm sẽ tăng lên hoặc giảm đi 1. Khi một giá trị trong vector đếm được tăng từ 0 lên 1 thì bit tương ứng trong vector m-bit được thiết lập là 1 và ngược lại khi được giảm trở về 0 thì bit tương ứng đó được thiết lập là 0. V m-1 01000 10100 01011 x i h 1 (x) h 2 (x) h k (x) V 0 h 3 (x) x j 9 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Hình 1.5: Các giá trị đếm của vectơ đếm C tương ứng với các bit vectơ V bằng số lần các bit đó được gán bằng 1 bởi các phần tử. 1.6 Lựa chọn hàm băm Bộ lọc Bloom được sử dụng chủ yếu với số nguyên nên trong trường hợp này chúng ta chọn các hàm băm theo 2 phương pháp như sau: 1.6.1 Hàm băm sử dụng phương pháp chia h(k) = k mod m - k là khoá; m – kích thước của bảng - h(k) sẽ nhận các giá trị: 0, 1, …, m-1 Như vậy m sẽ ảnh hưởng tới h(k). Khi dùng phương pháp này cần phải tránh một số giá trị nhất định của m để hạn chế ảnh hưởng của m tới h(k), ví dụ: - m không được là bội số của 2: với m = 2p, giá trị h(k) sẽ là p bit cuối cùng của k trong biểu diễn nhị phân. V m-1 01010 10100 01011 x i h 1 (x) h 2 (x) h k (x) V 0 h 3 (x) x j 02010 10300 01011 C 0 C m-1 x k 10 [...]... B(W) • W bộ đếm tương ứng với W bộ lọc Bloom: C(1),…, C(W) • W bảng băm chứa các tiền tố có độ dài từ 1 đến W Hình 2.1: W bộ lọc Bloom có W bộ đếm được nạp vào W bảng băm có tiền tố có độ dài từ 1 đến W Hệ thống sử dụng một tập W bộ lọc Bloom đếm trong đó W là độ dài của địa chỉ đầu vào và mỗi bộ lọc hoạt động với một độ dài tiền tố Mỗi bộ lọc được... không được là bội số của 10: với m=10p, giá trị h(k) sẽ là p bit cuối cùng của k trong biểu diễn thập phân Với 2 trường hợp trên, h(k) không phụ thuộc đầy đủ vào khoá k mà chỉ phụ thuộc vào p bit cuối cùng trong khoá k Cách chọn tốt nhất là sao cho h(k) phụ thuộc đầy đủ vào khoá k, thường chọn m là số nguyên tố Với m là số nguyên tố, sẽ đảm bảo cho một phân bổ tương đối đều 1.6.2 Hàm băm sử dụng phương... chọn A phụ thuộc vào đặc trưng của dữ liệu Theo Knuth thì A, m thường được chọn bằng giá trị: A= 5 −1 = 0.618033988749…, m=10p được xem là tốt 2 Ví dụ: k = 1115552; m = 10000 11 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Chương 2: KHỚP TIỀN TỐ DÀI NHẤT SỬ DỤNG BỘ LỌC BLOOM Trong chương 1, chúng ta đã tìm hiểu cấu trúc cơ chế hoạt động của bộ lọc Bloom, sau đây chúng... để thấy được hiệu quả của bộ lọc Bloom 2.1 Định tuyến IP của router 2.1.1 Thiết bị định tuyến router Router là một thiết bị hoạt động trên tầng mạng, nó có thể tìm được đường đi tốt nhất cho các gói tin qua nhiều kết nối để đi từ trạm gửi thuộc mạng đầu đến trạm nhận thuộc mạng cuối Router có thể được sử dụng trong việc nối nhiều mạng với nhau cho phép các gói tin đi theo nhiều đường... lọc Bloom 2.3.1 Giới thiệu Thuật toán khớp tiền tố dài nhất (LPM – Longest Prefix Matching) sử dụng bộ lọc Bloom thực hiện các truy vấn song song trên các bộ lọc Bloom nhằm xác định thành phần tiền tố dài nhất của một địa chỉ đầu vào là thuộc tập tiền tố nào, các tập tiền tố này được sắp xếp theo các tập có độ dài tiền tố bằng nhau Bộ lọc Bloom. .. gắn với một bộ lọc Bloom để hỗ trợ tìm kiếm trên bảng băm đó Sau đây chúng ta sẽ đi nghiên cứu chi tiết thuật toán này 15 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng 2.3.2 Cấu trúc cơ bản Cấu trúc cơ bản của phương pháp này thể hiện trong hình 2.1 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) •... bộ lọc Bloom trong bài toán khớp tiền tố dài nhất được sử dụng khá hiệu quả trong việc tăng tốc độ định tuyến địa chỉ IP của router Trước hết chúng ta sẽ đi tìm hiểu một số khái niệm về định tuyến router và bảng định tuyến Sau đó trình bày về bài toán khớp tiền tố dài nhất cổ điển và bài toán khớp tiền tố dài nhất sử dụng bộ lọc Bloom để... hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng Hình 2.2: Cấu trúc cơ bản hoạt động của LPM sử dụng bộ lọc Bloom Xét một IPv4 mà sau khi lọc qua các bộ lọc chúng ta thấy các độ dài tiền tố khớp là 8, 17, 23 và 30, chúng ta có vector khớp là {8, 17, 23, 30} Nhớ rằng các bộ lọc Bloom có thể đưa ra lỗi false positive nhưng không bao giờ có lỗi false negative,... loại gói tin Trong các thuật toán phân loại gói tin chúng ta sẽ nghiên cứu sau đây, bộ lọc Bloom được sử dụng trước quá trình tìm kiếm một quy tắc trong một tập quy tắc Mỗi tập quy tắc sẽ được nạp vào trong bộ lọc Bloom tương ứng và khi tìm kiếm một quy tắc thì sẽ tiến hành lọc qua bộ lọc Bloom đó để kiểm tra xem quy tắc đó có thể có trong tập quy... gói tin Nó so sánh địa chỉ đích với bảng định tuyến để tìm ra 12 Giáo viên hướng dẫn: Nguyễn Mạnh Hùng HVTH: Trương Thị Thu Hằng 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 Nếu Router không khớp một lối nào trong bảng định tuyến không có đường mặc định nào thì nó sẽ hủy gói tin Mỗi bảng định tuyến bao gồm rất nhiều thành phần Trong phạm vi của bài toán đang tìm hiểu, . Nghiên cứu bộ lọc Bloom Filter và ứng dụng” gồm 3 nội dung chính: - Lý thuyết về bộ lọc Bloom - Tìm hiểu một số ứng dụng của bộ lọc Bloom: khớp tiền tố dài nhất, phân loại gói tin và. lọc Bloom: B(1),…, B(W). • W bộ đếm tương ứng với W bộ lọc Bloom: C(1),…, C(W). • W bảng băm chứa các tiền tố có độ dài từ 1 đến W. Hình 2.1: W bộ lọc Bloom có W bộ đếm và được. V[h 1 (x)], V[h 2 (x)] được gán giá trị bởi cả x k và x i . 1.4 Ước lượng sai số Với một bộ lọc có thể xảy ra 2 lỗi sau: • Lỗi false positive: kiểm tra qua bộ lọc là không có nhưng tìm kiếm

Ngày đăng: 19/06/2014, 20:57

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan