Trong mạng di động ad-hoc, flooding là một cách truyền dữ liệu trong mạng mà ở đó một thông báo từ nút nguồn được quảng bá đến tất cả các nút mạng hàng xóm, tiếp theo là các nút mạng hàng xóm lại chuyển tiếp thông báo nhận được đến các hàng xóm của chúng. Quá trình này được lặp lại cho đến khi tất cả các nút mạng khác có thể nhận được thông báo này. Flooding và nguồn gốc của nó được dùng rộng rãi trong nhiều ứng dụng, các giao thức định tuyến và khám phá dịch vụ. Như đã biết, các giao thức định tuyến, chẳng hạn: AODV, DSR, …dựa vào flooding để tìm và duy trì tuyến đường cũng như các gói tin cập nhật tô-pô mạng.
Ưu điểm chính của flooding là làm tăng độ tin cậy cho giao thức định tuyến, thông báo flooding có thể đi đến tất cả các nút mạng nếu như mạng được kết nối và không xảy ra vấn đề đụng độ. Thông báo có thể đi đến một nút mạng nào đó theo đường đi ngắn nhất và thuật toán dễ thực thi. Tuy nhiên, flooding có nhược điểm là tốn băng thông vì tất cả các nút trong mạng đều phải chuyển tiếp thông báo flooding nhận được.
Hiện nay, nhiều thuật toán flooding đã được đề xuất nhằm hạn chế các vấn đề như: dư thừa, tranh chấp và đụng độ. Có thể phân loại các thuật toán đó theo những tiêu chí sau: dựa vào số chặng thông tin hàng xóm, chẳng hạn thông tin hàng xóm không cần thiết (0-chặng), 1-chặng, 2-chặng thông tin hàng xóm; flooding dựa vào bên gửi, khi đó mỗi nút gửi chỉ định một tập con các nút mạng hàng xóm sẽ là các nút chuyển tiếp lại thông báo ở chặng tiếp theo; hoặc
25
flooding dựa vào bên nhận, mỗi nút nhận thông báo sẽ tạo ra miền quyết định của mình bất chấp nó phải chuyển tiếp thông báo hay không.
Hình 3.1: Quá trình flooding trong một mạng ad-hoc.
Tương tự như mạng có dây, một mạng ad-hoc có thể được mô hình hóa như một đồ thị. Mỗi nút mạng được biểu diễn bởi một đỉnh của đồ thị và hai nút mạng được liên kết với nhau khi chúng cùng ở trong phạm vi truyền thông của nhau. Do mạng ad-hoc có đặc thù là các nút mạng có thể chuyển động, nên đồ thị biểu diễn cho một mạng ad-hoc có thể thay đổi theo thời gian.
Trong một môi trường truyền thông vô tuyến, một vài liên kết mạng có thể là một chiều bởi vì phạm vi truyền thông (communication range) của hai nút mạng có thể khác nhau (nút A có thể truyền dữ liệu cho nút B, nhưng nút B lại không thể truyền dữ liệu được cho nút A). Tuy nhiên, các liên kết một chiều này có thể là ẩn với giao thức tầng mạng và có thể dùng các gói tin ACK tầng liên kết (gói tin trả lời) hoặc cơ chế phát hiện các liên kết một chiều. Khi đó, có thể xem tất cả các liên kết là hai chiều (nút A có thể truyền dữ liệu cho nút B thì nút B cũng có thể truyền dữ liệu cho nút A). Giả sử N(v) là tập các nút kề của nút v, thì N(N(v)) là tập các nút mạng cách nút v với khoảng cách tối đa 2-chặng nút.
Trong mạng không dây, người ta thường quan tâm đến vấn đề tối ưu cho việc định tuyến mạng và khi đó sẽ xuất hiện cây flooding tối ưu. Với một mạng có dây, chúng ta thường tối thiểu hóa nhu cầu dùng liên kết để flood gói tin. Khi đó, xuất hiện bài toán về cây flooding tối ưu trong mạng. Và người ta đã chứng minh rằng, bài toán này tương đương với bài toán cây bao trùm nhỏ nhất – MST (Minimum Spanning Tree) [15]. Giả sử đã biết trước thông tin đầy đủ về tô-pô
26
mạng, thì một nút mạng có thể dễ dàng tìm ra cây MST. Tuy nhiên, tìm ra một cây MST và chuyển tiếp gói tin thông qua cây MST là một bài toán không đơn giản trong một hệ thống phân tán. Do đó, thay vì dùng cây MST trong một mạng có dây, người ta thường dùng các phương pháp flooding đơn giản, chẳng hạn như flooding mù.
Tiêu chuẩn tối ưu của vấn đề flooding trong mạng không dây khác với mạng có dây. Với mạng không dây, thông thường nút mạng muốn gửi đi một gói tin bằng cách quảng bá nó đến các nút mạng hàng xóm. Do mỗi quảng bá như thế sẽ tiêu thụ cùng một lượng tài nguyên không dây bất kể số lượng nút mạng hàng xóm nhiều hay ít. Như vậy, có thể xem cây flooding tối ưu trong mạng không dây là cây flooding với số quảng bá nhỏ nhất. Bởi vì hầu hết các liên kết hoàn toàn có thể được xác định. Do đó, hoàn toàn cũng có thể xây dựng được cây flooding tối ưu trong mạng không dây. Hình 3.2 cho thấy một cây flooding tối ưu như thế.
Hình 3.2: Cây flooding tối ưu trong một mạng ad-hoc.
Ở hình trên thì A là nút nguồn, còn B, E và G là các nút chịu trách nhiệm chuyển tiếp gói tin nhận được và các đường đậm cho biết hướng chuyển tiếp gói tin. Chúng ta có thể thấy rằng, tất cả các nút mạng (ngoại trừ các nút lá) trên cây flooding đều phải quảng bá gói tin. Số gói tin truyền thông đòi hỏi để hoàn thành việc flooding sẽ tương đương với số nút không phải là nút lá trên cây flooding. Vì vậy, bài toán về số gói tin truyền thông tối thiểu là tương đương với bài toán tìm cây bao trùm nhỏ nhất mà có số nút không phải là nút lá. Trong bài báo [8] đã chứng minh bài toán tìm cây flooding tối ưu trong mạng di động ad- hoc là bài toán NP-đầy đủ.
27