Giải thuật bảo trì cây khung trong mạng động (OMST)

Một phần của tài liệu Đánh giá hiệu năng định tuyến đa phát dựa trên duy trì một cách tối ưu cây khung trong mạng tự hợp di động (Trang 30)

Xây dựng cây khung trong mạng động khó khăn gặp nhiều khó khăn hơn trong mạng tĩnh, tuy nhiên do hình trạng mạng thay đổi liên tục nên vấn đề cập nhật thông tin để bảo trì cây khung cần thiết và tốn nhiều chi phí hơn rất nhiều. Có thể áp dụng giải thuật xây dựng và bảo trì cây khung trong mạng tĩnh vào mạng động nhƣng mỗi khi hình trạng mạng thay đổi cây khung sẽ bị hủy bỏ toàn bộ và khởi động lại thuật toán từ đầu. Nếu áp dụng phƣơng pháp này có nhƣợc điểm là kém hiệu quả vì không tận dụng đƣợc những kết quả đã đạt đƣợc trong các lần thực hiện trƣớc. Để khắc phục nhƣợc điểm này, giải thuật xây dựng và bảo trì cây khung trong mạng động (OMST) [2] đã đƣợc đễ xuất, để tận dụng những kết quả xây dựng cây khung đã đạt đƣợc, mỗi khi có thay đổi trong mạng, các nút chỉ cần đáp ứng lại bằng cách thay đổi một số trạng thái của mình cho phù hợp, chứ không thay đổi tất cả cây khung.

Việc xây dựng cây khung trong mạng động cũng dựa trên tƣ tƣởng kết hợp dẫn các mảnh con của cây khung có trong số tối thiểu (MST) [2]. Các mảnh MST đƣợc kết hợp lại bằng cách chọn ra các liên kết ngoài có trọng số tối thiểu. Giải thuật OMST sẽ cố gắng phục hồi lại cây khung bị đứt gãy hoặc thay đổi

hình trạng mạng, dựa trên thông tin về cây khung trƣớc lúc thay đổi, chứ không tìm cách xây dựng lại cây khung từ đầu.

Để lƣu trữ thông tin về cây khung, giải thuật bảo trì cây khung trong mạng động đƣa ra một cấu trúc dữ liệu đặc biệt để lƣu trữ trên mỗi nút, sử dụng để khôi phục lại cây khung trong trƣờng hợp có những thay đổi trong mạng, gọi là “rừng ảo” và “cây ảo”:

- Rừng ảo”(forest replica) là một cấu trúc dữ liệu trên một nút, lƣu trữ thông tin các liên kết trong cây MST hiện thời (rừng thật) của hệ thống.

Nhƣ vậy, “rừng ảo” là một bản sao của cây MST hiện thời, đƣợc lƣu trữ trên một nút. Tất nhiên bản sao này có thể không hoàn toàn giống nhƣ cây MST thật (do hệ thống phân tán và các nút không biết trạng thái toàn cục trong mạng), nhƣng mỗi nút sẽ cố gắng xây dựng “rừng ảo” giống cây MST thật nhất có thể.

“Cây ảo” (tree replica) là một cây con thuộc “rừng ảo” đƣợc lƣu trữ trên một nút. Để phân biệt, ta ký hiệu “cây ảo v” là cây ảo chứa nút v.

Mỗi nút trong hệ thống sẽ đƣợc lƣu một “rừng ảo” trong bộ nhớ cục bộ, đó là cơ sở để các nút tìm kiếm thông tin về liên kết ngoài có trọng số tối thiểu để kết hợp các mảnh lại với nhau. Nhờ lấy đƣợc thông tin trong “rừng ảo” ngay tại chính nút hiện tại nên nó giảm độ phức tạp trong quá trình kết hợp mảnh.

Hai thủ tục quan trọng nhất trong giải thuật, liên quan đến cấu trúc dữ liệu là thủ tục UPDATE và FIND trong đó:

- Thủ tục UPDATE có nhiệm vụ duy trì “rừng ảo” tại mỗi nút giống với cây khung hiện thời (“rừng thật”). Khi hình trạng mạng thay đổi, thủ tục UPDATE sẽ đƣợc gốc của mạng MST gọi, các nút trong mạng sẽ thực hiện các thủ tục cập nhật để điều chỉnh lại thông tin trong “rừng ảo” của nó cho nó giống với cây khung hiện thời.

- Thủ tục FIND sẽ chọn ra liên kết ngoài có trọng số tối thiểu của mảnh và thực hiện kết hợp mảnh dựa vào thông tin trong “rừng ảo” tại mỗi nút.

