Các thuật toán định tuyến cho mạng ad-hoc

Một phần của tài liệu (LUẬN văn THẠC sĩ) AN TOÀN MẠNG AD HOC (Trang 52 - 64)

50

Có rất nhiều giao thức định tuyến trong mạng không dây ad-hoc. Với mỗi cách tiếp cận khác nhau thì lại có một cách phân loại khác nhau. Song nhìn chung có thể phân thành hai loại chính là định tuyến điều khiển bằng bảng ghi (Table-Driven Routing Protocols) và định tuyến theo yêu cầu khởi phát từ

nguồn (Source Initiated On-demand Routing).

Định tuyến điều khiển theo bảng ghi: phương pháp này cố gắng duy trì thông tin định tuyến cập nhật liên tục từ mỗi nút mạng đến mọi nút mạng khác trong mạng. Các giao thức loại này yêu cầu mỗi nút mạng luôn duy trì một hoặc nhiều bảng ghi để lưu trữ thông tin định tuyến, và chúng đáp ứng những thay đổi trong topo mạng bằng cách phát quảng bá rộng rãi các thông tin cập nhật tuyến qua mạng để duy trì tầm kiểm soát mạng một cách liên tục, duy trì một cái nhìn nhất quán về mạng. Các vùng nào khác nhau về số bảng ghi liên quan đến định tuyến cần thiết và các phương thức thay đổi cấu trúc mạng sẽ được phát quảng bá để cho tất cả mọi nút mạng đều có thể biết được

Định tuyến theo yêu cầu khởi phát từ nguồn: Phương pháp này chỉ

tạo ra các tuyến khi nút mạng nguồn cần đến. Khi một nút mạng yêu cầu một tuyến đến đích, nó phải khởi đầu một quá trình khám phá tuyến. Quá trình này chỉ hoàn tất khi đã tìm ra một tuyến sẵn sàng hoặc tất cả các tuyến khả thi đều

được kiểm tra. Khi mà một tuyến đã được khám phá và thiết lập, nó được duy trì bởi một số dạng thủ tục cho đến khi tuyến đó không thể truy nhập được từ

nút mạng nguồn hoặc là không còn cần thiết đến nó nữa.

Sau đây là một số giao thức định tuyến phổ biến trong mạng ad-hoc:

2.3.3.1. DSDV (Destination Sequence Distance Vector)

DSDV là giao thức định tuyến theo bảng, dựa trên vector khoảng cách theo chặng. Kĩ thuật này vẫn giữ được những nét cổ điển của thuật toán Bellman-Ford nhưng đã được cải tiến để loại bỏ khả năng sinh ra vòng lặp trong các bảng định tuyến để phù hợp với mạng ad-hoc.

51

Trong thuật toán này, mỗi nút mạng sẽ duy trì một bảng định tuyến chứa các nút mạng đích có thể đến trong mạng và số chặng tới mỗi đích trong mạng. Để duy trì tính nhất quán trong mạng, DSDV yêu cầu các nút mạng phát quảng bá định kỳ

các cập nhật định tuyến tới các nút mạng hàng xóm và phát ngay các cập nhật khi có những thay đổi quan trọng xảy ra trong mạng. Ngoài để tránh việc các thông tin

định tuyến được phát quảng bá quá nhiều khi topo mạng có những thay đổi nhanh, DSDV sử dụng một cơ chế hãm các cập nhật tức thời khi có các thay đổi quá nhanh xảy ra trong mạng. Với cơ chế này, DSDV sử dụng hai loại thông điệp cập nhật: cập nhật đầy đủ – chứa tất cả thông tin định tuyến hiện có và cập nhật thông tin bổ sung

– mang những thông tin về những thay đổi từ lần cập nhật đầy đủ gần nhất. Để

làm được điều này, DSDV sử dụng hai bảng ghi khác nhau, một để chuyển tiếp các gói tin, một để phát các gói tin cập nhật bổ sung. Thực tế, nếu những thay đổi trong mạng không xảy ra một cách thường xuyên thì những thông

điệp cập nhật đầy đủ sẽ ít được sử dụng. Thay vào đó là những gói tin cập nhật bổ sung. Do đó, các nút mạng di động cũng phải sử dụng một bảng ghi để nhớ

những thông tin của các gói cập nhật bổ sung này.

Ngoài ra để tránh lặp tuyến, DSDV còn sử dụng số thứ tự gắn với mỗi

đường. Số thứ tự này xác định độ mới của tuyến đường, cho phép các nút mạng di động có thể phân biệt được các tuyến đường mới và các tuyến đường cũ. Số thứ tự của tuyến đường được tăng lên 1 mỗi khi có một tuyến đường mới

