Thuật toán lan tràn (Flooding Algorithm)

Một phần của tài liệu Các thuật toán phân tán giải bài toán định tuyến đa đích (Trang 38 - 40)

Trong giải thuật này khi một route nhận một gói tin multicast đầu tiên nó sẽ kiểm tra xem gói tin này đã được nhận trước đó chưa. Nếu lần đầu nó sẽ gửi gói tin đến tất cả các cổng của nó trừ cổng đã gửi gói tin đến. Nếu gói tin đã nhận nó sẽ loại bỏ gói tin này. Phương thức lan tràn gói này hiển nhiên là tạo ra rất nhiều gói sao chép. Trên thực tế, số gói này là không xác định trừ khi thực hiện một số biện pháp để hạn chế quá trình này. Tuy nhiên, phương

pháp này được sử dụng thành công trong bối cảnh định tuyến đa đích. Các quan sát chính hỗ trợ cho sử dụng các gói tin, khi được chấp nhận bởi một nút nó sẽ gửi lại cho tất cả các nút bên cạnh. Vì vậy tất cả các điểm đến cho một gói tin có thể được tìm thâý bằng cách sử dụng thuật toán lan tràn, thậm chí có nhiều hơn một điểm đến, như là trường hợp định tuyến đa đích. Vì vậy có thể sử dụng thuật toán lan tràn bên dưới cho định tuyến đa đích để tạo ra một vài thay đổi cho chiến lược chính.

Mặc dù thực hiện đơn giản, phương pháp lan tràn cũng có một vài bất lợi ở đây như trong trường hợp truyền đơn hướng: nó sử dụng quá nhiều tài nguyên mạng. Ví dụ, băng thông lãng phí khi một gói tin được gửi qua tất cả các liên kết có sẵn. Hơn nữa, tại mỗi nút, router cần lưu trữ thông tin về các gói dữ liệu nhận được. Điều này làm tăng mức tiêu thụ bộ nhớ và thời gian xử lý. Khi các gói tin được lưu giữ vào bộ nhớ trong một thời gian dài, nó sẽ làm

cho việc quy mô hóa sử dụng thuật toán lan tràn cho một vài nút trở nên khó khăn.

Mặc dù những vấn đề này, một số phương pháp đã được đề xuất để giải quyết các vấn đề đặt ra nhờ thuật toán lan tràn. Ví dụ, một đề xuất của Dalal và Metcalfe[16] là thuật toán chuyển tiếp đường. Nó là một phương pháp được sử dụng để giảm bớt việc sử dụng nguồn tài nguyên mạng với thuật toán lan tràn. Ý tưởng là, mỗi nút v và nút nguồn s trong mạng, v sẽ xác định

phương pháp phân tán cạnh e = (u,v), từ một vài u V, đó là đường ngắn nhất từ s đến v. Cạnh này được gọi là liên kết cha.

Các liên kết cha có thể được xác định theo các cách khác nhau, phương pháp đơn giản như sau: Chọn e = (u, v) là liên kết cha cho nguồn s, nếu đây là cạnh đầu tiên mà gói tin có nguồn gốc từ s nhận được. Với thông tin này, một nút có thể chọn lọc thả các gói dữ liệu đến, dựa trên mã nguồn của nó.

Nếu trong giai đoạn định tuyến, một gói tin p nhận được từ một liên kết mà không được coi là đường đi ngắn nhất giữa nút nguồn và nút hiện tại, thì p bị loại bỏ. Trái lại, nút phát sóng p đến tất cả các liên kết lân cận, giống như thuật toán lan tràn. Các liên kết cha cũng có thể cập nhật tùy thuộc vào thông tin nhận được từ các nút khác.

Một phần của tài liệu Các thuật toán phân tán giải bài toán định tuyến đa đích (Trang 38 - 40)