Ngoài hai thủ tục UPDATE và FIND, trong giải thuật OMST còn một số thủ tục khác tƣơng tự giải thuật GHS-83 để xây dựng cây khung tối thiểu:

 Thủ tục chuyển gốc CHANGE_ROOT: Sau khi tìm đƣợc liên kết ngoài tối thiểu của mảnh, gốc của mảnh sẽ đƣợc chuyển xuống nút có liên kết ngoài đó. Việc chuyển gốc sẽ giúp quá trình kết hợp mảnh dễ dàng hơn.

 Thủ tục kết hợp mảnh MERGE: Có thay đổi so với thủ tục tƣơng ứng trong thuật toán GHS-83 để tránh tình trạng deadlock. Trong thủ tục này, khi 2 mảnh MST chọn 1 liên kết ngoài chung, mảnh có ID nhỏ hơn sẽ tiến hành việc yêu cầu kết nối. Giả sử mảnh u trong liên kết ngoài tối thiểu (u, v) có ID nhỏ hơn. Khi u trở thành gốc (qua thủ tục chuyển gốc), nó sẽ gửi 1 thông báo

Request qua liên kết (u, v). Khi thông báo đến v, nút v có thể hoặc không phải là gốc, nhƣng vẫn tạm chấp nhận thông báo Request này. Đợi tới khi cây chứa v tìm thấy liên kết (u, v) và chuyển gốc lại cho nút v. v sẽ gửi một thông báo Accept lại cho u. Sau đó mới tiến hành kết hợp hai mảnh qua liên kết (u, v). Những trƣờng hợp thay đổi topo mạng trong quá trình kết hợp mảnh sẽ đƣợc xem xét sau đây.

 Thủ tục xử lý khi cấu hình mạng thay đổi: Khi một liên kết trong mảnh MST nối từ nút con đết nút cha bị đứt, nút con sẽ hủy bỏ liên kết này, trở thành gốc của mảnh mới và thực hiện các thủ tục để tìm liên kết ngoài nhỏ nhất nhƣ với các gốc thông thƣờng. Nếu thay đổi xảy ra trong quá trình thực hiện các thủ tục UPDATE và FIND, các nút sẽ có những biện pháp cụ thể để xử lý tƣơng ứng, tránh tình trạng deadlock. Ví dụ, khi một liên kết giữa nút cha và nút con bị đứt, nút cha sẽ không đợi thông báo phản hồi từ nút con qua liên kết này nữa. Các trƣờng hợp thay đổi cấu hình mạng khác nhƣ các liên kết phục hồi lại, các liên kết ngoài bị đứt đều không ảnh hƣởng gì đến việc thực hiện thủ tục UPDATE và FIND.

 Thủ tục xử lý khi cấu hình mạng thay đổi trong quá trình kết hợp mảnh:Với các thuật toán trong mạng tĩnh thông thƣờng, khi một mảnh chọn đƣợc liên kết ngoài có trọng số nhỏ nhất, liên kết này sẽ không bao giờ bị thay đổi, và gốc của mảnh chỉ cần đợi cho đến khi nó đƣợc hấp thụ bởi một mảnh khác. Tuy nhiên trong mạng động, khi một mảnh đã chọn đƣợc liên kết ngoài tối thiểu, các liên kết bị đứt từ trƣớc có thể hồi phục, khiến cho liên kết đã chọn không còn có trọng số nhỏ nhất nữa. Điều này nếu không đƣợc xử lý, sẽ dẫn đến tình trạng khóa chết trong giải thuật, khi 2 mảnh chọn ra 2 liên kết ngoài khác nhau và không thể kết hợp lại đƣợc.

Vì vậy, giải thuật OMST đƣa ra phƣơng án giải quyết thông qua thủ tục ALERT. Khi một nút nào đó phát hiện thấy cấu hình mạng thay đổi, nó sẽ gửi thông báo Alert tới cho gốc. Điều này cho phép gốc của cây biết rằng, cạnh ngoài có trọng số nhỏ nhất có thể đã bị thay đổi.

- Nếu gốc chƣa gửi thông báo Request, nó sẽ thực hiện lại việc tìm kiếm cạnh ngoài nhỏ nhất từ đầu.

- Nếu gốc đã gửi thông báo Request và đã nhận đƣợc Accept, thông báo Alert bị bỏ qua. Vì sau khi ghép 2 cây, gốc của cây sẽ tự động thực hiện Update. - Nếu gốc đã gửi thông báo Request (và chƣa nhận đƣợc Accept), nó sẽ gửi một thông báo Cancel cho mảnh kia.

+ Nếu mảnh này đã gửi thông báo Accept, thì nó sẽ bỏ qua thông báo Cancel, khi đó 2 mảnh sẽ vẫn đƣợc kết hợp lại làm một (Tƣơng tự trƣờng hợp đã nhận đƣợc Accept bên trên).

+ Nếu mảnh này chƣa gửi Accept, nó sẽ gửi một thông báo Canceled, chấp nhận việc hủy bỏ thông báo Request đã nhận đƣợc, nút gốc nhận đƣợc Canceled sẽ tiến hành tìm kiếm lại liên kết ngoài tối thiểu.

Một phần của tài liệu Đánh giá hiệu năng định tuyến đa phát dựa trên duy trì một cách tối ưu cây khung trong mạng tự hợp di động (Trang 30)

Tải bản đầy đủ (PDF)

(57 trang)