Để 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.. chương trình chạy trên Router sẽ xây dựng bảng chỉ đường thôn
Trang 1LỜI NÓI ĐẦU
Việc định tuyến các gói tin thường tạo ra các điểm thắt nút củamạng, đặc biệt khi nhu cầu cập nhật các luật trong bảng định tuyến cao Do
đó đã có rất nhiều nghiên cứu nhằm tìm ra các giải pháp, thuật toán tốt nhấtcho việc định tuyến nhằm giảm thắt nút của mạng Các giải pháp dựa trênbảng tiền tố tĩnh đã có nhiều kết quả tốt khi áp dụng đối với địa chỉ IPngắn Tuy nhiên, khi áp dụng trên địa chỉ IP dài, các giải pháp này thôngthường phải xây dựng lại toàn bộ bảng định tuyến nên thời gian cập nhậtchậm do vậy xảy ra trường hợp định tuyến sai gói tin Thời gian gần đây cónhiều tác giả đã đưa ra các giải pháp, thuật toán thực hiện trên bảng địnhtuyến động - bảng định tuyến cho phép chèn/xóa đồng thời với việc địnhtuyến các gói tin
Trong nội dung đồ án tôi nghiên cứu 02 phương pháp định tuyến trênbảng IP động: phương pháp khớp tiền tố dài nhất, phương pháp sử dụng độ
ưu tiên cao nhất của các luật
Nội dung nghiên cứu bao gồm:
- Nguyên tắc hoạt động của Router
- Định tuyến IP theo phương pháp khớp tiền tố dài nhất
- Định tuyến IP theo độ ưu tiên
- Cài đặt minh họa
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ứccò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
Trang 2Tô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 thực hiện đồ án này
Trang 3Chươ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 thì khi gói tin đến Router, Router mới xử
lý và 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 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ác
Trang 4chươ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.
Trong 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 5các Router giữ chậm gói tin đó và đị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, và sử dụngthông tin thu được để tính toán đường đi cho tất cả các địa chỉ đích có thểđế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ế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
Trang 61.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.Nế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
Trang 7Ranges 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ố…
Rule
Name
Prefix Name Prefix Next Hop
Ranges Start
Ranges Finish Priority
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
Trang 8tắ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
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, 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).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 caonhấ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 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 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 địachỉ 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àotrạ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
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 9Đặc điểm của bảng Router tĩnh:
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) 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
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.
Trang 101.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ảitìm ra đường tốt nhất trong mạng và duy trì chúng Gói tin có thể đến đượcđí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
Trang 112 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,việ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
Kết luận chương 1
Trong chương 1, ta đã nghiên cứu một thiết bị định tuyến rất thôngdụng đó là Router, chức năng, và hoạt động của nó Định tuyến trênInternet là gì, các kiểu định tuyến Thuật toán định tuyến và các tiêu chí đểđánh giá một thuật toán định tuyến tốt Nội dung quan trọng nhất củachương này nghiên cứu về bảng định tuyến, trong đó bảng định tuyến độngvới các ưu điểm của nó và sự cần thiết phải tăng tốc độ cập nhật của bảngđịnh tuyến
Trang 12Tuy nhiên, do phạm vi nghiên cứu đồ án hạn chế, nên các phần đượctrình bày trong chương chỉ là những nội dung cơ bản nhất Cho nên ta cầnphải tiếp tục nghiên cứu mở rộng kiến thức về nội dung này.
Trang 13Chương 2 CÂY TÌM KIẾM ƯU TIÊN
Trong chương này ta nghiên cứu cấu trúc cây tìm kiếm ưu tiên(PST4) và cây đỏ đen Cây tìm kiếm ưu tiên là một cấu trúc cây phức tạp là
sự kết hợp của cây nhị phân tìm kiếm và hàng đợi ưu tiên Nghĩa là câyphải thỏa mãn các tính chất của một cây nhị phân tìm kiếm và các tính chấtcủa hàng đợi ưu tiên Cây được sử dụng trong cấu trúc bảng định tuyếnđộng với các đoạn địa chỉ
Cây tìm kiếm ưu tiên là sự kết hợp của cây nhị phân tìm kiếm vàhàng đợi ưu tiên Các đặc điểm của cây như sau:
- Các khóa (Keys) là cặp có thứ tự (xi, yi)
- Cây được xây dựng min theo giá trị y (ở gốc giá trị của y là nhỏnhất)
- Thao tác tìm kiếm chủ yếu theo giá trị x
Cây tìm kiếm ưu tiên có hai kiểu khác nhau:
(1) Cây tìm kiếm là một cây tìm kiếm nhị phân cân bằng: Red-blackPriority Search Tree (RBPST)
(2) Cây tìm kiếm là cây tìm kiếm theo cơ số gọi là cây Radix PrioritySearch Tree (RPST)
2.1 Radix Priority Search Tree
Cây tìm kiếm ưu tiên được giới thiệu đầu tiên bởi E.McCreight năm
1985 với các đặc điểm như sau
2.1.1 Tính chất cây
- Các giá trị của x khác nhau và thuộc đoạn [0, k - 1]
- Mỗi nút của cây tìm kiếm ưu tiên có đúng 1 phần tử
4 Priority search tree (PST)
Trang 14- Giá trị y của nút w phải nhỏ hơn hoặc bằng giá trị y của các nút concủa w (cây được định nghĩa theo giá trị min ở gốc)
- Khoảng của nút gốc w là [a, b)
- Khoảng của nút con trái là [a, floor((a+b)/2))
- Khoảng của nút con phải là [floor((s+b)/2), b)
Lặp việc tạo cây ưu tiên trên các điểm có thành phần x < = X(P) vớigốc là nút con trái của R
Lặp việc tạo cây ưu tiên trên các điểm có thành phần x > X(P) vớigốc là nút con phải của R
Ví dụ: Cho S = {F(-1, 9), N(1, 8), A(15, 7), I(-2, 5), H(7, 6), J(2, 3), G(6,4), B(16, 2), K(4, 6), C(12, 1), E(10, -2), D(14, -1), M(9, -3)}
Sau đây ta minh họa các bước xây dựng một cây RPST từ tập S.Lặp 1:
Trang 15N(1,8)
A(15,7) H(7,6)
J(2,3)
G(6,4)
B(16,2) K(4,6)
C(12,1)
E(10,-2)
D(14,-1) M(9,-3)
J(2,3)
G(6,4)
B(16,2) K(4,6)
C(12,1)
E(10,-2)
D(14,-1) M(9,-3)
I(-2,5)
Lặp 3:
Trang 16N(1,8)
A(15,7) H(7,6)
J(2,3)
G(6,4)
B(16,2) K(4,6)
C(12,1)
E(10,-2)
D(14,-1) M(9,-3)
J(2,3)
G(6,4)
B(16,2) K(4,6)
C(12,1)
E(10,-2)
D(14,-1) M(9,-3)
I(-2,5)
Cây hoàn chỉnh:
Trang 17N(1,8)
A(15,7) H(7,6)
J(2,3)
G(6,4)
B(16,2) K(4,6)
C(12,1)
E(10,-2)
D(14,-1) M(9,-3)
I(-2,5)
Hình 2.1 Các bước xây dựng một cây RPST
Ánh xạ cây vừa xây dựng qua trục hoành, thêm chỉ số đoạn, bỏ trụctọa độ ta có được cách biểu diễn cây thông thường như sau:
F(-1,9) N(1,8)
A(15,7) H(7,6)
Thuật toán chèn nút P(x, y) vào trong cây có nút gốc R
Nếu y < R(y) chèn nút P vào vị trí nút gốc Nút P gán bằng nút gốc
Trang 18o Nếu P(x) thuộc khoảng [a, (floor(a+b)/2)) thực hiện thuật toánchèn nút P trên cây con trái, nếu P(x) thuộc [floor((a+b)/2), b)thực hiện thuật toán chèn trên cây con phải.
6,
9
7,1 [0, 16)
[0, 8)
7, 1
6,
8
[0, 16) [0, 8)
[4, 8)
7, 1
5, 8
6,
9 S [0, 8)
Trang 19• (5,8) sẽ thay thế vào vị trí của (6,9), vì 8 < 9.
• (6,9) được đẩy xuống nút con phải của (5,8), vì 6 thuộc khoảng củanút con phải và 8 < 9
Thời gian thực hiện chèn một nút mất O(h), với h là chiều cao cây
tìm kiếm nhị phân
2.1.4 Xóa một nút khỏi cây RPST
Tương tự phép xóa trong min heap Thuật toán như sau:
Nếu nút bị xóa là nút lá, xóa nút kết thúc
Nếu nút bị xóa không là nút lá, xóa nút và chọn nút con có thànhphần y nhỏ hơn lên thay thế
Ví dụ: xóa nút (5, 8) khỏi cây
[0, 16) [0, 8)
2,12
11, 5
5, 8
6, 9
Trang 20Red – Black Priority Search Tree hay còn gọi là cây tìm kiếm ưu tiênđộng được giới thiệu bởi Professor Robert Tamassia [5, tr.65] Sau đây ta
đi nghiên cứu phương pháp tổng quát để xây dựng và duy trì một cây PSTđộng
Sử dụng phương pháp bottom – up kết hợp với quy tắc trận đấu để xâydựng cây
Áp dụng tính chất cây đỏ đen [2, tr.239] để tô màu cho các nút củacây
Thủ tục chèn/xóa một nút trong cây, trong đó sử dụng phép quay đểduy trì sự cân bằng của cây
2.2.1 Tính chất cây
Một cây PST có thể được xây dựng hiệu quả khi sử dụng cách xâydựng bottom-up giống như cách đã sử dụng để xây dựng heap cũng như cáccây nhị phân Khi xây dựng một cây PST bằng cách bottom-up, bước đầutiên tạo tất cả các điểm lá, và sắp xếp chúng theo thứ tự tăng dần của giá trị
x Sau đó cây được kiến trúc dùng nguyên tắc thi đấu giống như cách xâydựng một cây thi đấu Để minh họa cho cách xây dựng cây, ta đi xây dựngmột cây tìm kiếm ưu tiên theo giá trị max ở gốc
Bước 1: Áp dụng quy tắc trận đấu để xây dựng cây
Trong một trận đấu gồm có hai điểm, điểm có giá trị y lớn hơn sẽ
thắng cuộc và trở thành nút gốc của một cây con Ở vòng tiếp theo, các
điểm thắng cuộc ở bước trước sẽ thi đấu từng cặp với nhau để tìm ra người
thắng cuộc, người thắng cuộc của bước sau cùng sẽ giành vị trí tại nút gốc
của cây Các điểm thắng cuộc để lại một nút rỗng bên cạnh, và các nút nàyđược lấp đầy bởi các điểm bị thua cuộc ở bước ngay trước đó Việc lấp đầynày sẽ dẫn đến nút khác bị rỗng, tiến trình lại được tiếp tục cho đến khi
Trang 21không còn các điểm có thể lấp vào các nút Khi một điểm được đứng ở mộtnút trong trên cây, nút lá cho điểm này tạo thành một chỗ đứng5 Sau khicây đã được xây dựng xong, có N – 1 nút lá được tạo thành chỗ đứng (với
N là số điểm trong tập dữ liệu) Các nút lá luôn được sắp xếp tăng dần theogiá trị x của các điểm
Bước 2: Áp dụng tính chất cây đỏ đen để tô màu cho các nút
Sau khi các điểm được đặt vào đúng vị trí các nút, ta tô màu cho cácnút giống như quy tắc tô màu cho cây đỏ đen
Hình 2.5 minh họa tiến trình xây dựng sử dụng một ví dụ nhỏ gồm 8nút
Thuật toán xây dựng cây RBPST
1 Sắp xếp các điểm theo giá trị x tăng dần
2 Trận đấu bắt đầu với các cặp điểm, các điểm có y cao hơn sẽ thắngcuộc
3 Khi một điểm thắng ở vòng thi đấu cao hơn, điểm bị thua ở vòngtrước sẽ di chuyển lên và lấp đầy nút rỗng
4 Khi cây xây dựng xong, n-1 nút lá trở thành các vị trí đứng
Trang 22Hình 2.5 Xây dựng cây RBPST sử dụng quy tắc trận đấu từ dưới lên
Như ta đã biết một cây đỏ đen là một cây tìm kiếm nhị phân đặc biệt,với thuộc tính màu của các nút và tính chất độ dài đường đi tới một nút lánên dùng cây đỏ đen khi lưu trữ thông tin rất hiệu quả Vì một cây đỏ đencho phép chèn/xóa các phần tử nhanh chóng Đây cũng là lý do ta sử dụngphương pháp tô màu của cây đỏ đen cho cây PST Các tiến trình này đượctrình bày trong phần sau
2.2.2 Chèn một nút vào cây RBPST
Để chèn một nút mới vào cây PST động gồm 3 bước sau:
1) Thêm một nút lá sau này sẽ là một vị trí đứng cho nút mới
Trang 232) Đẩy nút mới đi xuống cây, bắt đầu tại nút gốc.
3) Cân bằng lại cây nếu cần thiết
Khi các nút lá của cây được sắp xếp theo giá trị x tăng dần, thì vị tríđứng cho nút mới khi thêm vào phải hiệu chỉnh theo thứ tự này Để tìm vịtrí đó, tiến trình bắt đầu tại nút gốc và lặp lại với các cây con bằng cách sosánh giá trị x của nút mới và giá trị x của nút gốc của cây con đang xét.Nếu nút mới có giá trị x lớn hơn giá trị phân chia của nút gốc6, tiến trình sẽ
đi xuống cây con bên phải Nếu nhỏ hơn, tiến trình lặp với cây con trái.Cây đầu tiên trong hình 2.6 minh họa tiến trình này
Kết thúc việc hiệu chỉnh một vị trí đứng của nút lá được tìm thấy vànút lá được lưu trong vị trí đó phải được thay thế bởi một nút trong rỗng.Nút lá cho điểm mới và nút lá vừa bị thay thế sẽ trở thành hai nút con củanút mới vừa sinh ra Hình 2.6 ở cây thứ 2, điểm chèn vào là c’, nút bị thaythế là nút có khóa là d Vị trí đứng của c’ ở bên phải d vì tọa độ x của c’ lớnhơn d Hai nút lá củ d và c’ trở thành nút lá của một nút đỏ mới thêm vào
Sau khi một vị trí đứng và một nút trong mới được thêm vào trongcây, là thời gian tìm vị trí chính xác của điểm mới chèn vào trong cây Đểtìm vị trí này, dùng phương thức push-down Phương thức này bắt đầu từnút gốc, và giá trị y của nút gốc và nút mới được so sánh với nhau Nếu nútmới có giá trị y nhỏ hơn giá trị y của nút gốc, phương thức push-downđược tiếp tục hiệu chính trên cây con bên phải hoặc bên trái Việc chọn câycon nào được quyết định bằng cách so sánh giá trị x của nút mới với giá trịphân chia của nút gốc (như phần hiệu chỉnh vị trí đứng cho điểm mới chènvào) Nếu giá trị y của nút mới lớn hơn giá trị y của nút gốc thì hoán đổinút mới và nút gốc đó (khóa của nút gốc là giá trị của điểm mới, khóa nútmới sẽ là khóa của nút gốc), phương thức push-down lại tiếp tục với nút
6 split line
Trang 24gốc vừa bị hoán đổi giống như một nút mới Tiến trình tiếp tục được lặp lạicho đến khi tất cả các điểm được đặt vào các nút Cây thứ 3 trong hìnhtrong hình 2.6 minh họa tiến trình này.
Hình 2.6 Chèn một nút vào cây RBPST
Khi một nút mới được chèn vào, dẫn đến tất cả các giá trị phân chiaphải được cập nhật lại Giá trị phân chia của một nút được xác định là mộtnửa giá trị x của nút con phải nhất trong cây con trái và nút con trái nhấttrong cây con phải Khi một nút con mới được chèn vào, điều kiện này cóthể bị thay đổi, và do vậy việc cập nhật là cần thiết
Trang 25Sau phép chèn, nếu một tính chất bất kỳ nào của cây đỏ đen bị viphạm thì cây sẽ phải cân bằng lại Hình 2.6 không có trường hợp nào bị viphạm Nhưng trong hình 2.7 thì bị vi phạm và phải xây dựng lại.
Một nút mới chèn vào một cây đỏ đen thì luôn được tô màu đỏ, vàquy tắc có cùng số nút đen trên bất kỳ đường nào từ nút gốc tới một nút lá
không xảy ra Quy tắc không có nút đỏ nào có một nút con đỏ (một nút đỏ
phải có hai nút con đen), ta có thể dễ dàng nhận thấy quy tắc này bị viphạm khi chèn một nút đỏ và ta gọi đây là lỗi đỏ-đỏ Khi lỗi đỏ-đỏ xuấthiện, màu sắc của các nút gần kề quyết định việc làm tiếp theo Nếu cả nútcha và nút chú là nút đỏ, sửa lại màu của nút cha và nút chú thành màu đen,nút ông thành màu đỏ Việc này lại có thể dẫn đến nút ông lại vi phạm lỗi
đỏ - đỏ với cha của nó Nếu trường hợp này xảy ra, tiến trình sẽ được lặp.Nếu chỉ có nút cha màu đỏ, và nút chú đen, thực hiện một phép quay
Hình 2.7 minh họa các trường hợp vi phạm tính chất cây đỏ đen khichèn nút mới vào cây
Từ cây trong hình 2.5 ta chèn các điểm c’ và c’’ và không có tính chất nào bị vi phạm Bước tiếp theo chèn nút c’’’ vào cây Vị trí đứng của nút c’’’ được đặt giữa các nút c’’ và d, và nút c’’’ ở nút con bên phải của
c’’ Từ hình minh họa (cây thứ 2 hình 2.7) ta thấy vi phạm quy tắc đỏ-đỏ
của c’’’ và c’’, Cả nút cha (c’’) và nút chú (d) đều là màu đỏ trong trường hợp này các nút c’’, d và c phải được tô màu lại Khi tô màu lại các nút
xong (cây thứ 3 hình 2.7) dẫn đến việc vi phạm quy tắc đỏ-đỏ của nút ông
c và nút cha c’’ Và chỉ có nút cha màu đỏ, nút chú a màu đen, cho nên phải
thực hiện phép quay hai nút c và c’.
Trang 26Hình 2.7 Chèn một nút mới và cấu trúc lại cây RBPST
Trang 27Thực hiện phép quay trong cây PST không hoàn giống như phépquay trong cây đỏ đen Bởi vì cây đỏ đen các điểm chỉ được tổ chức theogiá trị x Trong cây PST động, các điểm còn tổ chức theo giá trị y cho nênphải xem xét cả hai giá trị này Một phép quay trong cây đỏ đen đưa mộtcây con thành một nút gốc mới, trong khi cây PST nút gốc phải giữ nguyên.Nghĩa là thay vì việc quay, thì cây con phải tổ chức lại
Phép quay trái đơn trình bày trong hình 2.8, như sau: nút root là nút
gốc trong cây cả trước và sau khi quay Trước khi quay u là nút gốc của cây
con trái, child là nút gốc của cây con phải Điểm child ban đầu là nút con phải của root, sau khi quay là nút con trái của root, nhưng nó không thể
chính xác Để bảo đảm sự chính xác vị trí các điểm trong nút này, một điểmvới giá trị y lớn hơn giữa u và v được chọn, và phương thức push-down bắt
đầu với nút child được thực hiện với chính nút này.
Hình 2.8 Phép quay trong cây PST
Trang 28Trong ví dụ hình 2.8, nút gốc c’ và nó vi phạm quy tắc đỏ-đỏ với cây con phải c của nó Cây con trái a là màu đỏ, do đó phải thực hiện một phép quay Phép quay được thực hiện với nút con phải c thành nút con trái mới
và nút con phải của c là d thành nút con phải mới của c’ Nút con trái a thành nút con trái của c, và cấu trúc nút con trái của c thành nút con phải mới Khi so sánh a, c và c’’ (tương ứng u, v và ri trong phép quay cơ bản), chúng ta tìm được nút con trái mới của c, là nút với giá trị y lớn nhất, phép
quay kết thúc
Một phép quay phải đối xứng với phép quay trái, một phép quay képbao gồm hai phép quay đơn
Trong hình 2.8, sau phép quay vẫn còn vi phạm quy tắc đỏ - đỏ giữa
nút c và nút cha c’ Trong trường hợp này nút chú g cũng là màu đỏ, thay đổi màu của nút c’, g và b Tiếp tục dẫn đến vi phạm một quy tắc là trạng
thái nút cha luôn là màu đen Chỉnh lại nút gốc thành một nút đen, một nútđen được thêm vào tất cả các đường, và cân bằng được thiết lập lại Nhưvậy ta thực hiện liên tiếp các phép quay khi cân bằng cây
Thời gian thực hiện phép chèn trong cây RBPST là O(log n).
2.2.3 Xóa một nút từ cây RBPST
Để xóa một nút từ cây PST động thực hiện các bước sau:
1) Truy cập đến nút chứa điểm bị xóa
2) Xóa điểm từ nút này, và lấp đầy nút bằng cách chơi lại trò chơigiữa các điểm trong cây con của nó
3) Xóa chỗ đứng ở nút lá
4) Cân bằng lại cây theo tính chất cây đỏ đen
Trang 29Hình 2.9 Ví dụ xóa một điểm trong cây RBPST
Hình 2.9 trình bày ví dụ xóa một điểm trong cây PST động Điểm bịxóa trong cây con trái của nút gốc, nút bị xóa là màu đen Khi xóa một nútđen, tính chất 5 của cây đỏ đen bị vi phạ Khi đó, áp dụng việc cân bằng lại
Trang 30cây khi xóa một nút đen với nút cha đỏ và nút anh em đen với nút con phải
đỏ được thực hiện Quy tắc này phát biểu cho phép quay trái tại nút cha.Phép quay trong cây PST động không yêu cầu quay nút gốc của cây con,nhưng màu phải thay đổi nếu nút gốc chiếm một vị trí trong phép quay
Phép xóa trên cây PST động cũng thực hiện trong thời gian O(log n).
2.3 Các truy vấn trong cây tìm kiếm ưu tiên
Trong cây tìm kiếm ưu tiên ta có thể thực hiện các lệnh truy vấn sau:
Nếu cây rỗng con trỏ trả về NULL
R là nút gốc của cây (hai thành phần x và y)
Nếu y1 <ymin (thành phần y nhỏ nhất) không có phần tử nào thỏamãn
Nếu y1 ymin
Lặp:
Trang 31[12, 16) 14,6
5, 8
[0, 16)
Trang 32Thời gian thực hiện truy vấn MinXinRectangle trong cây tìm kiếm ưu tiên là O(h).
Nếu cây rỗng con trỏ trả về NULL
R là nút gốc của cây (hai thành phần x và y)
Nếu y1 <ymin (thành phần y nhỏ nhất) không có phần tử nào thỏa mãn
11, 5
5, 8
[0, 16)
Trang 33Hình 2.13 MaxXinRectangle trong cây
Tương tự như truy vấn MinXinRectangle, thời gian thực hiện truy vấn MaxXinRectangle là O(h).
Nếu cây rỗng con trỏ trả về NULL
R là nút gốc của cây (hai thành phần x và y)
Nếu y1 <ymin (thành phần y nhỏ nhất) không có phần tử nào thỏa mãn
Nếu y1 ymin
o Nếu x0 x x1, kết quả trả về chính là nút gốc
Trang 34o Nếu x0 < X(R) tìm phần tử có Y nhỏ nhất trên cây con trái
o Nếu X(R) < x 1 tìm phần tử có Y nhỏ nhất trên cây con phải
o Nếu không có phần tử bên cây con trái thỏa mãn hoặc có phần
tử bên cây con phải thỏa mãn và thành phần y của nó nhỏ hơncây con trái thì giá trị tìm được là phần tử bên cây con phải
• Như vậy min y=9 với x=6
Cây tìm kiếm ưu tiên T và chiều cao là h Thời gian thực hiện truy
[12, 16) 14,6
5, 8
[0, 16)
Trang 35Hình 2.16 EnumerateRectangle trong hình chữ nhật
Thuật toán
Nếu cây là NULL, trả về số phần tử là rỗng
R là nút gốc của cây (hai thành phần x và y)
Nếu y > y1 không có phần tử nào thỏa mãn
Nếu y < y1
Nếu y y1
o Nếu x0 x x1, chỉ có điểm gốc thỏa mãn
o Nếu x0 < X(R), phải có phần tử thuộc cây con trái nằm tronghình chữ nhật Thực hiện lặp việc tìm kiếm trên cây con trái
o Nếu X(R) < x1, phải có phần tử thuộc cây con trái nằm tronghình chữ nhật Thực hiện lặp việc tìm kiếm trên cây con phải
11, 5
[12, 16)
5, 8
[0,16)
Trang 36Hình 2.17 EnumerateRectangle trong cây
Cho cây tìm kiếm ưu tiên T, chiều cao của cây là h Thì truy vấn
EnumerateRectangle cần O(h+s) thời gian, trong đó s là các điểm trong
hình chữ nhật
Kết luận chương 2
Trong chương 2, ta đã nghiên cứu hai kiểu cây PST đó là cây RPST
và RBPST Mỗi kiểu cây đều có những đặc điểm chung của cây PST, vànhững đặc điểm riêng của nó Cây RPST có cấu trúc đơn giản hơn câyRBPST Cây RPST như đã trình bày có độ phức tạp các phép toán
chèn/xóa là O(h), các phép MinXinXRectangle, MinYinXRectangle ,
MinYinXRange là O(h), phép EnumerateRectangle là O(h+s) Tuy nhiên
với cây RBPST biểu diễn dưới dạng cây đỏ đen Như ta đã biết cây đỏ đenvới ưu điểm là tốc độ chèn/xóa một nút Cho nên mặc dù cấu trúc câyRBPST hơi phức tạp hơn cây RPST, chèn và xóa một điểm cũng phức tạphơn nhưng RBPST vẫn được sử dụng trong thực tiễn Thêm vào đó, cáctruy vấn của cây PST thực hiện trong thời gian khá nhanh, nên cây PSTđang được ứng dụng rất nhiều trong thực tế Ta có thể kể đến như: Các ứngdụng về tầm nhìn, bài toán cái túi, bài toán định tuyến IP, vấn đề tính toánđịa lý…Ngay sau đây là một ứng dụng của cây PST để giải quyết bài toánđịnh tuyến IP
Chương 3 ĐỊNH TUYẾN IP THEO PHƯƠNG PHÁP
KHỚP TIỀN TỐ DÀI NHẤT
Trang 37Chương 3 và chương 4 tiếp theo ta lần lượt nghiên cứu hai phươngpháp định tuyến trên bảng định tuyến động Sau đây là phương pháp đầutiên dùng cây tìm kiếm ưu tiên trình bày ở chương 2 xây dựng cấu trúc dữliệu cho bảng định tuyến để giải quyết bài toán so khớp tiền tố dài nhất
3.1 Mở đầu
Định tuyến trên Router bao gồm rất nhiều các công việc, các thủ tục
và kỹ thuật rất phức tạp Nhiệm vụ mà bài toán này tôi đi giải quyết đó là:
từ các dữ liệu đầu vào đã có trên bảng định tuyến và địa chỉ đã lấy được từphần đầu của gói tin, ta đi tìm một Next Hop phù hợp nhất để chuyển góitin đó đến
3.1.1 Khớp tiền tố dài nhất
Trong bảng định tuyến bao gồm trường prefix Vậy trên người ta
dùng cách nào để xây dựng được các tiền tố ấy?
Trên Router người ta dùng định tuyến phân lớp giữa các miền CIDRchia các địa chỉ IP thành các khối tiền tố, để đăng ký sử dụng Internet giữacác vùng
CIDR sử dụng kỹ thuật mặt nạ mạng có chiều dài thay đổi Variable Length Subnet Masking) cho phép định vị trí các tiền tố có chiềudài tùy ý Khối CIDR IPv4 (W = 32) được xác định bởi A.B.C.D/N trong
(VLSM-đó A.B.C.D là địa chỉ IP (Mỗi số A, B, C, D có giá trị từ 0-255) N chiềudài tiền tố (có giá trị 0-32)
Ví dụ một khối có địa chỉ bắt đầu là 220.78.168.0 hoặc biểu diễn
dạng nhị phân là 11011100.01001110.10101000.00000000; địa chỉ kết thúc
là 220.78.175.0 hoặc 11011100.01001110.10101111.00000000 Ta thấy 21
bít (bôi đậm) của hai địa chỉ giống nhau, 3 bít cuối cùng của octet thứ 3 cógiá trị khác nhau từ 000 đến 111 Do vậy đầu vào trong bảng định tuyến trở
Trang 38thành 220.78.168.0/21 hay 11011100.01001110.10101* Trong đó 21 là
chiều dài tiền tố
Với cấu trúc này mỗi địa chỉ IP là một phần của tiền tố, và một địachỉ IP có thể khớp với nhiều tiền tố có chiều dài khác nhau Việc tìm một
tiền tố khớp với địa chỉ đích d thì tiền tố và địa chỉ đích phải có N bít đầu
giống nhau
Giả sử với địa chỉ IP 5 bít (số bít để biểu diễn một địa chỉ IP) 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 Khibiể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ảng định tuyến 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
Ta nhận thấy, một tiền tố có thể biểu diễn bởi một đoạn với điểm đầu
và điểm kết thúc của đoạn tương ứng là địa chỉ đầu và địa chỉ cuối khớpvới một tiền tố đó Vì vậy từ đây về sau ta hiểu biểu diễn một tiền tố là mộtđoạn, nhưng một đoạn thì không là một tiền tố
Trong định tuyến tiền tố dài nhất, xác định Next Hop cho gói tin có
địa chỉ đích d là Next Hop của tiền tố khớp với d mà có độ dài lớn nhất.
3.1.2 Lý thuyết về đoạn
Trong phần này, tôi không ham muốn trình bày những kiến thức toánhọc rất phức tạp Đoạn mà tôi trình bày sau đây được hiểu theo nghĩa làmột đoạn địa chỉ, bao gồm các địa chỉ từ địa chỉ bắt đầu đến địa chỉ kếtthúc Nội dung phần này sẽ cho ta những cơ sở lý thuyết cho việc giải
quyết bài toán tìm tiền tố dài nhất
Định nghĩa 1: Một đoạn r u v, là một cặp địa chỉ u và v, u v Một đoạn r biểu diễn các địa chỉ {u, u+1, …, v} start(r)=u là điểm bắt
Trang 39đầu của đoạn và finish(r) = v là điểm cuối của đoạn Đoạn r chứa hoặc là khớp với tất cả các địa chỉ d sao cho u d v range(q) xác nhận là đúng nếu q là một đoạn.
Chú ý: mọi tiền tố của bảng định tuyến tiền tố có thể biểu diễn một đoạn
Ví dụ: khi W=6, tiền tố P = 1101* khớp với các địa chỉ trong đoạn [52, 55]
Do dó, chúng ta nói P = 1101* = [52, 55], start(P) = 52, finish(P) = 55.
Khi một đoạn biểu diễn một tập liên tiếp các điểm, ta sử dụng cácphép toán, quan hệ tập hợp chuẩn như và khi xử lý trên đoạn ví dụ [2,6] [4, 8] = [4, 6]
Một số phép toán giữa các đoạn không phải là một đoạn ví dụ: [2, 6]
disjoint(r, s) overlap(r, s) = v < x y<u
(b) nested(r, s) – hai đoạn chứa nhau.
Khẳng định nested(r, s) là đúng nếu một đoạn được chứa bên trong đoạn kia.
nested(r, s) overlap(r, s) = r overlap(r, s) = s
Trang 40Hình 3.1 Mối quan hệ giữa các cặp đoạn (A) Hai đoạn rời nhau.
(B) Hai đoạn chứa nhau (C) Hai đoạn giao nhau
Bổ đề 1: r, s là hai đoạn thì một trong các hàm sau sẽ đúng