được phát quảng bá. Đường có số thứ tự cao hơn được xem là tốt hơn. Nếu hai đường có cùng số thứ tự, đường nào có số chặng ít hơn sẽ được sử dụng. Khi có một liên kết hỏng (nút mạng không nhận được các quảng bá định kì), trong lần quảng bá sau, nút mạng phát hiện ra liên kết hỏng sẽ phát quảng bá

đường tới đích có số chặng là vô cùng và tăng thứ tự đường.

52

Bảng 2.2. Ví dụ về bảng định tuyến khi dùng thuật toán DSDV Destination A B C D

Trên đây là hình vẽ miêu tả một bảng định tuyến trong DSDV. Trong đó, next hop là chặng tiếp theo, metric là số các chặng để tới đích, Seq.no là số

thức tự của quảng cáo cuối cùng tới nút mạng và install time là thời gian

đường được cài đặt lần đầu tiên. Ngoài ra, bảng còn chứa các trường nút mạng

đích (Destination) và thời gian tồn tại của các đường (Stable Data).

2.3.3.2. AODV (Ad-hoc On-Demand Distance Vector Routing)

Giao thức AODV dựa trên thuật toán vector khoảng cách được sử dụng cho việc thiết lập tuyến đường tới đích cho mạng không dây. AODV thích ứng nhanh với điều kiện mạng có sự biến động, tốc độ xử lý thấp, giới hạn băng thông và bộ (adsbygoogle = window.adsbygoogle || []).push({});

nhớ do các bản tin điều khiển có kích thước nhỏ. AODV là thuật toán tìm đường theo yêu cầu, khi những nút trong mạng không nằm trong tuyến đường truyền tin thì sẽ không duy trì bất cứ thông tin nào về tuyến đường đó. Điểm khác biệt của AODV so với các giao thức khác là việc sử dụng số tuần tự đích. Số tuần tự đích được tạo bởi nút đích khi có một kết nối tới nó. Việc sử dụng số tuần tự đích đảm bảo không có vòng lặp trong mạng. Ngoài ra, AODV cho phép các nút mạng gửi phản hồi khi các kết nối bị đứt gẫy hay cấu trúc liên kết mạng có sự thay đổi.

53

Hình 2.3. Quá trình phát quảng bá bản tin yêu cầu

Hình 12 mô tả quá trình phát quảng bá bản tin yêu cầu xác định tuyến từ

nút nguồn. Sau đó nút đích hoặc một nút có tuyến đường hợp lệ tới đích sẽ gửi phản hồi đơn hướng về nút nguồn (hình 13).

Bản tin điều khiển được sử dụng để thiết lập tuyến. Các bản tin này được gửi thông qua giao thức UDP/IP. Các bản tin điều khiển của AODV bao gồm:

Bản tin yêu cầu (RREQ) Bản tin trả lời (RREP) Bản tin báo lỗi (RERR)

Hình 2.4. Quá trình phát đơn hướng bản tin trả lời

54

Định dạng bản tin yêu cầu

Hình 2.5. Định dạng bản tin RREQ [7]

Định dạng của bản tin yêu cầu RREQ được trình bày ở trong hình 14 và bao gồm các trường:

Type:1.

Hop count: Số chặng từ nút khởi tạo bản tin RREQ đến nút xử lý bản tin này.

RREQ ID: Chuỗi số sẽ kết hợp với địa chỉ IP của nút nguồn để xác định duy nhất một bản tin RREQ.

Destination IP Address: Địa chỉ IP của nút đích cần xác định tuyến đường mong muốn.

Destination Sequence Number: Chuỗi số tuần tự cuối nút nguồn nhận được trong quá khứ từ mọi tuyến đường tới đích.

Originator IP Address: Địa chỉ IP nút khởi tạo bản tin yêu cầu định tuyến. Originator Sequence Number: Chuỗi số tuần tự được sử dụng cho những tuyến đường hướng tới nút nguồn của yêu cầu định tuyến.

Định dạng bản tin trả lời

55

Hình 2.6. Định dạng bản tin RREP [7]

Định dạng của bản tin yêu cầu RREP được trình bày ở trong hình 15 và bao gồm các trường:

Type: 2.

Hop Count: Số chặng từ địa chỉ nút nguồn đến địa chỉ nút đích. Destination IP Address: Địa chỉ của nút đích của tuyến đường được xác

định.

Destination Sequence Number: Chuỗi số tuần tự được liên kết với tuyến.

Originator IP Address: Địa chỉ của nút khởi tạo bản tin yêu cầu định tuyến. Life Time: Thời gian (ms) xác định tuyến hợp lệ tại những nút nhận được bản tin trả lời RREP.

Định dạng bản tin báo lỗi

56

Hình 2.7. Định dạng bản tin RERR [7] (adsbygoogle = window.adsbygoogle || []).push({});

