Mỗi gói tin được xử lý ngay và định hướng tới Router tiếp theodự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 vàswitch
Trang 1MỤC LỤC
LỜI NÓI ĐẦU 3
Chương 1: TỔNG QUAN VỀ ĐỊNH TUYẾN 5
1.1 Thiết bị định tuyến - Router 5
1.2 Định tuyến trên Internet 6
1.2.1 Khái niệm về định tuyến 6
1.2.2 Thuật toán định tuyến 7
1.3 Bảng định tuyến 7
1.3.1 Bảng định tuyến tĩnh 10
1.3.2 Bảng định tuyến động 12
Chương 2: CÁC THUẬT TOÁN CỔ ĐIỂN 14
2.1 Tìm kiếm tuần tự 14
2.2 Cây 15
2.3 Trie nhị phân (Binary Trie) 18
2.3.1 Tìm kiếm 19
2.3.2 Chèn tiền tố 20
2.3.3 Xoá tiền tố 21
2.3.4 Thực thi 21
2.4 Trie được nén đường dẫn 22
2.5 Cây tiền tố thay đổi (DP trie) 24
2.5.1 Định nghĩa và cấu trúc dữ liệu 24
2.5.2 Thuật toán của DP trie 27
2.5.2.1 Chèn 1 khoá mới 27
2.5.2.2 Xoá một khoá 29
2.5.2.3 Tìm kiếm 31
Chương 3: GIỚI THIỆU PHÂN LOẠI GÓI TIN 32
3.1 Giới thiệu 32
3.2 Bài toán phân loại gói tin 34
Trang 23.2.1 Định nghĩa phân loại gói tin 34
3.2.2 Bài toán phân loại gói tin 34
3.3 Một số cấu trúc cơ bản sử dụng trong phân loại gói tin 36
3.3.1 Giới thiệu 36
3.3.2.1 Lý thuyết về đoạn 37
Chương 4: THUẬT TOÁN TÌM KIẾM NHỊ PHÂN THEO MỨC (BINARY SEARCH ON LEVELS) 41
4.1 Giới thiệu chung 41
4.2 Thuật toán Tìm kiếm nhị phân theo mức (BSOL) 41
4.2.1 BSOL một chiều 42
4.2.2 BSOL hai chiều 51
4.2.3 BSOL k chiều (k>2) 57
4.3 Các kết quả thực nghiệm 58
4.3.1 So sánh với sơ đồ 1 chiều của Waldvogel et al [8] 58
4.3.2 Yêu cầu bộ nhớ của BSOL khi là một hàm của T 60
4.3.3 So sánh với sơ đồ k_D của Baboescu et al [9] 61
4.4 Kết luận 63
Chương 5: CÀI ĐẶT THUẬT TOÁN 64
5.1 BSOL 1 chiều 64
5.2 BSOL 4 chiều 66
KẾT LUẬN 70
TÀI LIỆU THAM KHẢO 71
Trang 3LỜI NÓI ĐẦU
Trước đây, mạng Internet chỉ cung cấp một dịch vụ để giải quyết vớitất cả các gói tin đến cùng một đích xác định, và 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ểnnhanh chóng của Internet cùng với hàng loạt các dịch vụ mạng là nguyênnhân làm gia tăng sự tắc nghẽn và 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ảmcá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 trongfirewalls, mạng riêng ảo (Virtual Private Network - VPN), lập hóa đơnmạ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ácgiả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ácnhau Mỗi thuật toán đều có những ưu điểm và 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óitin đ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 dù có rất nhiều cố gắng trongviệc nghiên cứu, sưu tầm tài liệu và được sự giúp đỡ nhiệt tình của giáoviên hướng dẫn, nhưng do điều kiện thời gian có hạn, trình độ kiến thức
Trang 4cò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ấtmong nhận được sự đóng góp ý kiến của các thầy cô giáo và những ngườiquan 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, và 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
Trang 5Chươ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ộtthiế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 đó và 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ộcmạng đầu đến trạm nhận thuộc mạng cuối Router có thể được sử dụngtrong việc nối nhiều mạng với nhau và 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 và 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óitin tới địa chỉ trực tiếp của Router Khi có gói tin đến, Router xử lý và gửitiếp
Khi xử lý một gói tin, Router phải tìm được đường đi của gói tin quamạng Để làm được điều đó nó phải tìm được đường đi tốt nhất trong mạngdự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 đườngnào có thể truyền và ngừng truyền khi đường bị tắc bằng cách cài đặt cácphươ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ácchương trình chạy trên Router sẽ xây dựng bảng chỉ đường thông qua việctrao đổi các thông tin với các Router khác
Trang 6Trong phương thức vector khoảng cách, mỗi Router luôn truyền đicác thông tin về bảng định tuyến của mình trên mạng, thông qua đó cácRouter 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ôngbáo khi phát hiện có sự thay đổi trong mạng và chỉ khi đó các Router tự cậpnhậ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 và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 đầuvà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
Trang 7đến được Mỗi gói tin được xử lý ngay và định hướng tới Router tiếp theodự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 vàswitch) được kết nối với nhau bởi các đường truyền thông có cấu trúcgiố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útmạng khác có rất nhiều đường khác nhau Tuy nhiên đường tốt nhất chỉ cómột và 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ênRouter 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ặcnhiều hơn các mục đích sau:
1 Phân phát nhanh và 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ếtquả 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ưulượ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ạmthờ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ầnHeader của gói tin Nó so sánh địa chỉ đích với bảng định tuyến để tìm ramộ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
Trang 8Nếu Router không khớp một lối nào trong bảng định tuyến và 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 đủ và 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ủamì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
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 CIDR1
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ựavào chiều dài tiền tố…
Trang 9Name
Prefix Name
Prefix Next Hop Ranges
Start
Ranges Finish
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 và 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ộtquy 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 địnhtuyến thì việc chọn một Next Hop nào đó phụ thuộc vào phương pháp khớptiề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óitin 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
Trang 10Trong 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, và một quy tắc với độ ưu tiên cao nhất được chọn từ các quy tắckhớ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óitin mà được khớp bởi F1 và í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], và [5,9] khớp đặc trưng hơn [5,12] Vì[2,4] và [8,14] không chứa nhau nên không thể so sánh đoạn nào đặc trưnghơn đoạn nào Vì thế [4,14] và [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ất2 nên biện pháp khớp đặc trưng nhất còn gọi là khớp
Đặ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 và của P2 là 4.
Trang 111 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) và bảng phụ (shadow) Việc tìmkiế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ệntrên bảng phụ (theo thời gian thực hoặc là cập nhật theo gói với khoảngthời gian thích hợp) Sau một chu kỳ, bảng phụ sẽ được sao chép sang bảngchính và 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ựchiệ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ụ và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ảngnà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ằngtay nên người quản trị có toàn quyền điều khiển thông tin trong bảng địnhtuyến Tuy vậy, khi kích thước của mạng tăng lên3, độ phức tạp của việccấu hình tăng lên Bảng định tuyến kiểu này không có khả năng thích ứngvớ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
Trang 12đích tùy thuộc vào sự tồn tại và trạng thái của mạng đó Nếu một đích rờikhỏi mạng, đường đi tới đích đó sẽ bị mất đi trong bảng định tuyến, và góitin sẽ không được gửi tới đích đó.
Có rất nhiều cách để xây dựng bảng định tuyến động Nhưng tất cảđều thực hiện theo quy tắc chung sau: Router sẽ khám phá tất cả các tuyếnđường đến đích có thể và thực hiện một số quy tắc đã định trước để xácđịnh ra đường tốt nhất đến đích
Trong một bảng quy tắc động, các quy tắc được chèn/xóa thườngxuyên Kiểu bảng này không chèn/xóa theo từng khối, và việc chèn/xóađược thực hiện trong thời gian thực
Đầu tiên, việc cập nhật được thực hiện thường xuyên trong vùngBackbone Bảng định tuyến cần phải cập nhật để phản ánh sự thay đổi củaRouter Tốc độ cập nhật đạt tới 1000 trên giây [Labovitz] Mạng sẽ cậpnhật các lỗi phát sinh từ một Router bị hỏng, Router chỉnh sửa
Thứ hai, một tiến trình cập nhật nhanh được ưu tiên hơn vì trong quátrình cấu trúc lại, thời gian trễ từ điểm này sang điểm khác tăng lên, số góitin bị mất tăng lên đột ngột và 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óamột quy tắc Trong bảng quy tắc động, ban đầu cấu trúc dữ liệu được khởitạ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ố 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 Thời gian xóa Thời gian để xóa một quy tắc từ bảng.
4 Yêu cầu bộ nhớ
Bảng định tuyến động chỉ làm việc trên một bảng làm việc và sự cậpnhật được làm trực tiếp trên bảng đó trong thời gian thực Trong kiểu cậpnhật này, không gói tin nào được phân lớp không thích hợp Tuy nhiên,
Trang 13việc phân lớp và chuyển tiếp gói tin có khi bị trễ cho đến khi tiến trình cậpnhật hoàn thành Để giảm thiểu thời gian trễ này, việc cập nhật phải thựchiện nhanh.
Với kiểu bảng động, yêu cầu xử lý của CPU của Router cao hơn kiểubảng tĩnh Tuy nhiên, việc cấu hình và tự động tìm ra những tuyến đườngthay thế nếu như mạng thay đổi lại đơn giản hơn rất nhiều
Ngày nay, số lượng các hệ thống tự trị đang tiếp tục tăng lên, đó là lý
do đòi hỏi việc tăng tốc độ cập nhật của các bảng định tuyến động Trongphạm vi đồ án, ta xây dựng một cấu trúc và giải thuật cho bảng định tuyếnđộng để giảm thời gian cập nhật của bảng
Trang 14Chương 2: CÁC THUẬT TOÁN CỔ ĐIỂN
Với sự phát triển mạnh mẽ của 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
N (số tiền tố) lớn
Trang 15Hình 2.2 Danh sách liên kết được sắp xếpThời gian trung bình tìm kiếm của thuật toán này sẽ được cải thiệnnếu tiền tố được sắp xếp theo chiều giảm dần theo độ dài Và thuật toán tìmkiế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 và 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à l Nếu bit phải cùng của một tiền tố có chiều dài l là 0 thì tiền tố này được lưu trữ trong trường dữ liệu trái của node tại mức l-1; ngược lại tiền tố được lưu trong trường dữ liệu phải của node ở mức l-1 Tại mức i của cây, việc phân nhánh được thực hiện bằng cách
kiểm tra bit i (các bit được đánh số từ trái sang phải bắt đầu từ 0) của mộttiền tố hoặc địa chỉ đích Khi bít i là 0, thì ta di chuyển đến cây con trái; khibit i là 1 thì ta di chuyển đến cây con phải Hình 2.4 là ví dụ 8 tiền tố vàbiểu diễn tương ứng của chúng trên cây 1 bit
Với bất kỳ địa chỉ đích d nào, tất cả các tiền tố mà khớp với d nằmtrên đường tìm kiếm sẽ được xác định bằng các bit của d Bằng cách theođường tìm kiếm, ta có thể xác định được tiền tố khớp dài nhất, tiền tố đầutiên trong bảng khớp với d cũng như độ ưu tiên cao nhất của tiền tố khớp
Trang 16trong thời gian O(W) Hơn nữa các tiền tố có thể được chèn hoặc xóa trongthời gian O(W) Không gian nhớ yêu cầu là O(nW)
Hình 2.3: 8 tiền tố và biểu diễn tương ứng trên cây 1 bit
Router backbone IPV4 có thể có nhiều hơn 100 ngàn tiền tố Thậmchí các tiền tố trong một router backbone có thể có chiều dài bất kỳ giữa 0
và W, các tiền tố tập trung ở chiều dài từ 16 đến 24, bởi vì ở thời kỳ đầu thìđịa chỉ Internet được phân phối theo các lớp Tất cả các địa chỉ trong mạnglớp B có cùng 16 bit đầu tiên, trong khi các địa chỉ trong lớp C có cùng 24bit đầu tiên, các địa chỉ trong lớp A có cùng 8 bit đầu tiên Tuy nhiên, cóthể có nhiều nhất 256 mạng lớp A (tương đương với nhiều nhất 256 tiền tố
8 bit trong bảng luật)
2.2.2 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ểudiễn một bộ có dạng (key1, key2, data) với key1 0³ ,key2 0³ và 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âynhỏ nhất trên key2 (nghĩa là giá trị key2 trong mỗi node của cây thì £key2
trong mỗi node con) và cây tìm kiếm trên key1 Có hai cây PST phổ biếnlà:
1 Cây tìm kiếm ưu tiên nguyên thủy (RPST)
Trang 172 Cây tìm kiếm ưu tiên đỏ - đen (RBPST)
McCreight đã đề xuất một phương pháp biểu diễn một PST của mộttập các đoạn với điểm kết thúc khác nhau Biểu diễn này sử dụng ánh xạsau của một đoạn lên một bộ PST:
(key1,key2,data)=(finnish(r),start(r),data) (*)
Với data là thông tin bất kỳ gắn với đoạn (ví dụ: next hop) Mỗi đoạn r
được ánh xạ tới một điểm map1=(x,y)=(key1,key2)=(finnish(r),start(r))
theo không gian hai chiều
Cho ranges(d) là một tập các đoạn khớp với d Mc Creight đã nhận thấy
rằng: khi ánh xạ của Phương trình (*) được sử dụng để thu được một tập
điểm P = map1(R) từ một tập đoạn R, sau đó ranges(d) được tạo bởi các
điểm nằm trên hình chữ nhật (bao gồm các điểm nằm trong biên) được xác
định như sau: x left =d, x right =¥ , y top =d, y bottom =0 Các điểm này thu được
thông qua phương thức enumerateRectangle(x left ,x right ,y top ) =
enumerateRectangle(d, ¥ ,d) của một PST (y bottom luôn bằng 0)
Khi một RPST được sử dụng để biểu diễn tập điểm P thì độ phức tạp
của enumerateRectangle(x left ,x right ,y top ) là O(logmaxX + s) với maxX là giá
trị x lớn nhất trong P và s là số lượng điểm trong truy vấn hình chữ nhật
Khi tập điểm được biểu diễn như một RBPST thì độ phức tạp là O(logn+s),
với n= |P| Một điểm (x,y)có thể được chèn vào hoặc xóa khỏi RPST (hoặc
RBPST) trong thời gian O(log maxX) (hoặc O(log n)).
Cho R là một tập đoạn tiền tố Để đơn giản, ta giả sử rằng R bao gồmcác đoạn tương ứng với các tiền tố * Với giả sử này, LMP(d) được địnhnghĩa cho mỗi d Có thể xác nhận rằng LMP(d) là tiền tố mà đoạn của nó là
[maxStart(ranges(d)),minFinnish(ranges(d))] Để tìm kiếm đoạn này một
cách dễ dàng, đầu tiên ta chuyển đổi P=map1(R) thành một tập điểm
transform1(P) để không có hai điểm nào của transform1(P) có cùng giá trị
x Sau đó, ta biểu diễn transform1(P) như một PST Với mỗi (x,y)Î P, định
Trang 18nghĩa transform1(x,y)=(x’,y’)=(2 W x-y + 2 W – 1,y) Sau đó, transform1(P)={transform1(x,y)| (x,y)Î P}.
Ta thấy rằng 0£ x'<22W với mỗi ( ', ')x y Î transform P1( ) và không
có cùng giá trị x’ Cho PST1(P) là PST cho transform1(P) Phép toán
2.3 Trie nhị phân (Binary Trie)
Binary Trie hoặc còn gọi là trie Trie là viết tắt của từ
“retrieval”.Trong trie các nhánh được gán nhãn, nhánh trái của một nútđược gán nhãn “0”, nhánh phải được gán nhãn “1” Mỗi nút n trong mộttrie đại diện cho một chuỗi bit, Chuỗi bit này chính là nhãn của các nhánhdẫn từ nút gốc tới nút n này
Ví dụ: nút P3 trong hình 2.3 là đại diện cho tất cả các địa chỉ bắt đầubằng chuỗi 001 Những nút có màu xám là những nút ứng với các tiền tố.Những nút này chứa thông tin chuyển tiếp
Lưu ý: các tiền tố không những được định vị ở các nút lá mà còn ở một vài nút nhánh.
Trang 19Hình 2.4 Trie nhị phân tương ứng với tiền tố trong bảng 2.1
Nhận thấy rằng, tiền tố P2 và P3 là trường hợp cụ thể của tiền tố P1.Địa chỉ của P2 và P3 trùm lên địa chỉ của P1 Bản thân P1 đã là tiền tố của P2
và P3 Vì vậy có địa chỉ có thể khớp nhiều tiền tố
Ví dụ: Địa chỉ bắt đầu là 001 vừa khớp tiền tố P1 vừa khớp tiền tố P3.Tuy nhiên, trong trường hợp này tiền tố P3 sẽ được ưu tiên hơn theo luậtkhớp tiền tố dài nhất
Ví dụ: Nếu ta tìm tiền tố khớp tốt nhất (Best Matching Prefix) có địa
chỉ bắt đầu là bit: 10110 Ta sẽ đi bắt đầu từ gốc Vì bít đầu tiên của địa chỉcần tìm là 1, nên ta sẽ đi sang nhánh phải (đây chính là nút chứa tiền tố d).Như vậy ta sẽ lưu lại d, và d chính là BMP hiện thời Sau đó ta di chuyểnsang nhánh trái, bởi nút thứ 2 trong địa chỉ là 0 Tại thời điểm này nút được
Trang 20duyệt không lưu một tiền tố nào (vì vậy d vẫn là BMP) Vị trí thứ 3 trongđị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ậyviệ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ốtnhấ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ầntruy nhập trong trường hợp xấu nhất Vậy độ phức tạp của thuật toán tìmkiếm là O(W)
2.3.2 Chèn tiền tố
Để chèn một tiền tố mới, 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 và 0110 vào trie Ta giả sử đó là tiền tố P10 và
P11 Bít đầu tiên của P10 là 1, ta dịch xuống nhánh phải đó là nút P4 Tiếptheo là bit thứ 2 ta cũng dịch chuyển về nhánh phải Bit thứ 3 là 0 vì vậy tacần dịch xuống nhánh trái, tuy nhiên nút không có nhánh trái vì vậy nút P10
được tạo mới và đính vào vị trí này Tiếp theo ta chèn tiền tố P11, Sau khitìm kiếm ta nhận thấy rằng nút P1 không có nhánh phải Vì vậy những nút
Trang 21mới được thêm vào, đây là những nút tạo nên đường dẫn tới nút tương ứngvới tiền tố P11.
2.3.4 Thực thi
Trie nhị phân chứa 2 phần trên một nút, một phần chứa bit 0 và phần
kia chứa bit 1 Mỗi phần này lại gồm 2 trường, nhop lưu trữ thông tin next hop, ptr lưu trữ con trỏ tới nút con Nếu không có thông tin về chặng tiếp
theo thì trường này sẽ có giá trị null, và tương tự nếu không có nút con thì
trường ptr sẽ có giá trị null.
Hình 2.6 Thực thi trie nhị phânTrong trường hợp xấu nhất, chúng ta cần duyệt số nút trong trie tươngđương với độ dài của địa chỉ Vì vậy, độ phức tạp là O(W) Chèn, xoá một
Trang 22tiền tố vào trie nhị phân trong trường hợp xấu nhất độ phức tạp là O(W).
Độ tiêu hao về bộ nhớ là O(NW), trong trường hợp mọi tiền tố đều cần Wnút
2.4 Trie được nén đường dẫn
Trie được nén đường dẫn chính là Trie nhị phân, tuy nhiên một sốphần của trie được nén lại bằng cách loại bỏ các nút không cần thiết nhằmlàm giảm thời gian tìm kiếm và bộ nhớ cần thiết để lưu trữ
Tuy nhiên, để có thể loại bỏ một số nút mà việc tìm kiếm vẫn chính xác, tacần phải bổ sung một số thông tin vào các nút còn lại
Nhận xét: Trie nhị phân có thể đưa ra những tiền tố có chiều dài tuỳ ý, tuy
nhiên đôi khi tồn tại những nút có chiều dài tuần tự rất lớn
Ví dụ: Ta thấy rằng nút P2 có chiều dài đến nút tiền tố P1 khá lớn, vùng chứatiền tố P2 không có một nút nào khác ngoài P2, ở đây ta thấy có 3 vị tríkhông là tiền tố và không được sử dụng Vì vậy vùng này cần được nén lại(loại bỏ những nút không cần thiết) để giảm thời gian tìm kiếm và giảm bộnhớ cần thiết để lưu trữ Đây chính là ý tưởng của trie nén đường dẫn
Hình 2.7 Cấu trúc dữ liệu trie nén đường dẫn cho các tiền tố bảng 2.1
Trang 23Nhận thấy rằng nút P2, P3 được chuyển trực tiếp tới làm nút con củanút P1 Hai nút đứng trước P2 trong trie nhị phân được loại bỏ, và đây chính
là các nút không cần thiết
Lưu ý: nguyên bản nút P2 là nút con nằm ở nhánh phải (so với nút cha của
P2), tuy nhiên nó lại được di chuyển tới bên trái của nút P1 Bởi vì ta thấyrằng chỉ có duy nhất tiền tố này nằm hoàn toàn bên nhánh trái của nút P1.Tương tự, tiền tố P3 nằm bên nhánh trái của P1 bây giờ lại được chuyểnsang phải của P1 Con kề cận với P1 bị loại bỏ đi
Để việc tìm kiếm được chính xác, ta cần bổ sung thêm một số thông tin(thông tin này được lưu tại P1) về số thứ tự bít sẽ được kiểm tra tiếp theo.Trong hình 2.6 số bit (hay có thể gọi là vị trí của bit) được kiểm tra tiếptheo được ghi kề bên cạnh (trong hình vuông)
Tìm kiếm
Việc tìm kiếm trong trie nén đường dẫn được tiến hành tương tự nhưtrong trie nhị phân, đó là căn cứ vào bit địa chỉ có giá trị 0 hay 1, ta sẽquyết định tới nhánh trái hoặc nhánh phải Tuy nhiên khác với trie nhị phâncần phải duyệt mọi bit kiểm tra, ta chỉ cần duyệt những bit cần thiết (nhữngbit này được chỉ định) Khi gặp những nút có màu xám (tương ứng với mộttiền tố), ta sẽ tiến hành so sánh với tiền tố trên thực tế Nếu khớp, nó sẽđược lưu với tư cách là BMP và lại tiếp tục tìm kiếm thêm Công việc tìmkiếm sẽ kết thúc nếu gặp được nút lá, hoặc phát hiện ra có lỗi
Ví dụ: Tìm kiếm một địa chỉ bắt đầu với 001010 trong trie nén đường dẫn
trong hình 2.6 Tìm kiếm bắt đầu từ nút gốc, nút này chỉ ra rằng bit số 1 cầnđược kiểm tra Do bit số 1 trong địa chỉ 001010 là 0 vì vậy ta đi xuốngnhánh trái và gặp nút tiền tố P1 Bây giờ ta sẽ so sánh địa chỉ với tiền tố P1,tương ứng với phần địa chỉ là 0 Ta thấy khớp, tiền tố P1 được đưa vào làBMP Bây giờ ta tiếp tục kiểm tra thông tin về bit kế tiếp được duyệt (lưutrong P1), đó chính là bit thứ 3 Đối chiếu sang địa chỉ cần tìm (001010), ta
Trang 24thấy bit thứ 3 có giá trị là 1 Như vậy, ta tiếp tục kiểm tra nhánh phải Mộtlần nữa ta lại kiểm tra tiền tố P3 (001*) có khớp một phần của địa chỉ(001010) Ta thấy khớp, ngoài ra P3 là nút lá Việc tìm kiếm kết thúc, và P3
là BMP
Tìm kiếm trên trie được nén đường dẫn có độ phức tạp là O(W)trong trường hợp xấu nhất Trie được nén đường dẫn luôn hiểu quả hơn trienhị phân (chiều cao giảm tức là giảm độ phức tạp), trong trường hợp xấunhất (trie nén đường dẫn là trie nhị phân đầy đủ) thì độ phức tạp của trienén đường dẫn sẽ bằng trie nhị phân và lúc này yêu cầu bộ nhớ là 2N-1,trong đó N là số nút lá, N-1 là số nút 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ố và đảm bảo thời gian tìm kiếm nhỏ, bất chấp kích cỡ của cây và chiềudài của tiền tố DP trie có 2 thuật toán: Chèn và xoá
2.5.1 Định nghĩa và cấu trúc dữ liệu
DP trie được tạo ra bởi IBM, dựa trên ý tưởng: loại bỏ mọi nút trắng(nút không lưu tiền tố) Mọi nút đều bao gồm một trường Index, hai khoá,
và 3 liên kết với nút khác
Hình 2.8 Cấu trúc của một nút trong cây DP trie
Trang 25- Index(n): Vị trí bit
- Leftkey(n): Một khoá với LeftKey[Index(n)] =0 hoặc NIL.
- Rightkey(n): Một khoá với RightKey[Index(n)] =1 hoặc NIL.
- Parent(n): Liên kết tới nút cha của nút n, và = NIL nếu là nút gốc
- LeftSubTrie(n): Liên kết tới nút con trái của nút n với khoá k (k[Index(n)] = 0) hoặc có giá trị NIL
- RightSubTrie(n):Liên kết tới nút con phải của nút n với khoá k (k[Index(n)] = 0) hoặc có giá trị NIL
Để minh hoạ cho cấu trúc dữ liệu và mối quan hệ đặc biệt giữa các nút nàychúng ta sẽ xây dựng một DP trie gồm tập các mẫu (1000100, 1001, 10,
1111, 11)
Hình 2.9 Chèn nút 1000100 vào DP trie
- Với khoá đầu tiên 1000100 được chèn vào trie ta được 1 DP trie gồmduy nhất một nút (là nút gốc) a Khi khoá 1000100 chỉ là một khoácủa nút a, trường index sẽ mang giá trị lớn nhất của độ rộng của khoá
đó là 6 Và tại vị trí số 6 khoá có giá trị là 0 vì vậy khoá 1000100 sẽ
là leftkey của gốc.
- Tiếp tục chèn 1001 vào DP trie Index của nút a bây giờ bằng 3 (vị trí
đầu tiên mà 2 nút khác nhau) và 3 tiền tố chung đầu tiên sẽ được bỏqua Ta thấy tại vị trí số 3 của khoá mới (1001) ta có giá trị 1 vậy
khoá này sẽ là rightkey của gốc a (Chú ý: Nếu như vị trí bit của khoá
mới là 0, và vị trí cũ lại là 1 thì khoá cũ sẽ được chuyển thành
Trang 26rightkey và khoá mới sẽ là leftkey) Trong cây này, việc tìm kiếmđược hướng dẫn bởi khoá được lưu trữ Đó chính là giá trị của bitnằm ở vị trí thứ 3 [Index(a)] của khoá cần tìm Vì vậy, bit ở vị trí0,1,2 sẽ được bỏ qua.
Hình 2.10 Chèn nút 1001 vào DP trie
- Tiếp tục chèn 10 vào DP trie Vì 10 là tiền tố của cả 2 khoá của a, vìvậy một nút b được tạo mới và là nút cha của nút a Index của nút b
là 1 Khoá 10 là Leftkey của nút b và a sẽ là Leftsubtrie của nút b bởi
vì tại vị trí bit số 1 của các khoá đều là 0
- Chèn khoá 1111 vào cây DP trie Khoá mới này khác khoá 10 ở bit
có vị trí là 1 Vì vậy, ta không cần thay đổi giá trị của trường Index
Trang 27Hình 2.11 Chèn nút 10, 11111, 11 vào DP trie
Tìm kiếm:
- Giả sử ta cần tìm kiếm k = 10011 Tại nút b, nút đầu tiên ta sẽ đixuống duyệt nút a, bởi k[1] = 0 Tiếp tục, tại nút a ta thấy k[3] = 1 vìvậy, ta được khoá 1001 Vị trí bit thứ 0 và bit 2 được bỏ qua Khoácuối cùng được tìm thấy (khoá 1001) sẽ là tiền tố khớp dài nhất
- Tìm kiếm k = 100011, ta tiếp tục đi xuống xử lý nút a Tuy nhiên, ởnút a ta chỉ tìm được khoá 1000100 khoá này không phải là tiền tốcủa khoá cần tìm kiếm Ta sử dụng con trỏ liên kết parent để quayngược lại nút b, tại đây khoá 10 sẽ là tiền tố khớp dài nhất
2.5.2 Thuật toán của DP trie
2.5.2.1 Chèn 1 khoá mới
Để chèn một khoá mới cần xử lý 3 bước:
- Lấy kích thước của tiền tố dài nhất giữa khoá cần chèn và các khoáđã có
- Dựa vào thông tin trên, định vị ra nút cạnh nút cần chèn
Trang 28- Chèn khoá mới vào vị trí thích hợp
ClosestKey(node, key) {
if (|key ≥ Index(node)|) then
if (Key(node, key) π NIL) then return (Key(node, key))
if (|key ≥ Index(node)|) then
if (Subtrie(node, key) π NIL) then
return (SubTrie(node, key))
Allocate Node (index, key) {local node
NEWNODE(node)/* allocate space for a new node*/
LeftKey(node) :RightKey(node) :NIL
Parent(node) :LeftSubTrie(node) :RightSubTrie(nod
Trang 29Insert(key) {
local node, distpos, index
if ( Root NIL ) then Root :AllocateNode(|key|,
key)
else
node :Root /* start at the root */
while (Not LeafNode(node))
do node :ClosestSubTrie(node, key)
distpos :DistPos(key, ClosetKey(node, key))
index :Min(|key|, distpos) /*
while( index < Index(node) and node π Root)
do node :Parent(node)
if (node Root) then
InsertInOrAbove(node, key, distpos)
elseif(SubTrie(node, key) NIL) then
InsertWithEmptySubTrie(node, key, distpos)
if(node π NIL and |key| ≥ Index(node)) then
while (SubTrie(node, key) π NIL and |key| ≥
Index(SubTrie(node, key) )
do node :SubTrie(node, key) if( node NIL or Key(node, key) π key ) return (NotFound)
Trang 30/* Bước 2: Xoá khoá và rác*/
else
Key(node, key) :NIL
if ( Empty(node)) then
if(node π Root) then
SubTrie(Parent(node), key) :NIL
storedkey :Key(node, BitComplement(key))
LeftKey(node) :RightKey(node) :NIL
Trang 31Trie(node, key)) then
collnode :SubTrie(node, key)
if(collnode π NIL and SingleKeyLeafNode(collnode)) then
storedkey :ClosestKey(collnode, key)
if(Parent(conllnode) π NIL and Key(Parent(collnode),
storedkey) NIL ) then Key(Parent(collnode),
local node :Root
if( node NIL or |key|<Index(node) ) then
return(NIL) while(SubTrie(node, key) π NIL) and (|key| ≥
else return(NIL)
}
Trang 32Chương 3: GIỚI THIỆU PHÂN LOẠI GÓI TIN
Để tối đa thu nhập thì các nhà cung cấp dịch vụ cũng mong muốn cung cấpcác mức phục vụ khác nhau với giá thành khác nhau dựa trên yêu cầu củangười sử dụng, trong khi vẫn sử dụng cơ sở hạ tầng mạng thông thường
Để cung cấp các dịch vụ khác nhau, Router yêu cầu phải bổ sungthêm kỹ thuật mới Các kỹ thuật này bao gồm: điều khiển đầu vào, sự điềutiết (định lượng, đánh dấu, định hình giao thông, và quyết định giải pháp),cung cấp tài nguyên (tối ưu hóa), quản lý hàng đợi và lập lịch hợp lý Cáckỹ thuật này đòi hỏi khả năng phân biệt và tách riêng các giao thông thuộc
về những người sử dụng khác nhau dựa trên sự thống nhất dịch vụ giữa nhàcung cấp dịch vụ và người sử dụng Điều này dẫn đến yêu cầu khả năngnhận biết theo luồng của các thiết bị định tuyến, biểu diễn chúng thành cáctập luật dựa trên các thông tin của gói tin đến Các tập luật này chúng ta gọi
là phân loại luồng
Trang 33Hình 3.1 Một số trường của header của gói tin sử dụng để phân loại gói tin.
Mỗi luật chỉ định rõ một luồng mà một gói tin sẽ thuộc về luồng đódựa trên các tiêu chuẩn chứa trong header của gói tin Tất cả các gói tinthuộc về cùng một luồng được xử lý như nhau Luồng được chỉ định củamột gói tin đến chỉ rõ một action sẽ được áp dụng cho gói tin Ví dụ, mộtrouter firewall có thể thực hiện action là từ chối hoặc cho phép truy nhậpmột mạng được bảo vệ Việc xác định action này gọi là phân loại gói tin –tức là khả năng của router để xác định action tương ứng với luật tốt nhất
mà một gói tin đến khớp Phân loại gói tin cho phép nhà cung cấp dịch vụ
có thể phân biệt khả năng cạnh tranh và thu được lợi nhuận từ việc cungcấp các dịch vụ gia tăng đến các khách hàng khác nhau
Classification
Dựa vào action để
áp dụng dịch vụ cho gói tin
Trang 343.2.1 Định nghĩ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 tindựa trên header của gói tin thành các lớp tương đương gọi là các luồng(flow)
Mỗi luồng phải tuân theo ít nhất một luật, hoặc một tập luật trongbảng luật Tất cả các gói tin thuộc một luồng đều được xử lý như nhau
3.2.2 Bài toán phân loại gói tin
Phân loại gói tin cho phép một số lượng bổ sung các dịch vụ mạngkhông nỗ lực tối đa hơn là cung cấp các chất lượng dịch vụ khác nhau Mộtứng dụng nổi bật của phân loại gói tin là firewall Các dịch vụ mạng khácyêu cầu phân loại gói tin bao gồm định tuyến dựa trên sách lược, chínhsách và mức độ hạn chế giao thông, định hình giao thông và lập hóa đơn.Trong mỗi trường hợp, cần thiết phải xác định gói tin đến thuộc luồng nào
để xác định action cho gói tin đó Ví dụ: chuyển tiếp hay lọc, chuyển tiếp
đến đâu, kiểu dịch vụ phục vụ gói tin là gì, hay chi phí để vận chuyển gói tin là bao nhiêu?
Bài toán phân loại gói tin: mỗi luật của một phép phân loại có d
thành phần Thành phần thứ i của luật R (kí hiệu là R[i]), là một biểu thứcchính quy trong trường thứ i của header của gói tin Một gói tin P được gọi
là khớp với một luật R nếu với mọi i, trường thứ i của header của gói tin Pthỏa mãn biểu thức R[i]