Đồ án tốt nghiệp đại học NGHIÊN cứu cấu TRÚC dữ LIỆU PHỤC vụ tìm KIẾM đa CHIỀU và ỨNG DỤNG

69 790 1
Đồ án tốt nghiệp đại học NGHIÊN cứu cấu TRÚC dữ LIỆU PHỤC vụ tìm KIẾM đa CHIỀU 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

MỤC LỤC Chương 2: CÁC THUẬT TOÁN CỔ ĐIỂN 13 2.1. Tìm kiếm tuần tự 13 2.3. Trie nhị phân (Binary Trie) 17 2.3.1. Tìm kiếm 18 2.3.2. Chèn tiền tố 19 2.3.3. Xoá tiền tố 20 2.3.4. Thực thi 20 2.4. Trie được nén đường dẫn 21 2.5. Cây tiền tố thay đổi (DP trie) 23 2.5.1. Định nghĩa cấu trúc dữ liệu 23 2.5.2. Thuật toán của DP trie 26 2.5.2.1. Chèn 1 khoá mới 26 2.5.2.2. Xoá một khoá 28 2.5.2.3. Tìm kiếm 30 1 LỜI NÓI ĐẦU Trước đây, mạng Internet chỉ cung cấp một dịch vụ để giải quyết với tất cả các gói tin đến cùng một đích xác định, phục vụ theo phương thức đến trước phục vụ trước (First Come First Serve). Tuy nhiên, sự phát triển nhanh chóng của Internet cùng với hàng loạt các dịch vụ mạng là nguyên nhân làm gia tăng sự tắc nghẽn mất gói tin tại các thiết bị định tuyến. Do đó Router Internet cần tiến hành phân loại nhanh chóng các gói tin để giảm các nút thắt của mạng nhằm phục vụ cho một số lượng lớn các dịch vụ mạng yêu cầu phân loại gói tin như: định tuyến, điều khiển truy nhập trong firewalls, mạng riêng ảo (Virtual Private Network - VPN), lập hóa đơn mạng (Traffic Billing) và chất lượng dịch vụ (Quality of Service - QoS). Cho đến hiện nay, nhiều chuyên gia đã nghiên cứu nhằm tìm ra các giải pháp tốt nhất cho việc phân loại gói tin. Phân loại gói tin đa chiều là một kỹ thuật khó, do đó các nhà nghiên cứu đã đưa ra nhiều thuật toán khác nhau. Mỗi thuật toán đều có những ưu điểm nhược điểm riêng về độ phức tạp của thuật toán, tốc độ xử lý, yêu cầu bộ nhớ lưu trữ. Trong nội dung đồ án tôi nghiên cứu về 01 thuật toán phân loại gói tin đa chiều: Tìm kiếm nhị phân theo mức (Binary Search on Levels - BSOL) Nội dung nghiên cứu bao gồm: - Tổng quan về định tuyến - Các thuật toán cổ điển - Tổng quan về Phân loại gói tin - Thuật toán phân loại gói tin đa chiều: BSOL - Cài đặt chương trình minh họa thuật toán. Trong quá trình thực hiện đồ án, mặc có rất nhiều cố gắng trong việc nghiên cứu, sưu tầm tài liệu được sự giúp đỡ nhiệt tình của giáo viên hướng dẫn, nhưng do điều kiện thời gian có hạn, trình độ kiến thức 2 còn nhiều hạn chế nên tôi không thể tránh được những thiếu sót. Tôi rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo những người quan tâm. Tôi xin chân thành cảm ơn thầy giáo TS. 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, tạo mọi điều kiện giúp đỡ tôi hoàn thành đồ án tốt nghiệp. 3 Chương 1: TỔNG QUAN VỀ ĐỊNH TUYẾN Định tuyến là yếu tố cốt yếu của tất cả các mạng truyền thông. Một thiết bị định tuyến trích ra đích từ phần đầu của một gói tin nó nhận được, chọn đường đi tốt nhất tới đích đó chuyển tiếp các gói dữ liệu tới thiết bị tiếp dọc theo đường đi tốt nhất này. Trong phạm vi chương này, tôi xin trình bày một số nội dung cơ bản về định tuyến trên Internet. 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 khác nhau tới đích. Router có địa chỉ riêng chỉ tiếp nhận, xử lý các gói tin gửi đến nó mà thôi. Khi một trạm muốn gửi gói tin qua Router thì trạm đó phải gửi gói tin tới địa chỉ trực tiếp của Router. Khi có gói tin đến, Router xử lý gửi tiếp. Khi xử lý một gói tin, Router phải tìm được đường đi của gói tin qua mạng. Để làm được điều đó nó phải tìm được đường đi tốt nhất trong mạng dựa trên các thông tin đã có về mạng trên bảng định tuyến. Để ngăn chặn việc mất mát số liệu, Router còn phải nhận biết đường nào có thể truyền ngừng truyền khi đường bị tắc bằng cách cài đặt các phương thức tránh tắc nghẽn. Các phương thức hoạt động của Router đảm bảo cho nó có thể nối được với các Router khác, qua đó chia sẻ thông tin về mạng hiện có. Các chương trình chạy trên Router sẽ xây dựng bảng chỉ đường thông qua việc trao đổi các thông tin với các Router khác. 4 Trong phương thức vector khoảng cách, mỗi Router luôn truyền đi các thông tin về bảng định tuyến của mình trên mạng, thông qua đó các Router khác sẽ cập nhật lên bảng chỉ đường của mình. Trong phương thức trạng thái tĩnh, các Router chỉ truyền các thông báo khi phát hiện có sự thay đổi trong mạng chỉ khi đó các Router tự cập nhật lại bảng định tuyến, thông tin truyền đi khi đó thường là thông tin về đường truyền. 1.2 Định tuyến trên Internet 1.2.1 Khái niệm về định tuyến Định tuyến là tiến trình học tất cả các hướng đi trong một mạng chuyển tiếp các gói tin trên các hướng đi này. Một cách cụ thể, định tuyến là quá trình định hướng gói tin về phía địa chỉ đích, hay nói cách khác là xác định đường đi từ mạng này đến mạng khác. Router sẽ quyết định đường đi của gói tin đến đúng địa chỉ đích dựa vào bảng định tuyến chứa trong bộ nhớ. Bảng định tuyến này được khởi tạo giá trị ban đầu, các đầu vào có thể tạo bằng tay hoặc tự động. Có thể phân chia thành 3 kiểu định tuyến - Định tuyến tĩnh - Định tuyến động - Định tuyến mặc định: Một gói tin mà Router không biết địa chỉ đích của nó được gửi ra cổng mặc định. Ngày nay Internet bao gồm hàng nghìn các gói tin được kết nối trên các mạng bởi các Router. Khi một máy trạm gửi một gói tin vào Internet, các Router giữ chậm gói tin đó định hướng đến địa chỉ đích cuối cùng. Các Router trao đổi thông tin định tuyến với mỗi Router khác, sử dụng thông tin thu được để tính toán đường đi cho tất cả các địa chỉ đích có thể 5 đến được. Mỗi gói tin được xử lý ngay định hướng tới Router tiếp theo dựa trên địa chỉ đích của nó. 1.2.2 Thuật toán định tuyến Một mạng chuyển mạch gói bao gồm các nút mạng (các Router switch) được kết nối với nhau bởi các đường truyền thông có cấu trúc giống một mạng lưới. Gói tin được truyền từ một nút mạng tới một nút mạng khác có rất nhiều đường khác nhau. Tuy nhiên đường tốt nhất chỉ có một việc tìm được đường này phụ thuộc vào hàm mục tiêu mà người điều hành mạng cố gắng tối ưu. Một thuật toán định tuyến phải biết toàn bộ trạng thái về mạng khi mạng đang hoạt động. Các tiêu chí chính để đánh giá một thuật toán định tuyến tốt trên Router cũng phụ thuộc vào hàm mục tiêu mà con người cố gắng tối ưu. Tuy nhiên, nói chung một thuật toán định tuyến thường hướng tới một hoặc nhiều hơn các mục đích sau: 1. Phân phát nhanh chính xác các gói tin 2. Khả năng thích nghi với những thay đổi cấu hình mạng là kết quả từ một nút hoặc một đường kết nối bị đứt 3. Thích nghi với việc thay đổi địa chỉ nguồn – đích tải lưu lượng 4. Khả năng gửi các gói tin ra khỏi các đường liên kết bị tắc tạm thời 5. Khả năng kiểm tra sự kết nối của mạng 6. Chi phí thấp 1.3 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. 6 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. Vì vậy, cần phải có một bảng định tuyến đầy đủ chính xác. Một nút mạng hay một Router phải xem xét bảng định tuyến của mình trước khi chuyển gói tin đến địa chỉ ở xa. Trong bảng, mỗi địa chỉ đích được gán tương ứng với một địa chỉ Router cần đến ở chặng tiếp theo. Mục đích: - Lưu trữ thông tin về các mạng con khác trong mạng cách để đến được các nút mạng trong mạng đó. - Chỉ ra địa chỉ IP nào trong bài toán định hướng tiếp theo để đến được nút mạng đích. - Chỉ ra giao diện mạng được sử dụng để chuyển gói tin tới đích. Mỗi bảng định tuyến bao gồm rất nhiều thành phần. Trong phạm vi đồ án ta giả sử đã có một bảng định tuyến như bảng 1.1, bao gồm các trường sau: Rule Name: tên của quy tắc Prefix Name: tên tiền tố Prefix: tiền tố được đưa ra bởi CIDR 1 Next Hop: bước truyền tiếp theo Ranges Start: giá trị bắt đầu của đoạn, khi coi một tiền tố là một đoạn Ranges Finish: giá trị kết thúc của đoạn Priority: trường ưu tiên, là giá trị để đánh giá độ ưu tiên của các nhóm địa chỉ. Có nhiều cách để đánh giá độ ưu tiên cho các nhóm địa chỉ ví dụ như dựa vào băng thông của mạng, dựa vào khoảng cách các vùng, dựa vào chiều dài tiền tố… 1 Classless Inter-Domain Routing 7 Rule Name Prefix Name Prefix Next Hop Ranges Start Ranges Finish Priority R1 P1 * N1 0 31 1 R2 P2 0101* N2 10 11 4 R3 P3 100* N3 16 19 3 R4 P4 1001* N4 18 19 4 R5 P5 10111 N5 23 23 5 Bảng 1.1. Một bảng định tuyến với 5 quy tắc (W = 5) Ta sử dụng W là ký hiệu chiều dài lớn nhất có thể của một tiền tố. Trong IPv4, W = 32 trong IPv6, W = 128. Trong bảng 1.1, với W = 5, tiền tố P1 khớp với tất cả các địa chỉ đích, được gọi là default prefix. Tiền tố P3 khớp với các địa chỉ từ 16 đến 19. Nếu một địa chỉ tiền tố của một quy tắc khớp với địa chỉ đích của các gói tin đến, Next Hop của quy tắc này sẽ được sử dụng để định hướng gói tin. Khi một địa chỉ đích đến khớp với nhiều quy tắc trong bảng định tuyến thì việc chọn một Next Hop nào đó phụ thuộc vào phương pháp khớp tiền tố. Có ba biện pháp so khớp thông dụng khác nhau: Biện pháp khớp tiền tố đầu tiên, bảng quy tắc giả sử là một danh sách tuyến tính của các luật với chỉ số từ 1 đến n, cho một bảng có n quy tắc. Quy tắc đầu tiên khớp với gói tin đến được sử dụng để định tuyến gói tin. Ví dụ khi địa chỉ đích đến là 19 thì Next Hop là N1, vì tiền tố * là tiền tố đầu tiên khớp với địa chỉ 19. Nhận thấy quy tắc R1 khớp với tất cả các địa chỉ đích. Tuy nhiên khi định tuyến tất cả các gói tin theo quy tắc R1 thì kết quả việc định tuyến khó thể nói sẽ xảy ra điều gì. Do vậy đánh thứ tự cho các quy tắc phải thay đổi để các quy tắc khác có thể được sử dụng, tiền tố mặc định nên đặt ở cuối bảng quy tắc. 8 Trong khớp tiền tố có độ ưu tiên cao nhất, mỗi quy tắc được gán một độ ưu tiên, một quy tắc với độ ưu tiên cao nhất được chọn từ các quy tắc khớp với gói tin đến (giả sử rằng các độ ưu tiên của các tiền tố khác nhau). Để tránh khả năng sử dụng thêm biện pháp quyết định nữa thì phải gán giá trị ưu tiên khác nhau cho các luật khác nhau. Biện pháp khớp đầu tiên là biện pháp đặc biệt của khớp có độ ưu tiên cao nhất. Khớp đặc trưng nhất: trong tất cả các tiền tố cùng khớp với địa chỉ đích thì tiền tố nào đặc trưng nhất sẽ được chọn để định tuyến gói tin. Bộ lọc F1 được gọi là đặc trưng hơn bộ lọc F2 nếu F2 khớp với tất cả các gói tin mà được khớp bởi F1 ít nhất có một gói tin không khớp với F1. Ví dụ: đoạn [2,4] đặc trưng hơn [1,6], [5,9] khớp đặc trưng hơn [5,12]. Vì [2,4] [8,14] không chứa nhau nên không thể so sánh đoạn nào đặc trưng hơn đoạn nào. Vì thế [4,14] [6,20] có giao nhau nhưng không so sánh được đoạn nào cụ thể hơn đoạn nào. Tiền tố 110* đặc trưng hơn tiền tố 11*. Khi các tiền tố cùng khớp với một địa chỉ đích d thì tiền tố đặc trưng nhất là tiền tố dài nhất 2 nên biện pháp khớp đặc trưng nhất còn gọi là khớp tiền tố dài nhất. Trong trường hợp bảng 1.1, các quy tắc P1, P3, P4 đều khớp với địa chỉ 19. Với biện pháp này, quy tắc P4 được chọn. 1.3.1 Bảng định tuyến tĩnh Là cách mà các quy tắc được đưa vào bảng định tuyến bằng tay. Trong trường hợp này, gói tin vẫn được gửi đến đích mà không căn cứ vào trạng thái của mạng. Đích có hoạt động hay không, các đường tĩnh vẫn giữ nguyên trong bảng đầu ra, lưu lượng vẫn được gửi tới đích đã được xác định trước. Đặc điểm của bảng Router tĩnh: 2 Độ dài của một tiền tố là số bit trong tiền tố đó (không sử dụng đến kí tự * khi xác định độ dài). Với bảng dữ liệu trên, độ dài của P1 là 0 của P2 là 4. 9 1. Thời gian xử lý một gói tin đến: là thời gian cần thiết để tìm trên bảng một quy tắc để sử dụng. Chúng ta thường gọi đây là phép tìm kiếm. 2. Thời gian tiền xử lý: là thời gian tạo cấu trúc dữ liệu cho bảng quy tắc. 3. Yêu cầu về bộ nhớ: dung lượng bộ nhớ cần thiết để cấu trúc lại bảng quy tắc. Đối với bảng tĩnh để thực hiện các thao tác cập nhật, người ta sử dụng 2 bảng: bảng làm việc (working) bảng phụ (shadow). Việc tìm kiếm được thực hiện trên bảng làm việc còn việc cập nhật được thực hiện trên bảng phụ (theo thời gian thực hoặc là cập nhật theo gói với khoảng thời gian thích hợp). Sau một chu kỳ, bảng phụ sẽ được sao chép sang bảng chính bộ lưu trữ của bảng làm việc được xóa. Trong kiểu cập nhật này, nhiều gói tin phân loại sai được định tuyến, do việc copy không được thực hiện ngay lập tức. Số lượng các gói tin bị phân loại sai phụ thuộc vào chu kỳ cập nhật của bảng làm việc. Do vậy cần giảm thời gian tiền xử lý để giảm số gói tin đã phân loại bị định tuyến sai. Hơn nữa, để cập nhật bảng tĩnh, phải thêm bộ nhớ cho bảng phụ cho việc xây dựng lại theo chu kỳ của bảng làm việc. Qua các đặc điểm cơ bản của bảng định tuyến tĩnh, ta nhận thấy loại bảng này có một số ưu nhược điểm nhất định. Việc cập nhật được thực hiện bằng tay nên người quản trị có toàn quyền điều khiển thông tin trong bảng định tuyến. Tuy vậy, khi kích thước của mạng tăng lên 3 , độ phức tạp của việc cấu hình tăng lên. Bảng định tuyến kiểu này không có khả năng thích ứng với mạng có cấu trúc thay đổi. Trên thực tế, loại bảng này rất ít được sử dụng. 1.3.2 Bảng định tuyến động Định tuyến động là quá trình mà trong đó giao thức định tuyến phải tìm ra đường tốt nhất trong mạng duy trì chúng. Gói tin có thể đến được 3 Giả sử một mạng có n Router thì cần phải cấu hình n*(n-1) câu lệnh trên tất cả các Router. 10 [...]... Cây tìm kiếm ưu tiên Cây tìm kiếm ưu tiên là một cấu trúc dữ liệu được sử dụng để biểu diễn một bộ có dạng (key1, key2, data) với key 1 ³ 0, key 2 ³ 0 không có hai bộ nào có cùng giá trị key1 Cấu trúc dữ liệu đồng thời xảy ra là cây nhỏ nhất trên key2 (nghĩa là giá trị key2 trong mỗi node của cây thì £ key 2 trong mỗi node con) cây tìm kiếm trên key1 Có hai cây PST phổ biến là: 15 1 Cây tìm kiếm. .. khớp tiền tố dài nhất 2.3.1 Tìm kiếm Khi tìm kiếm trong trie ta sẽ tìm theo các bit của địa chỉ đích, bắt đầu tìm kiếm luôn luôn tìm từ nút gốc của trie Trong khi duyệt trie, chúng ta sẽ tới thăm các nút (có màu xám) chứa thông tin về tiền tố Việc tìm kiếm cần lưu lại thông tin về tiền tố khớp gần nhất Tìm kiếm kết thúc khi không còn nhánh nào để đi tiếp, tiền tố tốt nhất chính là tiền tố được... địa chỉ là 1 Nhưng nút này không có nhánh nào được gán nhãn 1, vì vậy việc tìm kiếm kết thúc d chính là tiền tố khớp cuối cùng là tiền tố tốt nhất Đánh giá thuật toán tìm kiếm: Một trie cần O(NW) ô nhớ với N là số tiền tố, W là số bit của tiền tố Để tìm ra tiền tố khớp dài nhất cần W lần truy nhập trong trường hợp xấu nhất Vậy độ phức tạp của thuật toán tìm kiếm là O(W) 2.3.2 Chèn tiền tố Để chèn... Internet, thì việc tối ưu hóa vấn đề tìm kiếm địa chỉ IP đã được rất nhiều nhà nghiên cứu chú ý đến Dưới đây là một số thuật toán tìm kiếm địa chỉ IP cổ điển: 2.1 Tìm kiếm tuần tự Danh sách liên kết là một trong những cấu trúc dữ liệu đơn giản nhất Việc tạo ra danh sách mọi tiền tố cho bảng chuyển tiếp cũng khá dễ dàng Cần phải duyệt hết danh sách liên kết mới có thể tìm ra tiền tố dài nhất khớp Tiền... nhánh Do đó độ phức tạp là O(N) Nhận xét: Trie được nén đường dẫn giảm yêu cầu về bộ nhớ mà vẫn không làm tăng độ phức tạp của thuật toán tìm kiếm 2.5 Cây tiền tố thay đổi (DP trie) DP-trie được phát triển từ PATRICIA trie với mục đích lưu trữ tiền tố đảm bảo thời gian tìm kiếm nhỏ, bất chấp kích cỡ của cây chiều dài của tiền tố DP trie có 2 thuật toán: Chèn xoá 2.5.1 Định nghĩa cấu trúc. .. lên đột ngột một phần kết nối mạng bị lỗi Với bảng định tuyến động, ta nên nhắc đến thời gian cần để chèn/xóa một quy tắc Trong bảng quy tắc động, ban đầu cấu trúc dữ liệu được khởi tạo với một cấu trúc dữ liệu tĩnh sau đó chèn từng quy tắc một Các đặc điểm của bảng định tuyến động: 1 Thời gian tìm kiếm địa chỉ tiền tố trong bảng 2 Thời gian chèn Thời gian cần để chèn một quy tắc mới vào bảng 3... Danh sách liên kết tương ứng với tiền tố trong bảng 2.1 Phép toán chèn (Insertion) xoá (deletion) trong danh sách liên kết được thực hiện đơn giản Độ phức tạp của việc lưu trữ N tiền tố trong cấu 13 trúc dữ liệu này là O(N) Độ phức tạp của thuật toán tìm kiếm cao nếu như N (số tiền tố) lớn Hình 2.2 Danh sách liên kết được sắp xếp Thời gian trung bình tìm kiếm của thuật toán này sẽ được cải thiện... một dịch vụ nỗ lực tối đa (best – effort) để giải quyết với tất cả các gói tin đến cùng một đích đã định rõ phục vụ theo phương thức đến trước phục vụ trước (FCFS) Tuy nhiên, sự phát triển nhanh chóng của Internet là nguyên nhân làm tăng sự tắc nghẽn mất gói tin tại các router Kết quả là một số người sử dụng phải đồng ý trả chi phí rất cao để nhận được các dịch vụ tốt hơn từ mạng Để tối đa thu... tố được sắp xếp theo chiều giảm dần theo độ dài thuật toán tìm kiếm này sẽ dừng lại ngay, không duyệt danh sách liên kết nữa nếu như nó đã tìm được tiền tố đầu tiên thay vì phải duyệt tới hết danh sách 2.2 Cây 2.2.1 Cây 1 bit Cây 1 bit là cây mà mỗi node trong cây có trường con trái, dữ liệu trái, con phải dữ liệu phải Các node tại mức l-1 của cây lưu trữ các tiền tố mà chiều dài của chúng là... trước hết ta cần tìm kiếm cho tới khi tới được nút không có nhánh tương ứng, lúc đó ta sẽ chèn nút mới vào Hình 2.5 Chèn tiền tố vào trie nhị phân Ví dụ: chèn tiền tố 110 0110 vào trie Ta giả sử đó là tiền tố P 10 P11 Bít đầu tiên của P10 là 1, ta dịch xuống nhánh phải đó là nút P 4 Tiếp theo là bit thứ 2 ta cũng dịch chuyển về nhánh phải Bit thứ 3 là 0 vì vậy ta cần dịch xuống nhánh trái, tuy nhiên . quy tắc động, ban đầu cấu trúc dữ liệu được khởi tạo với một cấu trúc dữ liệu tĩnh và sau đó chèn từng quy tắc một. Các đặc điểm của bảng định tuyến động: 1. Thời gian tìm kiếm địa chỉ tiền tố. tìm kiếm địa chỉ IP đã được rất nhiều nhà nghiên cứu chú ý đến. Dưới đây là một số thuật toán tìm kiếm địa chỉ IP cổ điển: 2.1. Tìm kiếm tuần tự Danh sách liên kết là một trong những cấu trúc. Nhưng nút này không có nhánh nào được gán nhãn 1, vì vậy việc tìm kiếm kết thúc và d chính là tiền tố khớp cuối cùng và là tiền tố tốt nhất. Đánh giá thuật toán tìm kiếm: Một trie cần O(NW)

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

Từ khóa liên quan

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

Tài liệu liên quan