Định dạng của bản tin yêu cầu RREQ được trình bày ở trong hình 16 và bao gồm các trường:

Type: 3.

Descount: Số lượng nút đích không đến được trong bản tin báo lỗi, trường này phải có giá trị tối thiểu là 1.

Unreachable Destination IP Address: Địa chỉ nút đích không đến được do liên kết bị đứt.

Unreachable Destination Sequence Number: Số tuần tự trong bảng định tuyến của các nút đích không đến được.

Cơ chế hoạt động:

Quá trình thiết lập tuyến

Khi một nút cần gửi dữ liệu tới đích, nó sẽ phát quảng bá bản tin yêu cầu

đinh tuyến RREQ với một chỉ số ID quảng bá duy nhất tới các nút lân cận. Quá trình này diễn ra nếu tuyến đường đến đích hết hiệu lực hoặc chưa được xác định

trước đó. Sau khi phát quảng bá bản tin RREQ, nút nguồn sẽ lưu vào bộ nhớ đệm chỉ số ID quảng bá và địa chỉ IP của nó. Bằng cách này, khi nút nguồn nhận lại gói dữ liệu từ nút lân cận, nó sẽ không cần xử lý và truyền lại gói tin đó. Sau một khoảng thời gian mà nút nguồn không nhận được thông tin định tuyến, nó có thể

57

phát quảng bá một bản tin RREQ khác, tối đa RREQ_RETRIES lần.

Khi nhận được bản tin RREQ mới, nút trung gian sẽ so sánh địa chỉ IP nút nguồn và chỉ số ID quảng bá của bản tin này với bản tin RREQ đã nhận

được trước đó. Nếu hai cặp giá trị này giống nhau, nút trung gian sẽ tự động xóa bản tin RREQ nhận được. Nếu bản tin RREQ hợp lệ, nút này sẽ tăng giá trị số chặng (hop count) và tiếp tục phát quảng bá gói tin này tới các nút lân cận. Khi gói tin RREQ được truyền trên mạng từ nguồn tới đích, nó sẽ tự động thiết lập đường ngược lại từ các nút mạng này quay trở lại nút nguồn. Tuyến

đường ngược lại sẽ được sử dụng nếu nút trung gian nhận được bản tin RREP về nút nguồn trong trường hợp xác định được tuyến đường tới đích.

Một nút nhận được bản tin yêu cầu RREQ sẽ phát bản tin trả lời RREP nếu nó là nút đích hoặc nó có tuyến đường hợp lệ và có số tuần tự lớn hơn hoặc bằng số tuần tự bên trong gói tin RREQ vừa nhận được. Sau đó, bản tin RREP sẽ được truyền đơn hướng tới nút nguồn. Khi các nút trung gian chuyển tiếp bản tin RREQ và RREP, nó sẽ cập nhật bảng định tuyến và lưu danh sách tuyến trong 3 giây,

đây là khoảng thời gian mặc định ACTIVE_ROUTE_TIMEOUT trong AODV.

Cơ chế duy trì số tuần tự

Số tuần tự có vai trò như một tem thời gian, nó cho phép các nút so sánh sự tươi mới của thông tin mà nút đó đang lưu trữ với các nút khác. Số tuần tự được cập nhật khi một nút nhận được những thông tin mới từ các bản tin điều khiển RREQ, RREP, RERR. Một nút sẽ tăng số tuần tự của nó trong hai trường hợp:

Khi nút nguồn gửi bản tin yêu cầu RREQ để khám phá tuyến. Khinút đích phát trả lời bản tin RREP.

Số tuần tự lớn hơn đồng nghĩa với thông tin định tuyến chính xác hơn. Một nút sẽ cập nhật thông tới đích khi nó nhận được một bản tin điều khiển có số tuần tự lớn

hơn số tuần tự mà nó hiện có về nút đích trong bảng định tuyến. Ngoài ra, số tuần tự đích của một nút có thể thay đổi khi một kết nối tại chặng tiếp theo tới đích

58

bị mất hoặc hết hiệu lực.

Cơ chế duy trì và giám sát liên kết

Một nút có thể gửi quảng bá định kỳ bản tin HELLO cho các nút lân cận. Khi một nút nhận được bản tin HELLO từ nút hàng xóm, nó sẽ duy trì một tuyến đường tích cực tới nút hàng xóm và có thể gửi quảng bá một bản tin HELLO khác nếu cần thiết. Khi một tuyến đường được xác thực, giá trị thời gian sống (Lifetime) của tuyến đường đó sẽ được tăng lên. Việc sử dụng bản tin HELLO giúp duy trì khả năng kết nối cục bộ của một nút trong mạng.

