Thuật toán vector khoảng cách

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 131 - 135)

Thuật toán vector khoảng cách (DV) là thuật toán lặp, không đồng bộ và phân tán. Thuật toán được xem là phân tán vì mỗi nút nhận thông tin từ những nút hàng xóm có đường kết nối trực tiếp đến nó, thực hiện các bước tính toán và gửi kết quả tính toán tới tất cả các nút hàng xóm. Tính lặp được thể hiện ở chỗ quá trình này được thực hiện liên tục cho đến khi không còn thông tin được trao đổi giữa các lặp hàng xóm. Thuật toán không đòi hỏi các nút phải dừng hoạt động trong khi trao đổi với những nút khác, đây chính là đặc điểm không đồng bộ.

Cấu trúc dữ liệu chính trong thuật toán DV là bảng khoảng cách được đặt ở mỗi nút. Trong bảng khoảng cách, mỗi hàng ứng với một nút đích trên mạng và mỗi cột ứng với một nút hàng xóm có đường kết nối trực tiếp đến. Giả sử nút X muốn định tuyến đến đích Y qua nút hàng xóm Z. Trong bảng khoảng cách của nút X, DX(Y, Z) là tổng của giá đường liên kết trực tiếp giữa X và Z- c(x, Z) với giá đường đi bé nhất tớ Z đến Y. Đó là:

Hình 7.7 Xây dựng bảng định tuyến dựa trên vector khoảng cách

Biểu thức minw trong đẳng thức trên được lấy trên tất cả các hàng xóm của Z (kể cả X, như chúng ta sẽ thấy dưới đây). Đẳng thức giúp chúng ta hình dung ý tưởng của thuật toán DV - mỗi nút phải biết được giá nhỏ nhất của đường đi tới tất cả các hàng xóm của nó đến bất kỳ đích nào. Và khi giá nhỏ nhất đến đích nào đó thay đổi, nút phải báo cho tất cả các hàng xóm biết.

Hình 7.8 Tính toán chi phí bằng khoảng cách

Xét kiến trúc mạng và bằng khoảng cách của nút E trên hình 7.8, đây là bảng khoảng cách của nút E sau khi thuật toán DV hội tụ. Hãy nhìn vào dòng đầu tiên với đích đến là A. Rõ ràng giá đường kết nối trực tiếp đến A từ E phải là 1, do đó DE(A, A) = 1. DE(A, D) là giá đường đi từ E đến A qua D bằng tổng giá của đường đi từ E đến D (2) cộng với giá đường đi nhỏ nhất từ D đến E. Giá thấp nhất của đường đi từ D đến A là 3 (đường đi qua E), do vậy giá thấp

nhất từ E đến A qua D là 5. Tương tự trường trong bảng khoảng cách với đường đi qua B: DE(A, B) = 14. Các vòng tròn trong bảng khoảng cách là giá nhỏ nhất của đường đi đến các đích. Cột ứng với vòng tròn xác định nút tiếp theo trên đường đi đến đích có giá thấp nhất. từ đó có thể dễ dàng xây dựng bảng định tuyến cho mỗi nút.

Thuật toán distance vector(DV)

tại mỗi nút X: Khởi tạo: for (tất cả các nút kể với v) Dx(*, v) = ∞/* dấu * là để chỉ cho tất cả các hàng*/ Dx(v, v) = c(x, v) for (tất cả các đích Y)

gửi minW D(Y, w) đến mỗi hàng xóm /* w chạy trong tập các hàng xóm của X*/ loop

Đợi cho đến khi (thấy giá liên kết đến hàng xóm V thay đổi hoặc nhận được sự cập nhật của hàng xóm V)

if (c(x, V) thay đổi một lượng d)/* thay đổi giá của tất cả các đường đi đến đích qua v bằng, d có thể dương hoặc âm*/

