Thực hiện và những tính chất của thực hiện Trong một hệ thống phân tán, các bộ xử lý có thể thực hiện các bước tính một cách đồng thời; tuy nhiên, chúng ta giả thiết bước tính này không
Trang 1ĐỊNH TUYẾN PHÂN TÁN TỰ ỔN ĐỊNH
DỰA TRÊN CỘNG TÁC GIỮA CÁC ĐIỂM ĐÍCH
LUẬN VĂN CAO HỌC
HƯỚNG DẪN: TS NGUYỄN ĐẠI THỌ HỌC VIÊN: LÊ ĐÌNH THANH
HÀ NỘI, 2007
Trang 2MỤC LỤC
LỜI CAM ĐOAN 1
MỤC LỤC 2
DANH SÁCH CÁC HÌNH VẼ 4
MỞ ĐẦU 6
CHƯƠNG 1 HỆ PHÂN TÁN 8
1.1 Khái niệm hệ phân tán 8
1.2 Vai trò của hệ phân tán 8
1.3 Đặc trưng của các hệ phân tán 9
1.4 Mô hình hóa các hệ phân tán 9
1.4.1 Mô hình chuyển thông báo 10
1.4.2 Mô hình với bộ nhớ dùng chung 10
1.4.3 Mô hình xen kẽ 10
1.4.4 Thực hiện và những tính chất của thực hiện 10
1.5 Đánh giá độ phức tạp 12
CHƯƠNG 2 TỰ ỔN ĐỊNH 14
2.1 Tính chất tự ổn định 14
2.2 Vai trò của tự ổn định 14
2.3 Đánh giá độ phức tạp 15
2.4 Ví dụ 1: Loại trừ lẫn nhau 16
2.5 Ví dụ 2: Xây dựng cây khung 21
CHƯƠNG 3 ĐỊNH TUYẾN 26
3.1 Bài toán định tuyến tổng quát 26
3.2 Một số bài toán định tuyến cụ thể 26
3.2.1 Định tuyến với đường đi ngắn nhất 26
3.2.2 Định tuyến với số chặng ít nhất 27
3.2.3 Định tuyến với băng thông cực đại 27
3.3 Phân loại các giải thuật định tuyến 27
3.3.1 Định tuyến theo véctơ khoảng cánh 28
3.3.2 Định tuyến phân tán có/không có sự cộng tác giữa các điểm đích 30
3.3.3 Định tuyến theo trạng thái liên kết 30
Trang 33.4.1 Giải thuật Netchange 34
3.4.2 Giải thuật Humblet 42
CHƯƠNG 4 ĐỊNH TUYẾN PHÂN TÁN TỰ ỔN ĐỊNH CỦA SHLOMI DOLEV 50
4.1 Mô tả chung 50
4.2 Giải thuật đa cây BFS 50
4.3 Giải thuật đếm 55
CHƯƠNG 5 GIẢI THUẬT ĐỀ XUẤT 57
5.1 Giới thiệu chung 57
5.2 Mạng và những giả thiết cơ sở 57
5.3 Cấu trúc dữ liệu, nhiệm vụ của giải thuật 57
5.4 Giải thuật 59
5.5 Ví dụ một thực hiện 62
5.6 Tính đúng đắn 64
5.7 Đánh giá giải thuật 70
KẾT LUẬN 72
TÀI LIỆU THAM KHẢO 73
Trang 4DANH SÁCH CÁC HÌNH VẼ
- Hình 2.1 Giải thuật loại trừ lẫn nhau của Dijstra (16)
- Hình 2.2.a Cấu hình xuất phát C0 = (2, 3, 4, 1, 1) (18)
- Hình 2.2.b Cấu hình đạt được sau bước tính tại P3, C1 = (2, 3, 4, 4, 1) (18)
- Hình 2.2.c Cấu hình đạt được sau bước tính tại P1, C2 = (2, 2, 4, 4, 1) (19)
- Hình 2.2.d Cấu hình đạt được sau bước tính tại P4, C3 = (2, 2, 4, 4, 4) (19)
- Hình 2.2.e Cấu hình đạt được sau bước tính tại P2, C4 = (2, 2, 2, 4, 4) (20)
- Hình 2.2.f Cấu hình đạt được sau bước tính tại P3, C5 = (2, 2, 2, 2, 4) (20)
- Hình 2.2.g Cấu hình đạt được sau bước tính tại P4, C6 = (2, 2, 2, 2, 2)
(an toàn)
(21)
- Hình 3.1 Định tuyến theo véctơ khoảng cách (29)
- Hình 3.3 Định tuyến theo trạng thái liên kết (30)
- Hình 3.5 Các bất biến P(u, w, v) và L(u, v) (37)
- Hình 3.6 Giải thuật của Humblet, mã cho nút I (45)
- Hình 3.7.b Các cây định tuyến cho từng nút (46)
- Hình 3.7.c Xây dựng cây định tuyến ở nút B (46)
- Hình 3.7.d Tạo lại cây định tuyến sau tôpô thay đổi (47)
- Hình 4 Giải thuật đa cây BFS của Shlomi Dolev (52)
- Hình 5.1 Giải thuật định tuyến tự ổn định có sự cộng tác giữa các
điểm đích và không tạo vòng lặp định tuyến vĩnh viễn, mã cho nút P
(60)
Trang 5- Hình 5.2.b Trạng thái ban đầu của mỗi nút (giả sử trạng thái sau lỗi) (62)
- Hình 5.2.c Trạng thái các nút sau vòng 1 (63)
- Hình 5.2.d Trạng thái các nút sau vòng 2 (63)
- Hình 5.2.e Trạng thái các nút sau vòng 3 (ổn định) (64)
Trang 6MỞ ĐẦU
Định tuyến là hoạt động chủ yếu của bất kỳ mạng máy tính nào Vấn đề định tuyến đã được nghiên cứu rất nhiều Nhiều cấu trúc dữ liệu cùng giải thuật đã được đề xuất cho vấn đề định tuyến Tuy nhiên, một thách thức tiếp tục diễn ra trong thập kỷ tới là xây dựng các hệ thống định tuyến thật sự sẵn sàng và đáng tin cậy
Các giải thuật định tuyến truyền thống có thể thích ứng với những thay đổi trong tôpô mạng, cũng như các thay đổi của tình trạng mạng Tuy nhiên, chúng không bỏ qua được các lỗi treo Một khi lỗi treo xuất hiện, nó phá vỡ hoạt động của hệ thống Hậu quả của lỗi, như vậy, có thể rất thê thảm Ngoài ra, muốn hệ thống hoạt động tốt, nó phải được khởi động một cách đúng đắn Trong nhiều mạng, việc khởi động mạng rất khó thực hiện
Do vậy, chúng ta rất mong muốn có các hệ thống (giải thuật) định tuyến tự ổn định, tức là hệ thống có thể hoạt động đúng đắn bất kể xuất phát từ trạng thái ban đầu nào và đã gặp lỗi gì Tự ổn định được giới thiệu đầu tiên bởi Dijkstra [4], đã được nghiên cứu nhiều nơi trên thế giới, nhưng còn tương đối mới mẻ ở Việt Nam
Ngoài tính không tự ổn định, các giải thuật định tuyến thường gặp phải vấn đề về vòng lặp định tuyến [9, 13] Vòng lặp định tuyến xuất hiện không những làm cho giải thuật không kết thúc mà còn làm cho một số kết quả đường định tuyến luôn luôn sai Khắc phục vòng lặp định tuyến cũng là yêu cầu tiếp tục đặt ra cho thiết kế các hệ thống định tuyến
Đa số các giải thuật định tuyến phân tán thuộc nhóm độc lập điểm đích [7, 8, 9, 13], nghĩa là việc tính đường định tuyến đến nút này hoàn toàn độc lập với việc tính đường định tuyến đến các nút khác Nếu có sự cộng tác giữa các điểm đích, tức tính đường định tuyến đến nút này dựa trên đường định tuyến đến các nút khác, thời gian tính toán có thể được rút ngắn, đồng thời có thể khắc phục được vấn đề về vòng lặp định tuyến
Những quan sát nêu trên là lý do tôi chọn đề tài này Mặc dù vậy, mục đích và công việc của luận văn này không chỉ là nghiên cứu đưa ra một giải thuật định tuyến phân tán
tự ổn định, có sự cộng tác giữa các điểm đích và không có vòng lặp định tuyến mà còn thông qua việc làm cụ thể này để trình bày, giới thiệu các nội dung của tự ổn định
Trang 7phương pháp đánh giá độ phức tạp của giải thuật phân tán [2, 5, 6]
Tiếp theo, Chương 2 hệ thống hóa và giới thiệu các nội dung của tự ổn định Sau phần
trình bày khái niệm, mô hình hóa, vai trò tự ổn định, phương pháp đánh giá giải thuật tự
ổn định là các phần trình bày ví dụ về giải thuật tự ổn định Hai giải thuật phân tán tự ổn định được chọn và giới thiệu trong chương này là Giải thuật loại trừ lẫn nhau của Dijstra [4] và Giải thuật xây dựng cây khung của Shlomi Dolev [13]
Chương 3 trình bày những nội dung quen thuộc của định tuyến, nhấn mạnh các tính
chất không có vòng lặp định tuyến, có cộng tác giữa các điểm đích làm mục tiêu cho xây dựng giải thuật định tuyến được đề xuất trong Chương 5 Chương kết thúc với hai ví dụ
về giải thuật định tuyến phân tán không tự ổn định, một tạo vòng lặp định tuyến (Netchange [9]) và một không tạo vòng lặp định tuyến vĩnh viễn (Humblet [11])
Chương 4 được giành riêng để trình bày giải thuật định tuyến phân tán tự ổn định của
Shlomi Dolev [14] Các giải thuật tự ổn định đa cây BFS và giải thuật đếm được kết hợp
để tạo nên một giải thuật định tuyến phân tán tự ổn định Mặc dù giải thuật của Shlomi Dolev thuộc nhóm độc lập điểm đích, khi thực hiện giải thuật có tạo vòng lặp định tuyến nhưng giải thuật đã cho chúng ta một mẫu điển hình về xây dựng giải thuật định tuyến phân tán tự ổn định
Chương cuối cùng, Chương 5, là phần trình bày giải thuật được đề xuất Có thể xem
giải thuật được đề xuất là sự kết hợp và nâng cấp hai giải thuật định tuyến của Humblet (được trình bày trong Chương 3) và của Shlomi Dolev (được trình bày trong Chương 4) Giải thuật hội tụ ba tính chất tốt: tự ổn định, không tạo vòng lặp định tuyến vĩnh viễn, và
có sự cộng tác giữa các điểm đích Tính đúng và độ phức tạp của giải thuật được phát biểu và chứng minh trong phần cuối chương
Chắc chắn, luận văn còn có những thiếu sót trong nội dung cũng như trong trình bày Với mong muốn được phát triển hơn nữa trong lĩnh vực đang nghiên cứu, tác giả của luận văn rất mong nhận được sự đóng góp ý kiến của các thầy cô giáo và của các anh/chị học viên
Trang 8CHƯƠNG 1 HỆ PHÂN TÁN
1.1 Khái niệm hệ phân tán
Hệ phân tán là tập hợp các thiết bị tính riêng rẽ có thể giao tiếp với nhau Đây là một
khái niệm hết sức tổng quát, bao trùm một phạm vị rộng các hệ thống máy tính ngày nay,
từ các bộ chíp VLSI đến các bộ đa xử lý, các mạng cục bộ, và Internet Nếu như hệ song song phối hợp nhiều bộ xử lý nhằm giải quyết một vấn đề cho trước một cách nhanh nhất thì hệ phân tán bao gồm một tập các bộ xử lý có chương trình làm việc riêng bán độc lập,
vì những lý do gì đó, ví dụ chia sẻ tài nguyên, tăng tính sẵn sàng, khứ lỗi, các bộ xử lý cần phối hợp hành động với nhau
Ta có thể thấy các hệ phân tán ở khắp mọi nơi Điển hình, các hệ phân tán được sử dụng để chia sẻ tài nguyên và chia sẻ dữ liệu Các máy tính kết nối mạng với nhau có thể dùng chung máy in, máy quét, chia sẻ các tệp tài liệu, chương trình… Tính toán ngang hàng là một kiểu thực hiện của hệ phân tán ngày càng trở nên phổ biến cho việc cung cấp các thiết bị và dịch vụ tính toán Các hệ phân tán nhiều tham vọng hơn cho hiệu năng hoạt động cao bằng cách kết hợp giải các bài toán con một cách song song, đồng thời tăng tính sẵn sàng của hệ thống trong trường hợp một số thiết bị gặp lỗi
1.2 Vai trò của hệ phân tán
Hệ phân tán ngày càng trở nên phổ biến vì những vai trò sử dụng quan trọng của chúng Trước hết, phải kể đến vai trò trao đổi thông tin Các hệ phân tán cho khả năng chia sẻ thông tin rộng rãi Thông tin từ hệ thống máy tính của ngân hàng đặt tại trụ sở nước này có thể được sử dụng bởi hệ thống máy tính của ngân hàng đặt tại trụ sở nước khác Hệ phân tán cũng cho khả năng chia sẻ thông tin giữa các thiết bị hỗn tạp Một máy tính có thể "nói chuyện" với các máy tính khác loại, các điện thoại cố định, di động, các PDA, … Thứ hai, các hệ phân tán cho khả năng chia sẻ tài nguyên cả phần cứng lẫn phần mềm Các máy tính kết nối mạng có thể dùng chung máy in, có thể chia sẻ các tệp dữ liệu, các tệp chương trình Thứ ba, bằng việc sao lặp, nhân bản, các hệ phân tán cho độ tin cậy cao Nếu toàn bộ dữ liệu của một chi nhánh ngân hàng lưu trong máy tính đột nhiên biến mất, người ta có thể khôi phục lại bằng cách sao phần nhân bản đã được lưu tại một nơi khác trên hệ thống máy tính của ngân hàng Thứ tư, thông qua song song hóa, các thực thể trong hệ phân tán có thể chia sẻ công việc, thực hiện đồng thời công việc chung, do vậy làm tăng hiệu suất hoạt động của hệ thống Thứ năm, hệ phân tán làm đơn
Trang 9việc thiết kế đơn giản mà việc thực hiện cũng đơn giản
1.3 Đặc trưng của các hệ phân tán
Ba đặc trưng, và cũng là những khó khăn điển hình khi thiết kế, của hệ phân tán là: không đồng bộ, thiếu thông tin toàn cục, và không có cơ chế phát hiện sự cố chính xác Một hệ phân tán không có đồng hồ chung Ta cũng không thể đồng bộ hóa đồng hồ của các bộ xử lý khác nhau vì không biết chắc độ trễ truyền thông Để đạt được tính đồng bộ,
ta không thể dùng đồng hồ vật lý mà phải vận dụng các khái niệm và giải thuật nhân quả Tương tự, một hệ phân tán không có bộ nhớ toàn cục chung Các bộ xử lý không thể biết được trạng thái toàn cục của hệ thống "Hiểu biết" của mỗi bộ xử lý chỉ có tính cục bộ
Do vậy, người thiết kế hệ phân tán, cụ thể là người xây dựng giải thuật phân tán phải xây dựng cơ chế đánh giá các tính toàn cục Ngoài ra, chúng ta không có cơ chế phát hiện sự
cố chính xác trong hệ phân tán vì không thể phân biệt được bộ xử lý chậm hay bị sự cố Khi một bộ xử lý gặp sự cố, các bộ xử lý còn lại vẫn phải tiếp tục làm việc để đạt được kết quả như mong muốn Những đặc trưng này thực sự là những khó khăn khi thiết kế các
hệ phân tán
1.4 Mô hình hóa các hệ phân tán
Trong một hệ phân tán, mỗi thực thể (máy tính, bộ xử lý, tiến trình) chạy một chương trình riêng bao gồm tập các lệnh Khi thực hiện lệnh, thực thể thay đổi trạng thái cục bộ của nó Ta có thể mô hình hóa sự thay đổi này bằng cách xem mỗi thực thể là một máy trạng thái Một hệ phân tán được mô hình hóa bằng tập n máy trạng thái Ký hiệu máy thứ i là Pi
Truyền thông giữa các thực thể có thể thực hiện bằng cách chuyển thông báo hay sử dụng bộ nhớ dùng chung Truyền thông bằng cách ghi vào và đọc ra từ bộ nhớ dùng
chung thường hạn chế hệ thống với các thực thể gần nhau về mặt địa lý, ví như hệ thống
đa bộ xử lý hay các máy tính đa nhiệm Truyền thông theo cách chuyển thông báo không
có giới hạn như vậy, có thể thực hiện trong cả hệ thống mà các thực thể rất xa nhau về mặt địa lý như các mạng máy tính
Tùy theo phương pháp truyền thông được sử dụng, ta có mô hình chuyển thông báo hay mô hình với bộ nhớ dùng chung
Trang 101.4.1 Mô hình chuyển thông báo
Trong mô hình chuyển thông báo, các láng giềng trao đổi thông tin cho nhau bằng cách gửi và nhận thông báo Liên kết giữa các thực thể có thể đơn hoặc lưỡng hướng Liên kết đơn hướng từ thực thể Pi đến thực thể Pj được sử dụng để chuyển thông báo từ Piđến Pj Ta có thể trừu tượng hóa liên kết đơn hướng trên bằng hàng đợi FIFO qi, j chứa tất
cả các thông báo được Pi gửi cho Pj nhưng Pj chưa nhận được Mỗi khi Pi gửi cho Pj một thông báo m, m được đưa vào hàng đợi qi,j Pj có thể nhận m khi nó trên đỉnh hàng đợi
qi,j Liên kết lưỡng hướng giữa Pi và Pj có thể được mô hình hóa bằng hai hàng đợi: qi,jcho hướng từ Pi đến Pj và qj,i cho hướng từ Pj đến Pi
Trạng thái của hệ thống phân tán chuyển thông báo tại một thời điểm cụ thể được xác định bởi trạng thái của các bộ xử lý và nội dung của các hàng đợi chứa thông báo tại thời
điểm đó Cấu hình hệ thống (hay cấu hình) được dùng để chỉ trạng thái này Một cấu hình
được ký hiệu c = (s1, s2, …, sn, q1,2 q1,3, …, qi,j, …., qn, n-1), trong đó si, 1 ≤ i ≤ n , là trạng thái của Pi và qi, j, i j, là hàng đợi chứa thông báo Pi gửi cho Pj nhưng Pj chưa nhận được
1.4.2 Mô hình với bộ nhớ dùng chung
Trong mô hình với bộ nhớ dùng chung, các bộ xử lý trao đổi thông tin cho nhau bằng cách sử dụng chung các ô nhớ Các bộ xử lý có thể ghi vào một tập các ô nhớ và đọc ra từ một tập các ô nhớ khác Cấu hình hệ thống bao gồm trạng thái của các bộ xử lý và nội dung của các ô nhớ dùng chung Một cấu hình của hệ thống gồm n bộ xử lý và m ô nhớ dùng chung được ký hiệu c = (s1, s2, …, sn,, r1, r2, …, rm), trong đó si, 1 ≤ i ≤ n, là trạng thái của Pi, rj, 1 ≤ j ≤ m, là nội dung của ô nhớ dùng chung thứ j
1.4.3 Mô hình xen kẽ
Mô hình xen kẽ được sử dụng để lý giải hành vi của hệ thống phân tán Trong mô hình
này, tại mỗi thời điểm có duy nhất một bộ xử lý thực hiện một bước tính (còn gọi là bước nguyên tử) Mỗi bước nguyên tử bao gồm một số phép tính bên trong bộ xử lý, hay còn gọi là sự kiện tính, và một phép giao, hay còn gọi là sự kiện giao - một phép gửi hoặc nhận trong hệ thống chuyển thông báo hay một phép ghi hoặc đọc trong hệ thống sử dụng
bộ nhớ dùng chung
1.4.4 Thực hiện và những tính chất của thực hiện
Trong một hệ thống phân tán, các bộ xử lý có thể thực hiện các bước tính một cách đồng thời; tuy nhiên, chúng ta giả thiết bước tính này không ảnh hưởng đến bước tính
Trang 11bộ nhớ dùng chung, chúng ta giả thiết kiến trúc bộ nhớ dùng chung đảm bảo tuần tự hóa:
có thể sắp xếp các thao tác đọc và ghi theo thứ tự hoàn toàn để kết quả của thao tác đọc
từ một ô nhớ là giá trị được ghi vào ô nhớ tại lần ghi cuối cùng vào ô nhớ trước thao tác đọc
Trong các phần sau đây, chúng ta sử dụng thuật ngữ bước cho bước nguyên tử và ký hiệu một bước (cùng với định danh của bộ xử lý thực hiện bước tính) là a Cấu hình c2được gọi là đến được trực tiếp từ cấu hình c1, ký hiệu là c1 a c2, nếu tồn tại một bước
tính a để từ cấu hình c1, thực hiện bước a, ta được cấu hình c2 Cấu hình c’ được gọi là
đến được từ cấu hình c, ký hiệu c c’, nếu tồn tại các cấu hình ci, 0 ≤ i ≤ n, và các bước
aj, 0 ≤ j < n, để c = c0 a0 c1 a1 c2 … cn-1an-1 cn = c’ Bước tính a’ được gọi là áp
dụng được trên cấu hình c nếu tồn tại cấu hình c’ để c a' c’
Một thực hiện E = (c1, a1, c2, a2, …) là một dãy xen kẽ các cấu hình và bước tính trong đó ci-1 ai-1 ci (i > 1); nói cách khác, cấu hình ci (i > 1) đến được trực tiếp từ cấu hình ci-1 bằng việc áp dụng bước tính ai-1 Ví dụ, trong mô hình với bộ nhớ dùng chung,
nếu tại bước ai, bộ xử lý Pj ghi giá trị x vào ô nhớ dùng chung rk, thì chỉ hai thành phần
có giá trị khác nhau trong ci và ci+1 là Pj và rk
Một thực hiện được gọi là thỏa đáng nếu trong thực hiện đó mọi bước tính áp dụng
được vô hạn lần được thực hiện vô hạn lần Nói cách khác, nếu một bộ xử lý có một bước
để thực hiện thì bộ xử lý sẽ thực hiện bước tính đó
Trong các hệ thống phân tán chuyển thông báo, một thông báo có thể bị mất trong khi thực hiện giải thuật Các mã phát hiện lỗi được sử dụng để nhận biết và loại bỏ các thông báo bị ngắt, những thông báo này được xem là thông báo bị mất Để mô hình hóa các hệ thống này, chúng ta mở rộng định nghĩa bước tính để bao hàm sự kiện mất thông báo (sự
kiện môi trường) dạng lossi, j(m) – thông báo m được Pi gửi cho Pj nhưng bị mất và Pj
không nhận được Sự kiện lossi, j(m) áp dụng được trên cấu hình ck nếu trong ck, qi,j chứa
m Kết quả áp dụng lossi, j(m) trên ck được cấu hình ck+1 trong đó m bị loại khỏi qi,j còn các thành phần khác không thay đổi so với trong ck Khác với các sự kiện tính được thực hiện bởi các bộ xử lý, trong các thực hiện thỏa đáng, chúng ta không yêu cầu các sự kiện môi trường áp dụng được trên vô hạn lần phải xảy ra vô hạn lần Nói cách khác, ta không yêu cầu tính thỏa đáng phải áp dụng đối với các sự kiện môi trường
Trang 12Một thực hiện thỏa đáng kéo dài vô hạn không có nghĩa là các chương trình cục bộ
không bao giờ kết thúc Để mô hình hóa tính kết thúc của giải thuật, chúng ta định ra một
số trạng thái kết thúc của các bộ xử lý Đây là trạng thái của các bộ xử lý mà một khi đạt được, các bộ xử lý sẽ không bao giờ thay đổi, không gửi/nhận thông báo (đối với mô hình chuyển thông báo) hoặc không làm thay đổi nội dung các biến dùng chung (đối với mô hình với bộ nhớ dùng chung) Cấu hình trong đó tất cả các bộ xử lý không lỗi ở trạng thái kết thúc và không có thông báo treo (đã được gửi nhưng chưa được nhận) nào (với mô hình chuyển thông báo) được gọi là cấu hình kết thúc Một thực hiện kết thúc khi nó đạt đến cấu hình kết thúc
Các hệ thống phân tán được mô tả ở trên thuộc lớp không đồng bộ Trong thực tế, tồn
tại một lớp các hệ phân tán đồng bộ Các thành phần trong hệ phân tán đồng bộ thường
gần nhau về mặt địa lý và được điều khiển bởi một đồng hồ sung Các bộ xử lý thực hiện các phép tính đồng bộ theo nhịp sung đồng hồ Tuy nhiên, chúng ta không quan tâm đến cấu trúc vật lý của hệ thống mà chỉ quan tâm đến tính đồng bộ của nó Vì tất cả các bộ xử
lý thực hiện các phép tính đồng thời nên một thực hiện của hệ thống phân tán đồng bộ đơn giản được ký hiệu là E = (c1, c2, …) và hoàn toàn được xác định từ cấu hình ban đầu,
c1
1.5 Đánh giá độ phức tạp
Rõ ràng, để xây dựng các hệ phân tán, chúng ta cần xây dựng các giải thuật phân tán Thực hiện của giải thuật phân tán diễn ra phân tán trên nhiều bộ xử lý Cũng như các giải thuật khác, giải thuật phân tán được đánh giá độ phức tạp trên hai khía cạnh: độ phức tạp tính toán và độ phức tạp bộ nhớ Thoạt nhìn, việc đánh giá độ phức tạp tính toán dường như trái ngược với tính không đồng bộ của hệ thống phân tán Theo định nghĩa về các hệ thống không đồng bộ, không có giới hạn trên về thời gian xử lý/truyền thông báo Tuy
nhiên, để có thể đánh giá và so sánh các giải thuật với nhau, người ta sử dụng số vòng
không đồng bộ để đánh giá độ phức tạp của một thực hiện cụ thể Vòng không đồng bộ
(hay vòng) thứ nhất trong thực hiện E là tiền tố ngắn nhất E’ của E sao cho mỗi bộ xử lý
thực hiện ít nhất một bước trong E’ Gọi E’’ là hậu tố của E theo liền sau E’, E=E’E’’ Vòng thứ hai của E là vòng thứ nhất của E’’, vv… Số vòng trong thực hiện của một giải thuật phân tán được dùng để đánh giá độ phức tạp thời gian của giải thuật
Trang 13hiện được một bước tính
Độ phức tạp thời gian của một hệ thống đồng bộ là số sung trong thực hiện (bằng số vòng)
Độ phức tạp bộ nhớ của một giải thuật là tổng số bit nhớ (dùng chung và cục bộ) được sử dụng để cài đặt giải thuật
Độ phức tạp thông báo là tổng số thông báo (hoặc tổng kích thước các thông báo) được gửi/nhận khi thực hiện giải thuật
Trang 14CHƯƠNG 2 TỰ ỔN ĐỊNH
2.1 Tính chất tự ổn định
Khái niệm tự ổn định được Dijkstra đưa ra đầu tiên năm 1973 trong bài báo nổi tiếng
“Self-stabilizing systems in spite of distributed control” [4] Tự ổn định, sau đó, được nghiên cứu như một chuyên ngành thuộc tính toán phân tán
Một hệ tự ổn định có thể xuất phát từ một cấu hình bất kỳ, luôn đảm bảo sẽ thể hiện được hành vi “hợp lệ” mong muốn Nói cách khác, với thực hiện bất kỳ, sau hữu hạn lần
biến đổi cấu hình, ta có chuỗi cấu hình hợp lệ
Ta định nghĩa hành vi hợp lệ mong muốn bằng tập các thực hiện hợp lệ được ký hiệu
là LE Một tập các thực hiện hợp lệ được xác định cho một hệ thống cụ thể và một bài toán cụ thể Mọi thực hiện của hệ thống tự ổn định có hậu tố xuất hiện trong LE [13] Ví
dụ, với bài toán loại trừ lẫn nhau, thực hiện hợp lệ là thực hiện trong đó tại mọi cấu hình,
có nhiều nhất một bộ xử lý nằm trong đoạn găng, và trong đó mọi bộ xử lý được vào đoạn găng vô hạn lần
Một cấu hình c được gọi là an toàn đối với tập thực hiện hợp lệ LE và một giải thuật
A nếu mọi thực hiện thỏa đáng của giải thuật A xuất phát từ c đều thuộc LE
Một giải thuật được gọi là tự ổn định đối với tập thực hiện hợp lệ LE nếu mọi thực hiện thỏa đáng của giải thuật đều đạt đến một cấu hình an toàn đối với giải thuật và LE
lý và liên kết có thể được thêm mới, mất chức năng, được khôi phục lại)
Tự ổn định cho chúng ta một cách giải quyết triệt để trong khắc phục lỗi Một hệ thống không thể tránh được lỗi Lỗi có thể do phần cứng, phần mềm, do người sử dụng thiết lập hay nhập liệu sai, … Cách khắc phục lỗi truyền thống là liệt kê ra các lỗi, đồng thời, đưa ra cách giải quyết cho mỗi lỗi Tuy nhiên, cách này chỉ giải quyết được một số lỗi thường gặp Chúng ta không thể kể ra tất cả các lỗi tiềm tàng, do vậy không thể đảm
Trang 15cách giải quyết khác là khứ lỗi [6, 10] Tuy nhiên, cách này cũng chỉ khắc phục được hữu hạn lỗi Khi số lỗi vượt quá hệ số kháng lỗi, hệ thống rơi vào trạng thái lỗi và không thể hoạt động bình thường trừ khi nó được khởi động lại
2.3 Đánh giá độ phức tạp
Cũng như các giải thuật phân tán khác, giải thuật tự ổn định được đánh giá độ phức tạp thời gian dựa trên số vòng không đồng bộ Số vòng trong thực hiện của một giải thuật
tự ổn định được dùng để đánh giá độ phức tạp thời gian của giải thuật
Giải thuật tự ổn định không bao giờ kết thúc, và các bộ xử lý phải tiếp tục liên lạc với các láng giềng của chúng Trong mô hình với bộ nhớ dùng chung, các bộ xử lý phải tiếp tục đọc các ô nhớ dùng chung của các láng giềng Trong mô hình chuyển thông báo, các
bộ xử lý phải tiếp tục gửi và nhận thông báo Tính chất không kết thúc của giải thuật tự
ổn định được giải thích như sau: giả sử các bộ xử lý kết thúc, Pi kết thúc ở trạng thái si Theo tính chất tự ổn định của giải thuật, hệ thống phải đạt đến cấu hình an toàn xuất phát
từ bất kỳ cấu hình nào Khi hệ thống được bắt đầu từ cấu hình c tại đó bộ xử lý Pi có trạng thái si, không có bộ xử lý nào thực hiện bất kỳ bước nào, như vậy c là một cấu hình
an toàn Do vậy, nhiệm vụ của giải thuật đã đạt được khi mỗi bộ xử lý Pi chỉ có duy nhất một trạng thái si Rõ ràng, nhiệm vụ này không yêu cầu bất kỳ liên lạc nào giữa các bộ xử
lý và giải thuật được sử dụng không phải là một giải thuật phân tán
Tính không kết thúc của giải thuật dễ ràng được nhận ra từ mã của giải thuật: mã của giải thuật thường bao gồm một vòng lặp vô hạn chứa các thao tác liên lạc với các láng giềng Ví dụ, trong mô hình với bộ nhớ dùng chung, mã của giải thuật cho một bộ xử lý
Pi thường bắt đầu với các thao tác đọc các ô nhớ dùng chung của láng giềng, theo đó là các thao tác ghi vào các ô nhớ dùng chung cục bộ Số bước cần thiết để thực hiện một lần lặp của vòng lặp vô hạn trong ví dụ này là O(∆), trong đó ∆ là cận trên bậc (số láng giềng) của Pi
Chúng ta mở rộng khái niệm vòng không đồng bộ để có khái niệm chu kỳ không đồng
bộ (hay là chu kỳ) Chu kỳ thứ nhất của thực hiện E là tiền tố ngắn nhất E’ của E sao cho
mỗi bộ xử lý hoàn thành ít nhất một lần lặp của vòng lặp vô hạn trong E’ Gọi E’’ là hậu
tố của E liền tiếp sau E’, E = E’E’’ Chu kỳ thứ hai của E là chu kỳ thứ nhất của E’’, vv…
Trang 16Lưu ý rằng nếu mỗi lần lặp của vòng lặp vô hạn bao gồm các thao tác đọc ô nhớ dùng chung của láng giềng, tính toán cục bộ, và ghi vào các ô nhớ dùng chung cục bộ, thì mỗi chu kỳ kéo dài O(∆) vòng
Độ phức tạp thời gian của một hệ thống đồng bộ là số sung trong thực hiện (bằng số vòng)
Độ phức tạp bộ nhớ của một giải thuật là tổng số bit nhớ (dùng chung và cục bộ) được sử dụng để cài đặt giải thuật
Độ phức tạp thông báo là tổng số thông báo (hoặc tổng kích thước các thông báo) được gửi/nhận khi thực hiện giải thuật
2.4 Ví dụ 1: Loại trừ lẫn nhau
Trong mục này, chúng ta sẽ xét một bài toán đơn giản với một giải thuật tự ổn định được áp dụng cho bài toán để minh họa cho vấn đề tự ổn định đã được nêu trong các mục trên
Bài toán Cho n bộ xử lý được nối với nhau theo tôpô vòng, được đánh số P0, P1, P2,
…, và Pn-1 Bộ xử lý Pi (i = 0, …, n-1) có láng giềng bên trái P(i-1) mod n, láng giềng bên phải P(i+1) mod n, và biến cục bộ xi nhận các giá trị nguyên từ 0 đến n Chỉ Pi có quyền ghi vào xi Pi có thể đọc biến cục bộ của láng giềng bên trái nó - x(i-1) mod n Cấu hình của hệ thống là một véctơ n chiều (x0, x1, …, xn-1) Mỗi bước tại Pi bao gồm các thao tác: đọc x(i-
1)mod n, tính lại xi từ giá trị hiện tại của xi và x(i-1)mod n đọc được
Tập các thực hiện hợp lệ ME bao gồm các thực hiện mà tại mỗi cấu hình trong thực
hiện, có duy nhất một bộ xử lý có thể thay đổi trạng thái Mỗi bộ xử lý có quyền được
thay đổi trạng thái vô hạn lần trong mỗi thực hiện
Giải thuật tự ổn định được áp dụng cho bài toán nêu trên như sau:
Trang 17Chứng minh Tại cấu hình c, chỉ P0 có thể thay đổi trạng thái, dẫn đến cấu hình c1 Tại cấu hình c1, chỉ P1 có thể thay đổi trạng thái, dẫn đến cấu hình c2, vv… ■
trong c, i = 0, …, n-1
Chứng minh Có n biến cục bộ Mỗi biến cục bộ xi có thể nhận một trong n+1 giá trị khác nhau Bởi vậy, có ít nhất một giá trị j không bằng bất kỳ xi nào ■
Bổ đề 2.3 Với mọi cấu hình c, trong mọi thực hiện thỏa đáng xuất phát từ c, bộ xử lý
P 0 thay đổi giá trị x 0 ít nhất một lần trong mọi n vòng
Chứng minh Giả sử tồn tại cấu hình c và thực hiện thỏa đáng xuất phát từ c mà trong
thực hiện đó P0 không thay đổi giá trị x0 trong n vòng đầu tiên Gọi c2 là cấu hình đạt được ngay sau khi P1 thực hiện bước đầu tiên trong vòng thứ nhất Rõ ràng, x0 = x1 trong
c2 và mọi cấu hình đạt được trong n-1 vòng kế tiếp Gọi c3 là cấu hình đạt được ngay sau khi P2 thực hiện bước đầu tiên trong vòng thứ hai Từ c3 và các cấu hình đạt được trong n-2 vòng tiếp theo, x0 = x1 = x2 Lập luận tương tự, đến vòng thứ n-1 ta có x0 = x1 = … =
xn-1 Đến vòng thứ n, P0 được kích hoạt và giá trị x0 được thay đổi.□
Định lý 2.1 Với mọi cấu hình c, mọi thực hiện thỏa đáng xuất phát từ c đến được một
cấu hình an toàn với tập các thực hiện hợp lệ ME trong O(n 2 ) vòng
Chứng minh Theo Bổ đề 2.2, tại cấu hình c, tồn tại ít nhất một giá trị 0 ≤ j ≤ n sao cho
xi ≠ j trong c, i = 0, …, n-1 Theo Bổ đề 2.3, trong mọi thực hiện thỏa đáng xuất phát từ
c, bộ xử lý P0 thay đổi giá trị x0 ít nhất một lần trong mọi n vòng Mỗi khi P0 thay đổi giá trị x0, nó tăng x0 lên 1 sau đó lấy phần dư khi chia x0 cho n Do vậy, tại ít nhất một vòng trong n2 vòng đầu tiên, j được gán cho x0 trong mọi thực hiện thỏa đáng xuất phát từ c Gọi cj là cấu hình đạt được ngay sau khi giá trị j được gán cho x0 lần đầu tiên Mọi bộ xử
lý Pi, 1 ≤ i < n chỉ sao giá trị xi-1 sang xi và không tự tăng xi Do vậy, với 0 ≤ j ≤ n-1, xi j trong mọi cấu hình trước cj, và trong cấu hình cj, chỉ duy nhất x0 = j Sau cấu hình cj, P1sao giá trị x0 (bằng j) cho x1 trong không chậm hơn một vòng P2 sao giá trị j cho x2 sau
P1 sao giá trị j cho x1 trong không chậm hơn một vòng Tiếp tục lập luận, Pn-1 sao giá trị j cho xn-1 trong không chậm hơn n-1 vòng sau cấu hình cj Gọi cs là cấu hình ngay sau khi
Pn-1 sao giá trị j cho xn-1 Theo Bổ đề 2.1, cs là cấu hình an toàn Như vậy, cấu hình an toàn đạt được trong n2
+n-1 vòng □
Trang 18Các Hình 2.2.a -2.2.g cho ta một ví dụ về thực hiện của giải thuật với hệ thống gồm 5
Trang 212.5 Ví dụ 2: Xây dựng cây khung
Trong mục này, chúng ta tiếp tục xét một bài toán với một giải thuật tự ổn định để minh họa cho định nghĩa và các yêu cầu tự ổn định, đó là giải thuật tạo cây khung duyệt theo chiều rộng (BFS – breadth first search) trên một đồ thị thuộc hệ thống phân tán G(E,V) Mỗi nút vi V biểu diễn một bộ xử lý Pi, và mỗi cạnh (vi, vj) E biểu diễn Pi và
Pj là láng giềng của nhau Ta sử dụng mô hình với bộ nhớ dùng chung cho bài toán này
Bộ xử lý Pi liên lạc với láng giềng Pj bằng việc ghi vào thanh ghi rij và đọc ra từ thanh ghi
rji Chỉ Pi có quyền ghi vào rij, bởi vậy ta nói rij là thanh ghi của Pi
Hệ thống bao gồm n bộ xử lý P1, P2, …, Pn, trong đó P2, …, Pn thực thi các chương trình giống nhau còn P1 thực thi một chương trình khác P1 được gọi là bộ xử lý gốc (hay
là gốc) Chương trình có một tham số đầu vào là số láng giềng
Giải thuật đang nêu là giải thuật BFS phân tán Mỗi bộ xử lý liên tục tính khoảng cách
từ nó đến bộ xử lý gốc và thông báo khoảng cách này cho các láng giềng bằng cách ghi khoảng cách tính được vào các thanh ghi Bắt đầu một thực hiện bất kỳ, chỉ duy nhất một
bộ xử lý đảm bảo chính xác khoảng từ nó cách đến gốc là gốc Một khi khoảng cách này được ghi vào tất cả các thanh ghi của bộ xử lý gốc, khoảng cách được ghi trên các thanh
ghi này sẽ không bao giờ bị thay đổi Khi tất cả các bộ xử lý ở khoảng cách x đến gốc đã
hoàn thành chính xác tính toán khoảng cách từ chúng đến gốc và đã ghi khoảng cách đó
Trang 22đến tất cả các thanh ghi của chúng, giá trị các thanh ghi của chúng không thay đổi trong
suốt phần còn lại của thực hiện, và các bộ xử lý ở khoảng cách x+1 từ gốc sẵn sàng tính
khoảng cách chính xác từ chúng đến gốc, vv…
Kết quả xử lý là một cây khung được tạo từ các thanh ghi như sau: mỗi thanh ghi rij, tại đó Pi ghi vào và Pj đọc ra, chứa một trường nhị phân có tên là parent và được ký hiệu
là rij.parent Nếu Pj là cha của Pi trên cây BFS, giá trị r ij parent là 1; ngược lại giá trị của
rij.parent là 0 Ngoài ra, mỗi thanh ghi r ij có một trường distance, được ký hiệu là r ij dis,
để lưu khoảng cách từ Pi đến gốc Giá trị lớn nhất có thể lưu trong trường distance là N, trong đó N là cận trên số bộ xử lý trong hệ thống Nếu gán giá trị lớn hơn N cho trường
distance, giá trị thực sự được ghi sẽ là N
Mã của giải thuật được cho trong Hình 2.3 Trong mã này, là số láng giềng Chương trình cho bộ xử lý gốc vô cùng đơn giản: liên tục thông báo cho các láng giềng
nó là gốc bằng cách liên tục ghi cặp giá trị <0, 0> vào tất cả các thanh ghi của nó
_
Bộ xử lý gốc:
do forever for m:= 1 to do write r im := <0, 0>
od
Bộ xử lý khác gốc:
do forever for m:= 1 to do lr mi := read(r mi ) FirstFound := false
dist := 1 + min{lr mi dis | 1 ≤ m ≤ } for m := 1 to
do
if not FirstFound and lr mi dis = dist-1 then write r im := <1, dist>
FirstFound := true else
write r im := <0, dist>
od
od _
Hình 2.3 Giải thuật cây bao trùm
Trang 23lý còn lại bao gồm một vòng lặp vô hạn Trong vòng lặp này, bộ xử lý đọc các giá trị từ tất cả các thanh ghi của các láng giềng Bộ xử lý Pi, có láng giềng, duy trì biến lrji,
tương ứng với r ji , để lưu giá trị cuối cùng của r ji được Pi đọc lrij có hai trường tương ứng
là lrij.parent và lrij.dis Khi tất cả các thanh ghi r ji được đọc, Pi tính khoảng cách của nó
đến gốc và ghi vào biến dist Biến FirstFound được sử dụng để sau mỗi lượt thực hiện
vòng lặp, mỗi bộ xử lý có duy nhất bộ bộ xử lý cha
Trong Hình 2.3, chúng ta sử dụng một chương trình để định nghĩa một tập các trạng thái và hàm chuyển của một bộ xử lý Trạng thái của một bộ xử lý bao gồm giá trị của bộ
đếm chương trình và giá trị của các biến cục bộ: m, lrji (với 1 ≤ j ≤ ), FirstFound, và
dist Một bước của bộ xử lý gốc bắt đầu với các sự kiện tính cập nhật giá trị của m (tăng
m lên 1 nếu m ≤ , hoặc gán m := 1 nếu ngược lại) Một sự kiện giao được thực hiện là thao tác ghi <0, 0> vào r im Bước kết thúc với thao tác ghi này Bước tiếp theo bắt đầu với
sự kiện tính liền sau sự kiện ghi cuối cùng, vv… Tương tự, một bước của bộ xử lý không
phải gốc kết thúc với một trong ba sự kiện giao (read(r mi ), write r im := <1, dist> hoặc
write r im := <0, dist>), và bước tiếp theo liền sau sự kiện giao
Giá trị của mỗi thanh ghi là kết hợp của một giá trị nhị phân (trường parent) và một giá trị nguyên (trường dis, không lớn hơn N) Cấu hình hệ thống bao gồm trạng thái các
bộ xử lý và giá trị của các thanh ghi
Tập các thực hiện hợp lệ ST là tập các thực hiện mà mỗi cấu hình trong thực hiện tạo
ra một cây BFS Thực tế, một cây BFS được gọi là cây BFS cả được tạo Ký hiệu = (1, 2, …, n) là thứ tự bất kỳ các cạnh liền kề với các vi V Cây BFS cả trong đồ thị
G được xác định duy nhất với mỗi cách chọn gốc v1 và thứ tự Khi nút vi ở khoảng cách x+1 đến gốc v1 có nhiều hơn một láng giềng có khoảng cách x đến v1, vi nhận láng giềng có khoảng cách x đến v1 đầu tiên theo i làm nút cha.Trong bổ đề sau đây, chúng ta
sẽ sử dụng định nghĩa cây BFS cả để đặc tả tập các cấu hình an toàn đối với giải thuật
Bổ đề sau đây chỉ ra rằng mọi thực hiện đều đạt đến cấu hình an toàn Ký hiệu ∆ là
bậc của bộ xử lý có nhiều láng giềng nhất Chúng ta sẽ sử dụng các định nghĩa khoảng
cách trôi và khoảng cách trôi nhỏ nhất trong chứng minh
Trang 24Định nghĩa 2.1 Một khoảng cách trôi trong cấu hình c là giá trị của rij.dis nhỏ hơn
khoảng cách từ Pi đến gốc Khoảng cách trôi nhỏ nhất là giá trị nhỏ nhất trong các
khoảng cách trôi
Bổ đề 2.4 Với mọi k > 0 và mọi cấu hình đạt được sau ∆ + 4k∆ vòng, ta có:
Khẳng định 1 Nếu tồn tại khoảng cách trôi, thì khoảng cách trôi nhỏ nhất không bé
hơn k
Khẳng định 2 Giá trị của trường dis trong các thanh ghi của mỗi bộ xử lý ở khoảng
cách nhỏ hơn hoặc bằng k đến gốc bằng khoảng cách từ bộ xử lý đến gốc
Chứng minh Lưu ý rằng trong 2∆ vòng, mỗi bộ xử lý đọc các thanh ghi của tất cả các
láng giềng và ghi giá trị vào tất cả các thanh ghi của nó Chúng ta chứng minh bổ đề này theo phương pháp quy nạp
Bước cơ sở (k = 1) Khoảng cách được lưu trong các thanh ghi và trong các biến cục
bộ không âm, do vậy khoảng cách trôi nhỏ nhất trong cấu hình đầu tiên không nhỏ hơn 0
Trong 2∆ vòng đầu tiên, mỗi bộ xử lý P không phải gốc tính giá trị của biến dist Kết quả sau 2∆ vòng, giá trị biến dist không bé hơn 1 Gọi c2 là cấu hình đạt được khi mọi bộ xử
lý đã hoàn thành bước tính dist đầu tiên Mọi bộ xử lý ghi giá trị dist đã tính được trong
2∆ vòng sau c2 Do vậy, sau 4∆ vòng, giá trị dis của các thanh ghi không bé hơn 1 Khẳng
định thứ nhất được chứng minh
Để chứng minh Khẳng định 2, lưu ý rằng bộ xử lý gốc liên tục ghi <0, 0> vào các thanh ghi của nó trong mọi ∆ vòng Gọi c1 là cấu hình đạt được sau ∆ vòng Mỗi láng giềng của gốc đọc các thanh ghi của gốc và ghi vào các thanh ghi của nó giá trị 1 trong 4∆ vòng sau c1 Do vậy, sau ∆ + 4∆ vòng, giá trị thanh ghi của các láng giềng của gốc là
1
Bước quy nạp Giả sử Khẳng định 1 và Khẳng định 2 đúng với k, ta sẽ chứng minh
hai khẳng định trên đúng với k+1 Gọi m k là khoảng cách trôi nhỏ nhất trong cấu hình
c4k đạt được sau ∆ + 4k∆ vòng đầu tiên Trong 4∆ vòng tiếp theo, mỗi bộ xử lý đọc được
m và chọn m là giá trị nhỏ nhất để gán m+1 cho các thanh ghi Do vậy, m+1 là khoảng
cách trôi nhỏ nhất trong cấu hình c4(k+1) Khẳng định 1 được chứng minh
Trang 252 được chứng minh.□
Chọn k = N, ta có Hệ quả 2.1 Lưu ý rằng khi tất cả các thanh ghi của tất cả các bộ xử
lý ghi đúng giá trị khoảng cách đến gốc, bộ xử lý Pi chọn cha là cha của nó trong cây BFS
cả
Hệ quả 2.1 Giải thuật được trình bày ở trên tự ổn định với ST
Trang 26CHƯƠNG 3 ĐỊNH TUYẾN
3.1 Bài toán định tuyến tổng quát
Cho một mạng bao gồm các bộ xử lý, hay là các nút, được nối với nhau bằng các liên kết, hay các cung Với hai bộ xử lý bất kỳ P và Q trong mạng, tồn tại nhiều nhất một liên kết l(P, Q) nối từ P đến Q, và nhiều nhất một liên kết l(Q, P) nối từ Q đến P Bộ xử lý Q được gọi là láng giềng của bộ xử lý P nếu có liên kết l(P, Q) nối từ P đến Q Một đường
đi trong mạng từ bộ xử lý M đến bộ xử lý K là một dãy M = P1, P2, …, Pn = K, trong đó
Pi+1 là láng giềng của Pi, 1 ≤ i < n Mỗi liên kết l(P, Q) được gán một giá, ký hiệu là
Cost(P, Q) Chi phí của một đường đi là giá trị của một hàm tác động lên tất cả các giá
của các liên kết nối giữa hai bộ xử lý liên tiếp trong đường đi đó Ký hiệu Cost(path) là chi phí đường đi path - kết quả của hàm tác động lên các giá của các liên kết trên đường
đi path Ký hiệu Expense(M, K) là chi phí của đường đi có chi phí nhỏ nhất từ M đến K
Bài toán định tuyến đặt ra cho mỗi bộ xử lý là tìm đường đi có chi phí nhỏ nhất từ nó đến mỗi bộ xử lý khác trong mạng
Dễ thấy rằng có thể biểu diễn mạng bằng một đồ thị có hướng với các nút biểu diễn các bộ xử lý và các cung biểu diễn các liên kết trong đó độ dài của cung biểu thị cho giá của liên kết mà nó biểu diễn Bài toán định tuyến trở thành bài toán tìm đường đi có chi phí nhỏ nhất giữa mọi cặp đỉnh trong mạng
Dưới đây, ta sẽ xét một số bài toán định tuyến cụ thể
3.2 Một số bài toán định tuyến cụ thể
Các bài toán định tuyến cụ thể khác nhau ở cách tính chi phí cho các đường đi Ba cách tính chi phí phổ biến nhất là: độ dài đường đi, số chặng, băng thông cực đại
3.2.1 Định tuyến với đường đi ngắn nhất
Giá của mỗi liên kết là độ dài của liên kết đó, và chi phí của một đường đi chính là độ dài của đường đi hay là tổng độ dài của các liên kết thuộc đường đi đó
Cost(P, Q) = Length(l(P, Q)), nếu có liên kết nối P đến Q
= +∞, nếu không có liên kết nối P đến Q
Trang 27Expense(M, K) = minpathCost(path) – path là đường đi từ M đến K
3.2.2 Định tuyến với số chặng ít nhất
Giá của mỗi liên kết được gán là 1 và chi phí của đường đi là số chặng trên đường đi
đó
Cost(P, Q) = 1, nếu có liên kết nối P đến Q
= +∞, nếu không có liên kết nối P đến Q
Cost(path) = l(P, Q) path Cost(P, Q)
Expense(M, K) = minpathCost(path) – path là đường đi từ M đến K
Có thể thấy, định tuyến với số chặng ít nhất là trường hợp đặc biệt của định tuyến với đường đi ngắn nhất khi độ dài mỗi liên kết là 1
3.2.3 Định tuyến với băng thông cực đại
Độ rộng băng thông được sử dụng để làm giá cho liên kết và chi phí của đường đi là giá của liên kết có băng thông nhỏ nhất thuộc đường đi Để tránh giá trị âm, ta sử dụng
một giá trị MaxBandWidth lớn hơn tất cả các băng thông có thể có và gán giá cho liên kết
là hiệu của MaxBandWidth với băng thông của liên kết
Cost(P, Q) = MaxBandWidth - BandWidth(l(P, Q)) nếu có liên kết nối P đến Q
= MaxBandWidth, nếu không có liên kết nối P đến Q
Cost(path) = max l(P, Q) path (Cost(P, Q))
Expense(M, K) = minpathCost(path) – path là đường đi từ M đến K
3.3 Phân loại các giải thuật định tuyến
Hầu hết các giải thuật định tuyến được áp dụng hiện nay thuộc một trong hai loại: định tuyến theo trạng thái liên kết (link-state routing) và định tuyến theo véctơ khoảng cách (distance-vector routing)
Trong định tuyến theo véctơ khoảng cách, mỗi bộ xử lý gửi tới mỗi láng giềng của nó một bản sao khoảng cách từ nó đến bộ xử lý đích Dựa trên các khoảng cách nhận được
từ láng giềng, mỗi bộ xử lý chọn nút đầu tiên trên đường định tuyến đến bộ xử lý đích và cập nhật khoảng cách tương ứng Trong cách thực hiện này, quá trình tính đường định
Trang 28tuyến được thực hiện phân tán Chính vì vậy, định tuyến theo véctơ khoảng cách có một tên gọi khác là định tuyến phân tán (distributed routing)
Trong định tuyến theo trạng thái liên kết, mỗi bộ xử lý phát tỏa trạng thái của các liên kết liền kề nó tới tất cả các bộ xử lý trong mạng Từ các thông tin nhận được về trạng thái liên kết, mỗi bộ xử lý xây dựng trong bộ nhớ của mình tôpô toàn mạng và tiến hành tính bảng định tuyến theo tôpô mạng Trong cách thực hiện này, việc tính bảng định tuyến hoàn toàn được thực hiện cục bộ, và vấn đề mấu chốt là phát tỏa trạng thái liên kết đến tất
cả các bộ xử lý trong mạng Chính vì vậy, định tuyến theo trạng thái liên kết có một tên gọi khác là định tuyến phát tỏa (broadcast routing)
Chúng ta sẽ lần lượt xét hai phương pháp định tuyến kể trên nhưng tập trung chủ yếu vào phương pháp định tuyến thứ nhất – định tuyến theo véctơ khoảng cách hay định tuyến phân tán
3.3.1 Định tuyến theo véctơ khoảng cánh
Định tuyến theo véctơ khoảng cách [12] được biết đến trước đây với những cái tên như “Định tuyến ARPANET cũ” gắn liền với lịch sử nó được áp dụng đầu tiên trong mạng ARPANET, hay “Giải thuật Bellman-Ford” với ý nghĩa ghi nhớ công của hai tác giả là Bellman và Ford là những người đã đề xuất một giải thuật mà phương pháp định tuyến theo véctơ khoảng cách dựa rất nhiều vào nó
Theo phương pháp định tuyến này, mỗi bộ xử lý lưu giữ thông tin về khoảng cách từ
nó đến mỗi bộ xử lý đích trong một véctơ được gọi là véctơ khoảng cách Các khoảng cách được tính toán sử dụng thông tin trong các véctơ khoảng cách của láng giềng Thủ tục định tuyến có thể được mô tả như Hình 3.1
Giải thuật trên có vẻ khó hiểu vì bộ xử lý này tính véctơ khoảng cách dựa trên véctơ khoảng cách nhận được từ những bộ xử lý khác, và ngược lại Tuy nhiên, một cách trực quan, ta có thể giải thích hoạt động của giải thuật này như sau: Xét bộ xử lý đích D, D chứa thông tin chính xác khoảng cách tới D là 0 Khi D gửi véctơ khoảng cách của nó đến các láng giềng, chúng biết chắc khoảng cách đến D Nếu đường đi tối ưu từ A đến D
là A-B-C-D thì A sẽ biết đường đi này sau khi D gửi véctơ khoảng cách cho C, tiếp đó C gửi véctơ khoảng cách đến B, rồi B gửi véctơ khoảng cách đến A Mỗi bộ xử lý đích được tính toán một cách độc lập Nếu SA là giải thuật tính đường đi tối ưu từ mỗi bộ xử
Trang 29Mỗi bộ xử lý:
1 Khởi tạo véctơ khoảng cách với thành phần ứng với nó bằng 0 còn tất
cả các thành phần ứng với các bộ xử lý khác bằng +
2 Gửi véctơ khoảng cách đến tất cả các láng giềng khi nội dung véctơ này
thay đổi hay khi phát hiện liên kết liền kề thay đổi
3 Lưu véctơ khoảng cách nhận được gần nhất từ mỗi láng giềng
4 Tính lại véctơ khoảng cách với chi phí nhỏ nhất đến mỗi bộ xử lý đích
dựa trên thông tin về khoảng cách từ mỗi láng giềng đến điểm đích đó
cộng với giá của liên kết đến láng giềng
5 Các sự kiện sau dẫn đến việc tính lại véctơ khoảng cách:
a) Nhận được véctơ khoảng cách từ một láng giềng khác với véctơ khoảng cách nhận được trước đó từ chính láng giềng ấy
b) Phát hiện một liên kết đến một láng giềng đã thay đổi
Hình 3.1 Định tuyến theo véctơ khoảng cách
Định tuyến theo véctơ khoảng cách có một nhược điểm lớn là hội tụ chậm: Một liên kết thay đổi có thể dẫn đến việc tính lại véctơ khoảng cách của rất nhiều bộ xử lý Xét một ví dụ điển hình với mạng được cho trong Hình 3.2, giải thuật hội tụ rất chậm khi tôpô mạng thay đổi
Để đơn giản, ta xét định tuyến với số chặng ít nhất và chỉ xét đích C C tính số chặng đến C là 0 B tính số chặng đến C là 1 A tính số chặng đến C là 2
Bây giờ, giả sử C mất chức năng hay liên kết B-C bị gãy B, nhận biết liên kết B-C bị gãy, phải bỏ véctơ khoảng cách nhận được từ C, tính lại véctơ khoảng cách của mình chỉ
Hình 3.2 Mạng có 3 nút
Trang 30dựa trên véctơ khoảng cách nhận được từ A và tính số chặng đến C là 3 Vì véctơ khoảng cách của B thay đổi nên nó gửi đến các láng giềng, lúc này chỉ còn A Đến lượt mình, A tính số chặng đến C là 4 rồi lại gửi véctơ khoảng cách mới tính đến B Quá trình này cứ
lặp lại và ước lượng số chặng từ cả A và B đến C tăng đến vô hạn Đây là hiện tượng đếm
đến vô hạn - ước lượng chi phí đến một nút tăng mãi đến vô hạn Một số nút, với quan hệ cha-con trên đường đến một nút nào đó, tạo nên một vòng hoàn chỉnh Hiện tượng này
được gọi là vòng lặp định tuyến (looping)
Trong thực hành, người ta khắc phục hiện tượng đếm đến vô hạn và vòng lặp định tuyến bằng cách đặt ngưỡng trên chi phí của các đường đi Khi ước lượng chi phí đến một nút vượt qua ngưỡng thì xem như nút đó đã mất liên lạc Một cách giải quyết khác cho vấn đề đếm đến vô hạn là lưu đường đi từ nguồn đến đích Tuy nhiên cách này rất đắt
vì kích thước các thông báo lớn Một cách khắc phục hay được sử dụng nhất là mỗi nút lưu các con của mình trên đường định tuyến, không thay đổi cha cho đến khi nhận được hồi báo của tất cả các nút con [7, 8]
3.3.2 Định tuyến phân tán có/không có sự cộng tác giữa các điểm đích
Một tính chất có thể dùng để phân loại các giải thuật định tuyến theo véctơ khoảng cách, hay định tuyến phân tán, là trong thực hiện của giải thuật có sự cộng tác giữa các điểm đích hay không Nếu như quá trình tính đường định tuyến đến mỗi nút được thực hiện một cách độc lập, riêng rẽ thì giải thuật thuộc nhóm độc lập điểm đích (destination-independent), ngược lại giải thuật thuộc nhóm cộng tác giữa các điểm đích (collaboration between destinations) Như sẽ được trình bày trong các phần sau, giải thuật Netchange [9] và giải thuật Shlomi Dolev [14] thuộc nhóm độc lập điểm đích, trong khi giải thuật Humblet [11] và giải thuật đề xuất thuộc nhóm cộng tác giữa các điểm đích
3.3.3 Định tuyến theo trạng thái liên kết
Tư tưởng của định tuyến theo trạng thái liên kết đơn giản như sau:
1 Mỗi bộ xử lý xây dựng một gói trạng thái liên kết, LSP – Link state packet,
chứa thông tin về các láng giềng và giá của liên kết đến mỗi láng giềng
2 Các LSP được gửi đến tất cả các bộ xử lý và mỗi bộ xử lý lưu các LSP mới
Trang 31dựng LSP của mình – thực chất đơn giản chỉ là việc định dạng các tin đã nhận
Mỗi bộ xử lý sinh ra LSP theo định kỳ hoặc khi nó phát hiện
Có láng giềng mới
Giá của liên kết từ nó đến láng giềng thay đổi
Liên kết từ nó đến láng giềng bị gãy
Công việc phức tạp nhất trong định tuyến theo trạng thái liên kết là gửi LSP từ một bộ
xử lý đến tất cả các bộ xử lý khác Nếu việc này không được thực hiện đúng đắn, các bộ
xử lý có các tập LSP khác nhau, tức là hiểu biết khác nhau về tôpô mạng, do vậy tính sai đường đi hoặc không thể tính toán được đường đi do không có sự thống nhất giữa các bộ
xử lý về cùng một liên kết Một vấn đề nữa có thể xảy ra là các LSP được nhân bản nhanh chóng dẫn đến tất cả các tài nguyên mạng bị chiếm dụng cho xử lý chúng
Người ta thường sử dụng giải thuật phát tràn [6] để thực hiện phân tán LSP và sử dụng nhãn thời gian (logic hoặc véctơ) [6] để nhận biết LSP được sinh ra gần nhất hay sử dụng kỹ thuật đánh số thứ tự/tính tuổi [12] để nhận biết LSP được sinh ra gần nhất và
loại bỏ những LSP quá “già” có “tuổi” trở về 0
Tư tưởng của giải thuật phát tràn như sau: Mỗi thông báo nhận được lần đầu tiên được nhân bản và chuyển đến tất cả các láng giềng ngoại trừ láng giềng đã gửi thông báo đó
Để nhận biết LSP được sinh ra gần nhất, một cách thực hiện là gán nhãn thời gian (logic hoặc véctơ) vào các thông báo Thông báo có nhãn thời gian lớn hơn sẽ là thông báo được sinh ra sau Vấn đề có thể là một lúc nào đó S sinh ra một LSP lỗi có nhãn thời gian cực lớn , sau đó trở lại trạng thái bình thường sinh ra các LSP có nhãn thời gian tăng dần nhưng vẫn nhỏ hơn Tất cả các LSP được sinh ra tiếp sau lỗi không được chấp nhận bởi các bộ xử lý khác Như vậy, các bộ xử lý có thông tin khác nhau về tôpô mạng
và, tất yếu, tính sai đường định tuyến Nếu nhãn thời gian có thứ tự hoàn toàn, tức sử
dụng nhãn thời gian véctơ, mỗi bộ xử lý có thể thực hiện so sánh nhãn thời gian của LSP nhận được với nhãn thời gian của LSP mới nhất do mình sinh ra Nếu độ chênh lệch hai nhãn thời gian vượt quá một ngưỡng cho phép thì loại bỏ LSP nhận được Tuy nhiên, nếu
Trang 32nhãn thời gian chỉ có thứ tự bộ phận, tức sử dụng nhãn thời gian logic, thì ta không thực
hiện được so sánh như trên và vấn đề phát sinh như đã mô tả không thể giải quyết được Đồng bộ nhãn thời gian yêu cầu phải có phần cứng đặc biệt và còn phức tạp hơn cả phân phát LSP Do vậy, các giao thức định tuyến được phát triển gần đây không sử dụng
nhãn thời gian mà sử dụng kỹ thuật đánh số thứ tự/tính tuổi để nhận biết LSP được sinh
ra gần nhất cũng như loại bỏ các LSP đã quá cũ Theo kỹ thuật này, mỗi LSP được gắn một số thứ tự Khi sinh LSP mới, bộ xử lý gắn số thứ tự tiếp theo cho nó Các LSP do cùng một bộ xử lý sinh ra được so sánh, nếu số thứ tự lớn hơn thì được nhận là LSP sinh sau Đồng thời, LSP có một trường tính tuổi, bắt đầu là một số nguyên dương, qua mỗi chặng, tuổi bị trừ đi 1 Nếu LSP nằm lâu ở một chặng, tuổi của nó sẽ bị trừ nhiều lần Khi trường tuổi còn lại 0, LSP được xem là quá cũ và bị loại bỏ
3.3.4 So sánh định tuyến theo véctơ khoảng cách và định tuyến theo trạng thái liên kết
Trong phần này, chúng ta sẽ đưa ra một số so sánh giữa hai phương pháp định tuyến: theo véctơ khoảng cách và theo trạng thái liên kết Các so sánh chỉ có tính chất tương đối Những cài đặt cụ thể của cả hai giải thuật có những cải tiến riêng
Độ phức tạp bộ nhớ:
Để thực hiện định tuyến theo véctơ khoảng cách, mỗi nút phải lưu k véctơ khoảng cách của k láng giềng và một véctơ khoảng cách của mình Mỗi véctơ khoảng cách cần
bộ nhớ là O(n) Do vậy, tổng bộ nhớ cần thiết là O(n*k)
Trong định tuyến theo trạng thái liên kết, mỗi nút phải lưu n LSP: mỗi LSP từ một nút trong mạng Mỗi LSP tỷ lệ với k Do vậy, tổng bộ nhớ cần thiết cũng là O(n*k)
Tiêu thụ băng thông:
Rất khó có thể so sánh băng thông được sử dụng bởi mỗi giải thuật Người ưa thích kiểu định tuyến này có thể đưa ra những lý luận và tôpô để chỉ ra kiểu định tuyến kia tiêu nhiều băng thông hơn
Ví dụ, những người ưu thích định tuyến theo véctơ khoảng cách chỉ ra rằng một liên kết thay đổi chỉ làm lan truyền các thông báo đến những nút bị ảnh hưởng Tuy nhiên, trong định tuyến theo trạng thái liên kết, một liên kết thay đổi dẫn đến một LSP được sinh
ra và truyền đến tất cả các nút trên mạng
Trang 33được truyền trên mỗi liên kết khi hiện tượng đếm đến vô hạn xảy ra Trong định tuyến theo trạng thái liên kết, một LSP chỉ được truyền qua mỗi liên kết duy nhất một lần Tuy vậy, băng thông được sử dụng trong mỗi giải thuật không quá lớn và, do vậy, không phải là tiêu chuẩn để lựa chọn giải thuật này hay giải thuật kia
Độ phức tạp tính toán:
Trong định tuyến trạng thái liên kết, chúng ta thực hiện giải thuật của Dijstra Thời gian xử lý của giải thuật của Dijstra tỷ lệ với số liên kết trong mạng (có n*k liên kết) nhân với số nút trong mạng, do vậy là O(n*k log n) Để thực hiện định tuyến theo véctơ khoảng cách, toàn bộ k véctơ của các láng giềng phải được xem xet Mỗi véctơ có n phần
tử Do vậy, thời gian tính toán là O(n*k)
Tốc độ hội tụ:
Thời gian từ khi một liên kết thay đổi đến khi tất cả các nút hoàn thành tính lại bảng định tuyến theo tôpô mới do liên kết thay đổi được gọi là thời gian hội tụ Trong suốt thời gian hội tụ, định tuyến trong mạng bị gián đoạn Do vậy, thời gian hội tụ càng ngắn càng tốt và là tiêu chuẩn quan trọng để so sánh các giải thuật định tuyến
Định tuyến theo trạng thái liên kết hội tụ nhanh hơn định tuyến theo véctơ khoảng cách Lý do thứ nhất, định tuyến theo véctơ khoảng cách có thể xảy ra vấn đề đếm đến vô hạn Ngay cả khi vấn đề đếm đến vô hạn được giải quyết, định tuyến theo véctơ khoảng cách vẫn hội tụ chậm hơn định tuyến theo trạng thái liên kết vì các nút không thể gửi véctơ khoảng cách cho đến khi nó được tính xong, trong khi đó LSP có thể được nút chuyển đi ngay
Tính bền vững:
Cả hai kiểu định tuyến có thể hoạt động sai khi chỉ một nút không tuân theo các luật Điều này có thể xảy ra do lỗi của phần mềm, của phần cứng hay do cấu hình sai
3.4 Một số giải thuật định tuyến phân tán
Trong phần này, chúng ta sẽ xem xét một số giải thuật định tuyến dựa trên véctơ khoảng cách Cụ thể, ta sẽ xét giải thuật Netchange [9] và giải thuật của Humblet [11]
Trang 34Giải thuật thứ nhất độc lập điểm đích, có tạo vòng lặp định tuyến Giải thuật thứ hai có
sự cộng tác giữa các điểm đích và không tạo vòng lặp định tuyến vĩnh viễn
3.4.1 Giải thuật Netchange
Cho một mạng với các liên kết vô hướng, giải thuật định tuyến Netchange của Taijbnapis tính các bảng định tuyến tối ưu theo số chặng ít nhất Giải thuật cho phép tính lại các bảng định tuyến khi tôpô mạng thay đổi với việc tính lại chỉ mang tính bộ phận Giải thuật dựa trên các giả thiết sau:
N1 Mỗi nút biết kích thước mạng (số nút trong mạng) N
N2 Các kênh truyền có tính chất FIFO
N3 Các nút được thông báo khi kênh truyền liền kề bị hỏng, sửa đổi hay thêm mới N4 Chi phí mỗi đường đi bằng số chặng trên đường đi
Giải thuật có thể xử lý các kênh truyền bị hỏng hay phục hồi, thêm mới, nhưng giả thiết các nút sẽ được thông báo mỗi khi kênh truyền liền kề bị hỏng hay phục hồi Một nút hỏng hoặc được phục hồi được các nút láng giềng xem như các kênh truyền liền kề
nó bị hỏng hay được phục hồi, tương ứng Giải thuật duy trì tại mỗi nút u một bảng Nb u,
trong đó Nb u[v] là định danh của nút láng giềng của u trên đường đi từ u đến v Yêu cầu của giải thuật này như sau:
R1 Nếu tôpô mạng ổn định sau hữu hạn lần thay đổi, giải thuật sẽ kết thúc sau hữu hạn bước tính
R2 Khi giải thuật kết thúc, bảng Nb u thỏa mãn:
(a) Nếu u = v thì Nb u [v] = local;
(b) Nếu tồn tại đường đi từ u đến v u thì Nb u[v] = w, trong đó w là láng giềng của u trên đường đi ngắn nhất từ u đến v;
(c) Nếu không tồn tại bất kỳ đường đi nào từ u đến v thì Nb u [v] = udef
Giải thuật Netchange được mô tả trong Hình 3.4 Giả thiết một cạnh thay đổi được thông báo đồng thời cho cả hai nút liền kề
Nút u sử dụng D u [v] để lưu khoảng cách ước lượng d(u, v), sử dụng Nb u[v] để lưu
định danh của nút láng giềng liền kề u trên đường đi từ u đến v (nếu có) ndis u[w, v], với
w là láng giềng của u, được u sử dụng để lưu khoảng cách ước lượng d(w, v) do w thông
Trang 35theo hiểu biết của nó và đặt khoảng cách từ nó đến v là D u [v] = 1 + ndis u[w0, v], đồng thời chọn w0 là nút đầu tiên trên đường đi từ u đến v, tức đặt Nb u[v] = w0
Ban đầu, u chỉ biết chắc chắn đường đi từ nó đến chính nó (D u [u] = 0 và Nb u[u] =
local), các đường đi còn lại chưa biết nên được xem như không có (D u [v] = N và Nb u[v]
= udef, v u) Kết thúc đoạn mã khởi tạo, u gửi các thông báo <mydist, u, 0> đến mỗi nút
láng giềng w để thông báo cho w biết khoảng cách d(u, u) = 0
Khi nhận được một thông báo <mydist, v, d> từ láng giềng w, u cập nhật ndist u[w, v]
= d rồi thực hiện thủ tục Recompute(v) để tính toán lại khoảng cách từ u đến v Thủ tục
này đơn giản thực hiện công thức
d(u, v) = 1 + min d(w, v), w Neighu
Sau khi tính lại, nếu khoảng cách ước lượng D u [v] thay đổi, u gửi thông báo <mydist, v,
D u[v])> đến tất cả các láng giềng của nó để mỗi nút láng giềng cũng tính lại khoảng cách đến v
Khi cạnh <u, w> bị mất, như giả thiết, cả u và w được thông báo về mất mát đó, trong
đó u nhận được thông báo <fail, w> và w nhận được thông báo <fail, u> Nút u sẽ loại w khỏi danh sách các láng giềng khi nhận được <fail, w>, đồng thời tính lại khoảng cách đến tất cả các đỉnh, tức lần lượt gọi thủ tục Recompute(v) cho mỗi nút v
Nếu cạnh <u, w> mới được thêm vào hay vừa được phục hồi, u nhận được thông báo
<repair, w> và w nhận được thông báo <repair, u> Khi nhận được <repair, w>, u kết
nạp w vào danh sách các láng giềng, đồng thời thông báo cho w biết mọi “kết quả tính
toán” của mình, tức gửi cho w thông báo <mydist, v, D u[v]> với mọi v
var Neigh u : set of Nodes; (* Các láng giềng của u *)
D u : array of 0 N; (* D u [v] ước lượng khoảng cách d(u, v) *)
Nb u : array of Nodes; (* Nb u [v] là láng giềng trên đường đi từ u đến v*)
ndis u : array of 0 N; (* ndis u [w, v] ước lượng d(w, v) *)
Khởi tạo:
Trang 36begin forall wNeigh u , v V do ndis u [w, v] := N;
forall v V do
begin D u [v] := N; Nb u [v] := udef end;
D u [u] := 0; Nb u [u] := local;
forall wNeigh u do send <mydist, u, 0> to w
end
Recompute(v)
begin
if u = v then begin D u [v] := 0; Nb u [v] := local end
else begin (* Ước lượng khoảng cách đến v *)
if D u [v] đã thay đổi then
forall x Neigh u do send <mydist, v, D u [v]> to x
end
Khi nhận được thông báo <mydist, v, d> từ láng giềng w:
{Thông báo <mydist, v, d> ở đầu hàng đợi Q wv }
begin receive <mydist, v, d> from w;
ndis u [w, v] := d; Recompute(v)
end
Khi nhận được thông báo cạnh uw hỏng:
begin receive <fail, w>; Neigh u := Neigh u \ {w};
Trang 37Khi nhận được thông báo cạnh uw được khôi phục hoặc thêm mới:
begin receive <repair, w>; Neigh u := Neigh u U {w};
Hình 3.4 Giải thuật Netchange
Chúng ta sẽ chứng minh một số tính chất sau của giải thuật Những tính chất này được phát biểu dưới dạng các bất biến và được thể hiện trong Hình 3.5