1.6. Kết luận
Chƣơng này đã trình một số số vấn đề tổng quan của mạng MANET nhƣ khái niệm, đặc điểm phân loại, vấn đề định tuyến trong mạng MANET và một số ứng dụng của mạng MANET. Trong chƣơng này, phần cuối trình bày một số vấn đề cơ bản của đa phát, mạng MANET và các giao thức định tuyến đa phát tiêu biểu, ƣu điểm nhƣợc điểm của các giao thức này. Định tuyến đa phát đã thể hiện đƣợc ƣu điểm hơn phƣơng thức đơn phát và phát tỏa khi nó thực hiện việc truyền từ một nút nguồn tới một nhóm thành viên trong mạng đa phát, tránh việc truyền một gói tin nhiều lần và việc truyền đến những nút không cần thiết gây tốn chi phí truyến và giảm băng thông mạng.
CHƢƠNG 2: THUẬT TOÁN XÂY DỰNG VÀ BẢO TRÌ TỐI ƢU CÂY KHUNG ĐA PHÁT TRONG MẠNG MANET
2.1. Giới thiệu
Vấn đề truyền đa phát là vấn đề phức tạp, việc truyền nhiều bản sao của gói tin tới nhiều nút khác nhau (nhƣng không phải là tất cả các nút) gọi là đa phát (Multicasting). Trong cả mạng không dây và mạng có dây dựa trên cơ sở hạ tầng và đƣợc hỗ trợ bởi nhiều giao thức định tuyến khác nhau. Nhƣng, việc áp dụng giao thức này trong mạng tự hợp di động (MANET) lại là một thách thức lớn. Các vấn đề trong mạng tự hợp di động là sự khan hiếm của băng thông, thời gian tồn tại ngắn của các nút do hạn chế về năng lƣợng và cấu trúc liên kết động của các nút. Những vấn đề này là động lực nhƣ khả năng mở rộng, năng lƣợng, hiệu quả truyền thông của giao thức định tuyến đơn giản cho môi trƣờng đa phát. Có hai loại giao thức định tuyến đa phát trong mạng không dây là giao thức định tuyến đa phát dựa theo cây và giao thức định tuyến dựa theo lƣới. Trong luận văn này sẽ trình này về một giao thức định tuyến có hiệu quả cho mạng MANET. Đó là giải thuật phân tán cho cây khung có trọng số tối thiểu nghĩa là mạng phân tán nhƣ là một đồ thị vô hƣớng có trọng số các cạnh là khác nhau [2,4]. Theo lý thuyết đồ thị, xem mỗi thiết bị mạng là một nút trong cây khung, đƣờng truyền gói tin là cạnh của cây khung. Vấn đề xây dựng định tuyến đƣợc qui về xây dựng cây khung bao gồm tất cả các nút trong cây, sao cho cây khung có tổng trọng số của các cạnh là nhỏ nhất, thì chi phí đƣờng truyền mạng cũng là nhỏ nhất. Trong mạng MANET do các nút mạng có hình di động nên hình trạng mạng thay đổi liên tục do đó cây khung cũng thay đổi liên tục. Nên việc xây dựng và bảo trì cây khung [10] một để giảm chi phí bảo trì một cách tối thiểu là vấn đề quan trọng đƣợc đƣa ra, và giải quyết ở các phần sau.
2.2. Tƣ tƣởng chung thuật toán
2.2.1. Giải thuật bảo trì cây khung trong mạng tĩnh
Xét một hệ phân tán là một đồ thị vô hƣớng G=(V,E), với tập nút V biểu diễn các bộ xử lý của mạng và tập cạnh E biểu diễn các liên kết truyền thông giữa các bộ xử lý. Mỗi nút trong mạng có một định danh phân biệt. Mỗi liên kết trong mạng có một trọng số nhất định, giả sử trọng số của các liên kết là khác nhau. Để tiện trong việc xây dựng giải thuật, ta giả thiết trọng số của các liên kết là khác nhau. Ta có định nghĩa sau:
Định nghĩa 3.1:Một cây khung tối thiểu trong đồ thị G = (V, E) (Minimum Spanning Tree - MST) là một đồ thị con gồm n nút và n – 1 cạnh thỏa mãn các tính chất sau:
- Cây khung là liên thông và không có chu trình (giữa hai nút trên cây tồn tại duy nhấtmột đƣờng đi nối hai nút đó).
- Tổng trọng số của n – 1 cạnh của cây khung là nhỏ nhất.
Trong hệ phân tán, bài toán MST có những yêu cầu khác biệt, dựa trên tính chất của từng mạng cụ thể. Nếu mạng là tĩnh, bài toán yêu cầu xây dựng cây khung tối thiểu bằng giải thuật phân tán. Nếu mạng là động nhƣ các mạng MANET, yêu cầu bài toán cần có đáp ứng cụ thể với sự thay đổi hình trạng mạng.
Bài toán xây dựng cây khung MST trên mạng tĩnh phân tán là bài toán kinh điển, thuật toán có kết quả tốt nhất đến thời điểm hiện tại là thuật toán GHS- 83[2,4] do Gallager, Humblet và Spira đề xuất năm 1983, với độ phức tạp thông báo là O(|V|log|V|). Đây là cơ sở cho hầu hết các giải thuật phân tán cũng nhƣ các giao thức liên quan đến việc xây dựng cây khung phân tán.
Tƣ tƣởng của giải thuật
Tƣ tƣởng của giải thuật dựa trên việc kết hợp dần các mảnh MST lại một cách phân tán không đồng bộ thông qua các liên kết ngoài nhỏ nhất chọn đƣợc, từ đó hình thành nên cây MST hoàn chỉnh trong hệ thống. Trong hệ thống phân tán, một nút trên mạng không biết đƣợc cấu trúc toàn cục của hệ thống. Do đó, muốn đảm bảo kết hợp mảnh một cách không đồng bộ, ta dựa vào các định lí sau:
Định lý 2.1: Cho một mảnh MST, gọi e là một liên kết ngoài có trọng số tối thiểu của mảnh. Thì e là một cạnh trong cây MST hoàn chỉnh.
Định lý 2.2: Nếu tất cả các cạnh của một đồ thị liên thông có các trọng số phân biệt, thì cây MST là duy nhất.
Giải thuật bắt đầu với các mảnh là một nút trong mạng. Áp dụng định lý 2.1 để mở rộng các mảnh theo các liên kết ngoài có trọng số tối thiểu. Định lý thứ 2.2 đảm bảo việc mở rộng một cách độc lập giữa các mảnh không bị xung đột lẫn nhau.
Cho w(e) là trọng số của cạnh e trong đồ thị thì trọng số của cây khung sẽ là tổng của tất cả các w(e) thuộc vào cây. Cây khung có trọng số nhỏ nhất (MST)[2] là cây khung có tổng trọng số w(e) nhỏ nhất.
Một số thuật ngữ liên quan là:
- Mảnh của MST là một cây con thuộc cây MST hoàn chỉnh. Ban đầu, mỗi mảnh MST chỉ bao gồm một nút.
- Liên kết ngoài: Liên kết ngoài của một mảnh MST là liên kết có một nút bên trong mảnh và nút còn lại nằm bên ngoài mảnh.
- Gốc của mảnh: là một nút trong mảnh đƣợc quy ƣớc là lấy định danh làm định danh của mảnh.
- Mức của mảnh là sự phân cấp liên kết trong cây. Ban đầu, mỗi mảnh gồm một nút đơn có mức là 0.
Trong quá trình xây dựng cây khung thủ tục quan trọng nhất là kết hợp mảnh, mỗi nút ban đầu đƣợc xem nhƣ là một mảnh, các mảnh này sẽ dẫn kết hợp với nhau tạo thành một mảnh lớn hơn dựa trên việc tìm kiếm các liên kết ngoài có trọng số tối thiểu, việc kết hợp dần các mảnh tạo thành một cung khung hoàn chỉnh có trọng số tối thiểu, việc kết hợp các mảnh thực hiện theo nguyên tắc sau: Giả sử cho mảnh F có mức là L ≥ 0 và một mảnh khác là F’ có cạnh liên kết ngoài tối thiểu tại mức L’. Mảnh F và F’ kết hợp với nhau trong các trƣờng hợp sau:
- Nếu L<L’ thì mảnh F bị hấp thụ bởi F’ và mảnh mở rộng có mức là L’. - Nếu L=L’ và mảnh F và F’ có cùng một cạnh ngoài có trọng số tối thiểu, thì hai mảnh đƣợc kết hợp với nhau thành một mảnh mới có mức là L+1.
- Trƣờng hợp còn lại, mảnh F đợi mảnh F’ đạt tới mức đủ lớn để kết hợp với F theo các quy tắc trên.
Đánh giá độ phức tạp: Độ phức tạp thông báo của giao thức làO(E + N log N) [2], độ phức tạp thời gian của giải thuật GHS-83 làO(N log N) [2].
2.2.2. Giải thuật bảo trì cây khung trong mạng động (OMST)
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.
2.3. Xây dựng và bảo trì tối ƣu cây khung đa phát trong mạng MANET 2.3.1. Đặt vấn đề 2.3.1. Đặt vấn đề
Bài toán cây khung tối thiểu đƣợc chứng minh là bài toán tối ƣu với tổng chi phí nhỏ nhất xây dựng đƣờng đi nối tất cả các nút của đồ thị, là bài toán cơ bản và có ứng dụng quan trọng trong các mạng truyền dữ liệu cũng nhƣ định tuyến mạng. Tuy nhiên, trong định tuyến đa phát, chỉ có một nhóm các nút đƣợc chỉ định trƣớc có chức năng gửi nhận dữ liệu, còn lại các nút khác chỉ đóng vai trò trung gian định tuyến, nhận-và-chuyển tiếp các gói tin đến các nút liền kề. Trong trƣờng hợp này, nếu xây dựng cây khung đi qua tất cả các nút, kể cả những nút không thuộc nhóm đa phát, thì tổng chi phí đƣờng truyền (tính theo các nút thuộc nhóm đa phát) có thể không còn là tối ƣu nữa, do phần chi phí đƣờng