Bên cạnh đó, nút mạng còn sử dụng bản in RERR để thông báo lỗi liên kết cho các nút lân cận. Một nút sẽ tiến hành xử lý bản tin RERR trong ba trường hợp:

Nó phát hiện một kết nối bị đứt gẫy tại chặng tiếp theo của một tuyến

đường tích cực trong bảng định tuyến khi truyền dữ liệu.

Nó xử lý một gói dữ liệu đã được xác định đường đi tới một nút trước đó nhưng lại không tồn tại một tuyến đường tích cực tới đích. (adsbygoogle = window.adsbygoogle || []).push({});

Nó nhận được bản tin RREQ từ nút lân cận về một hay nhiều tuyến đường tích cực.

Khi đó, nút mạng sẽ thiết lập một danh sách các đích đến không thể tới

được và cập nhật lại bảng định tuyến. Các nút lân cận có thể sử dụng danh sách này để gửi những gói tin RERR khác.

2.3.3.3. DSR (Dynamic Source Routing)

DSR là thuật toán định tuyến phổ biến trong mạng ad-hoc hiện nay. So với các thuật toán định tuyến khác, nó có những điểm vượt trội hơn như: không phát quảng bá định tuyến định kì, hỗ trợ tìm đường đi qua cả các liên kết không đối xứng và phù hợp với tính động của topo mạng. DSR chia cơ chế định tuyến thành hai phần là cơ chế tìm kiếm đường đi (Route Discovery) và cơ chế duy trì tuyến đường (Route Maintenance).

59

DSR sử dụng kĩ thuật định tuyến nguồn (source route). Theo đó, khi muốn gửi một gói tin, một tuyến nguồn sẽ được hình thành và lưu ở tiêu đề

của gói tin. Tuyến nguồn này chứa một danh sách có thứ tự và đầy đủ về các nút mạng cần đi qua để tới đích. Do đó, các nút mạng trung gian chỉ cần duy trì liên kết với các nút mạng hàng xóm để chuyển tiếp các gói tin. Nút mạng nguồn thì cần biết toàn bộ thứ tự tuyến đường để đến đích.

Mỗi nút mạng đều duy trì một bộ nhớ gọi là route cache để lưu các tuyến

đường khởi đầu từ nút mạng này mà nó tìm được. Khi có yêu cầu về tìm đường đi, nút mạng sẽ kiểm tra trong route cache có tuyến đường mà nó mong muốn hay không. Nếu có, tuyến đường này sẽ được sử dụng để truyền gói tin. Ngược lại, cơ

chế tìm kiếm đường đi sẽ được khởi động bằng việc phát quảng bá đi một gói tin yêu cầu đường (Route Request). Khi một nút mạng nhận được gói tin yêu cầu, nó sẽ kiểm tra trong route cache của mình có địa chỉ nút mạng đích hay không. Nếu không có, nó lại chuyển gói tin đó sang nút mạng hàng xóm của mình, đồng thời, bổ sung địa chỉ của nó vào thứ tự chặng được lưu trong gói tin yêu cầu. Gói tin yêu cầu được truyền trong mạng cho tới khi tới được nút mạng đích hoặc nút mạng có chứa đường đi đến nút mạng đích. Khi đường được tìm thấy, gói tin trả lời (route reply) chứa toàn bộ tuyến đường sẽ được gửi trở lại nút mạng nguồn. Lúc này cũng cần phải có một cơ chế để loại bỏ gói tin Route Request để tránh cho nó truyền vô hạn trong mạng. Do đó, DSR thêm vào tiêu đề của gói một trường time-to-live. Mỗi khi qua một nút mạng, trường time-to-live sẽ được tăng lên một, khi time-to-live vượt quá một giá trị nào đó, nó sẽ bị loại bỏ. Ngoài ra để giảm thời gian tìm kiếm đường, các nút mạng thường xuyên bổ sung những tuyến

đường mới mà nó học được trong quá trình các nút mạng khác chọn đường. Trong quá trình sử dụng route cache để ghi dữ liệu, các nút mạng vẫn có thể

theo dõi sự thay đổi của các liên kết thông qua cơ chế duy trì tuyến đường. Cơ chế

duy trì tuyến đường thực hiện biên nhận theo chặng hoặc biên nhận đầu cuối, kèm theo đó là cơ chế thông báo lỗi khi có liên kết bị đứt gẫy. Khi gói tin Route Error

được gửi về nút mạng nguồn, nó sẽ xóa bỏ liên kết bị hỏng ra khỏi route cache và

60

tất cả các đường có chứa chặng này được cắt tại điểm có liên kết hỏng. Ngoài ra, các nút mạng trung gian chuyển tiếp gói tin route error có thể cập nhật

Một phần của tài liệu (LUẬN văn THẠC sĩ) AN TOÀN MẠNG AD HOC (Trang 52 - 64)