for (tất cả các đích y: DX(y, V) = DX(y, V) + d else if (nhận được cập nhật từ V đến Y)

/* đường đi ngắn nhất từ V đến nút nào đó Y thay đổi*/ /* V đã gửi giá trị mới của minW DW(Y, w)*/

/* gọi giá trị mới nhận được là newval*/ for (đích y): Dx y, V) = c(x, V) + newval

if (chúng ta có minW DX(y, w) mới cho đích Y nào đó) gửi giá trị minW Dx (y, w) mới đến tất cả các hàng xóm.

Forever

Mỗi nút sẽ chỉ biết thông tin về giá đường liên kết tới nút hàng xóm cũng như thông tin nó nhận được từ những hàng xóm này. Thuật toán DV còn được gọi là thuật toán Bellman - Ford. Nó được áp dụng trong nhiều giao thức định tuyến trong thực tế như: Internet BGP, ISO IDRP... Điểm cơ bản là việc cập nhật bảng khoảng cách khi nhận được sự thay đổi về giá của liên kết đến hàng xóm hoặc nhận được thông tin cập nhật tới hàng xóm của nó và gửi cập nhật đến tất cả các hàng xóm nếu đường đi có giá nhỏ nhất đến đích nào đó bị thay đổi.

Hình 7.9 minh họa hoạt động của thuật toán DV cho mạng đơn giản gồm có 3 nút. Hoạt động của thuật toán được thực hiện một cách đồng bộ: tất cả các nút đồng thời nhận được thông điệp từ hàng xóm của chúng, tính toán bảng khoảng cách mới và báo cho các hàng xóm về sự thay đổi giá đường đi ngắn nhất. Các ô có khoanh tròn một vòng trong hình vẽ ứng vời giá nhỏ nhất hiện tại đến đích nào đó nằm trong hàng tương ứng. Khoanh hai vòng tròn biểu diễn giá nhỏ nhất mới được xác định, khi đó các thông tin cập nhật sẽ được gửi đến các nút hàng xóm, ứng với mũi tên giữa các cột. Cột ngoài cùng bên trái là các bảng khoảng cách của nút X, Y và Z sau bước khởi tạo. Xét trường hợp nút X tính lại bảng khoảng cách sau khi nhận được thông tin cập nhật từ nút Y và Z.

Hình 7.9 Hoạt động của thuật toán vector khoảng cách

Khi nhận được cập nhật từ Y và Z, X thực hiện dòng 21 của thuật toán DV:

DX(Y,X)=c(X,Z)+minWDZ(Y,w) =7+1

=8

DX(Z,Y) =c(X,Y)+minWDY(Z,w) =2+1

=3

X biết giá trị minwDZ(Y, w) và minwDY(Z, w) vì nút Z và Y gửi những giá trị này đến X (và X cũng nhận được theo dòng 10 của thuật toán DV). Việc tính lại bảng khoảng cách của Y và Z ở cột giữa trong hình 7.7 được thực hiện tương tự. Giá trị DX(Z, Y) = 3 có nghĩa là giá nhỏ nhất tớ X đến Z giảm từ 7 xuống 3. Do đó, X gửi cập nhật đến Y và Z để thông báo cho chúng giá thấp nhất mới đến Z. Chú ý X không cần cập nhật cho Y, Z về giá của nó đến Y vì giá trị này không bị thay đổi. Khi Y tính lại bảng khoảng cách không phát hiện

ra thay đổi, đo đó Y không gửi cập nhật đến X và Z.

Quá trình nhận cập nhật từ hàng xóm, tính lại bảng khoảng cách và cập nhật các thay đổi đến hàng xóm được thực hiện cho đến khi không còn bản tin nào được trao đổi. Trong trường hợp này vì không có thông tin cập nhật được gửi nên các nút không phải tính lại bảng khoảng cách và thuật toán ở trạng thái không hoạt động: tất cả các nút ở trạng thái đợi trong dòng 9 của thuật toán DV. Thuật toán DV sẽ ở trong trạng thái không hoạt động cho đến khi giá của một nên kết nào đó thay đổi.

Một phần của tài liệu Bài giảng mạng máy tính ths nguyễn xuân anh (Trang 131 - 135)