Thuật tốn AODV

Một phần của tài liệu Thiết kế mạng cảm biến cảnh báo cháy sử dụng kỹ thuật ad hoc đa chặng (Trang 65)

Thuật toán Ad- hoc On-Demand Distance Vector

Trước tiên ta cần hiểu khái quát về hệ thống tìm đường theo yêu cầu (On- Demand). Trong hệ thống này, các nút không nằm trên tuyến đường chính thì khơng duy trì bất kỳ thông tin định tuyến và cũng không tham gia vào bất kỳ việc trao đổi bảng định tuyến định kỳ nào. Hơn nữa, một nút không phải khám phá và duy trì một con đường để một nút khác cho đến khi hai nút đó muốn trao đổi thông tin với nhau, trừ khi nút trước cung cấp đóng vai trị như một trạm chuyển tiếp trung gian để duy trì kết nối giữa hai nút khác.

Khi kết nối cục bộ của nút di động được quan tâm, mỗi nút có thể được nhận thức bởi các nút láng giềng khác bằng việc sử dụng một số kỹ thuật, bao gồm quảng bá cục bộ (khơng tồn hệ thống) gọi là bản tin hello. Các bảng định tuyến của các nút trong khu vực được tổ chức để tối ưu hóa thời gian đáp ứng sự thay đổi cục bộ và cung cấp thời gian đáp ứng nhanh chóng cho các yêu cầu thành lập các tuyến đường mới. Mục tiêu chính của thuật tốn là:

• Chỉ quảng bá gói tin khám phá khi cần thiết

• Để phân biệt giữa quản lý kết nối (phát hiện láng giềng) và duy trì Topo chung

• Để phổ biến thơng tin về những thay đổi trong kết nối cục bộ tới các nút di động lân cận có khả năng cần thơng tin.

AODV sử dụng một cơ chế khám phá tuyến đường quảng bá, cũng như được sử dụng (với vài sửa đổi) trong thuật toán định tuyến nguồn động (DSR- Dynamic Source Routing). Thay vì định tuyến nguồn, AODV dựa vào việc thiết lập động các mục trong bảng định tuyến tại các nút trung gian. Sự khác biệt này có hiệu quả trong các mạng với nhiều nút, nơi một chi phí lớn hơn phát sinh do việc mang các tuyến đường nguồn trong mỗi gói dữ liệu. Để duy trì thơng tin định tuyến gần nhất giữa các nút, ta mượn khái niệm về số chuỗi đích từ DSDV. Tuy nhiên, không giống như trong DSDV, mỗi nút ad-hoc duy trì một bộ đếm số chuỗi chỉ tăng được sử dụng để thay thế các tuyến đường lưu trữ cũ. Sự kết hợp của các kỹ thuật này mang lại một thuật toán sử dụng băng thông hiệu quả ( bằng cách giảm thiểu tải mạng cho lưu lượng điều khiển và dữ liệu), là đáp ứng với những thay đổi trong cấu trúc liên kết, và đảm bảo chống loop trong việc định tuyến.

a) Path Discovery – Khám phá tuyến đường

Quá trình Khám phá tuyến đường được bắt đầu bất cứ khi nào một nút nguồn cần phải giao tiếp với một nút mà nó khơng có thơng tin định tuyến trong bảng của mình. Mỗi nút duy trì hai bộ đếm riêng biệt: một số chuỗi nút (sequence number) và id quảng bá (broadcast_id). Nút nguồn khởi tạo việc phát hiện tuyến đường bằng cách quảng bá một gói tin yêu cầu tuyến (RREQ- route request) đến các láng giềng của nó. Các RREQ chứa các trường sau:

< Source.addr, source_sequence_#, broadcast_id, dest_addr, dest_sequence_#, hop_cnt>

Cặp <source_addr, broadcast_id > xác định duy nhất một RREQ. broadcast_id tăng lên mỗi khi nút nguồn phát một RREQ mới. Mỗi nút láng giềng hoặc đáp ứng các RREQ bằng cách gửi một trả lời tuyến (RREP) trở lại nguồn, hoặc quảng bá lại các RREQ tới các nút láng giềng của mình sau khi tăng hop_cnt. Một nút có thể nhận được nhiều bản sao của cùng một gói quảng bá về một tuyến đường từ các nút láng giềng khác nhau. Khi một nút trung gian nhận RREQ, nếu nó đã nhận được một RREQ với cùng broadcast_id, và địa chỉ nguồn, nó sẽ bỏ bản tin RREQ thừa và không phát lại. Nếu một nút khơng thể đáp ứng các RREQ, nó theo dõi những thơng tin sau để thực hiện các thiết lập đường dẫn ngược, cũng như thiết lập đường dẫn thuận sẽ truyền RREP cuối cùng:

• Địa chỉ IP đích • Địa chỉ IP Nguồn

• broadcast_id

• Thời gian hết hạn cho mục tuyến đường ngược • Số chuỗi của nút nguồn

b) Thiết lập tuyến ngược

Ta có hai số chuỗi có trong một RREQ (ngồi broadcast_id): số chuỗi nguồn và số chuỗi đích cuối cùng được biết tới nguồn. Số chuỗi nguồn được sử dụng để duy trì thơng tin mới về tuyến đường ngược đi tới nguồn, và số chuỗi đích quy định một tuyến đường đến đích phải mới đến mức nào để nó có thể được chấp nhận bởi nút nguồn.

Khi bản tin RREQ đi từ một nguồn tới các đích khác nhau, nó sẽ tự động thiết lập các con đường ngược từ tất cả các nút trở về nút nguồn. Để thiết lập một con đường ngược, một nút ghi lại địa chỉ của những nút láng giềng mà từ đó nó đã nhận được bản sao đầu tiên của RREQ. Các mục tuyến ngược được duy trì thời gian ngắn đủ để cho các RREQ đi qua mạng và tạo ra một bản tin trả lời cho nút gửi.

c) Thiết lập tuyến thuận

Cuối cùng, một RREQ sẽ đến một nút (có thể là đến chính nó) mà sở hữu một tuyến đường hiện tại đến đích. Đầu tiên nút nhận kiểm tra xem RREQ đã nhận được trên một liên kết hai chiều. Nếu một nút trung gian có một mục đường đi tới đích mong muốn, nó xác định xem tuyến đường có mới không bằng cách so sánh số chuỗi đích trong mục tuyến đường của nó với số chuỗi đích trong RREQ. Nếu số chuỗi của RREQ cho điểm đích lớn hơn so với số chuỗi được lưu bởi nút trung gian, các nút trung gian không phải sử dụng tuyến đường được ghi của nó để đáp ứng RREQ. Thay vào đó, các nút trung gian quảng bá lại RREQ. Nút trung gian có quyền trả lời chỉ khi nó có một tuyến đường với số chuỗi lớn hơn hoặc bằng số chuỗi chứa trong RREQ. Nếu nó khơng có một tuyến đường hiện tại đến đích, và nếu RREQ chưa từng được xử lý lúc trước, nút đó sẽ truyền (unicast) một gói trả lời tuyến đường (RREP) trở lại cho nút láng giềng mà từ đó nó nhận được RREQ. Một RREP có chứa các thơng tin sau:

< Source_addr, dest_addr, dest_sequence_#, hop_cnt, lifetime>

Trong thời gian một gói quảng bá đi tới một nút có thể cung cấp một tuyến đường đến đích, một con đường ngược đã được thành lập tới nút nguồn của RREQ. Khi RREP đi trở lại nguồn, mỗi nút dọc theo con đường thiết lập một con trỏ thuận

tới nút mà từ đó bản tin RREP được trả về, cập nhật thông tin thời gian timeout của nó đối với mục tuyến đường tới nguồn và đích, và ghi lại số chuỗi đích mới nhất cho điểm đích được u cầu. Các nút mà khơng nằm trên tuyến đường được xác định bởi RREP sẽ hết thời gian chờ sau khoảng thời gian ACTIVE_ROUTE_TIMEOUT (3000 ms) và sẽ xóa các con trỏ ngược.

Một nút nhận được một RREP sẽ truyền RREP đầu tiên cho một nút nguồn được đưa hướng tới nút nguồn đó. Nếu nó nhận được các bản tin RREP sau, nó sẽ cập nhật thông tin định tuyến của nó và truyền bản tin RREP chỉ khi RREP hoặc chứa một số chuỗi đích lớn hơn RREP trước, hoặc cùng số chuỗi đích nhưng với một hopcount nhỏ hơn. Nó chặn lại tất cả các RREP khác mà nó nhận được. Điều này làm giảm số lượng bản tin RREP được truyền về nguồn trong khi vẫn đảm bảo thông tin định tuyến mới nhất và nhanh nhất. Nút nguồn có thể bắt đầu truyền dữ liệu ngay sau khi được nhận RREP đầu tiên, và sau đó có thể cập nhật thông tin định tuyến của nó nếu nó học một con đường tốt hơn.

d) Quản lý bảng định tuyến

Ngoài các số chuỗi nguồn và đích, cịn một thơng tin hữu ích khác cũng được lưu trong các mục của bảng định tuyến, và được gọi là trạng thái mềm (soft-state) liên kết với mỗi mục. Liên quan đến các mục tuyến ngược là một bộ đếm thời gian, được gọi là bộ đếm thời gian hết hạn yêu cầu tuyến (route request expiration timer). Mục đích của bộ đếm thời gian này là để làm sạch các mục tuyến ngược từ các nút khơng nằm trên đường đi từ nguồn đến đích. Thời gian hết hạn này phụ thuộc vào kích cỡ của mạng ad-hoc. Một thông số quan trọng khác liên quan đến các mục định tuyến là thời gian chờ lưu tuyến (route caching timeout), hoặc thời gian mà sau đó các tuyến đường được coi là khơng cịn hợp lệ.

Trong mỗi mục của bảng định tuyến, địa chỉ của các nút láng giềng tích cực mà qua đó các gói tin cho nút đích nhất định được nhận cũng được duy trì. Một nút láng giềng được coi là hoạt động (cho nút đích đó) nếu nó tạo ra hoặc relay ít nhất một gói tin cho nút đích đó trong khoảng thời gian chờ hoạt động (active_timeout) gần nhất. Thơng tin này được duy trì để tất cả các nút nguồn hoạt động có thể được thông báo khi một liên kết dọc theo một tuyến đường dẫn đến đích bị đứt. Một mục tuyến đường được coi là hoạt động nếu nó được sử dụng bởi bất kỳ một nút láng giềng hoạt động. Đường dẫn từ một nút nguồn đến một nút đích, mà các gói tin đi trên đó dọc theo các mục tuyến đường hoạt động, được gọi là một đường dẫn hoạt

động (active_path). Lưu ý rằng, như với DSDV, tất cả các tuyến trong bảng định tuyến được gắn thẻ với các số chuỗi đích, trong đó đảm bảo rằng khơng có vịng lặp định tuyến nào có thể hình thành, ngay cả dưới điều kiện khắc nghiệt của việc chuyển phát gói khơng theo trật tự và nút có tính di động cao.

Một nút di động duy trì một mục bảng định tuyến cho mỗi điểm đích quan tâm. Mỗi mục bảng định tuyến có chứa các thơng tin sau:

• Điểm đích • Chặng tiếp

• Số lượng chặng (metric) • Số chuỗi cho điểm đích

• Các láng giềng hoạt động cho tuyến này • Thời gian hết hạn cho mục bảng định tuyến

Mỗi lần một mục tuyến đường được sử dụng để truyền dữ liệu từ một nguồn tới một đích, thời gian chờ cho các mục được thiết lập lại thành thời gian hiện tại cộng với thời gian tuyến hoạt động (active_route_timeout).

Nếu một tuyến đường mới được cung cấp cho một nút di động, nút sẽ so sánh số chuỗi đích của tuyến đường mới với số chuỗi đích của tuyến đường hiện tại. Tuyến đường có số chuỗi đích lớn hơn sẽ được chọn. Nếu số chuỗi là như nhau, thì tuyến đường mới được chọn chỉ khi nó có một metric nhỏ hơn (số chặng ít hơn) tới điểm đích.

e) Duy trì đường dẫn (path)

Chuyển động của các nút không nằm trên một đường dẫn hoạt động không ảnh hưởng đến việc định tuyến tới điểm đích của đường dẫn đó. Việc di chuyển nút nguồn trong một phiên hoạt động có thể sẽ tái khởi động các thủ tục khám phá tuyến để thiết lập một tuyến đường mới đến đích. Khi mà hoặc là nút đích hoặc là nút trung gian di chuyển, một RREP đặc biệt sẽ được gửi đến các nút nguồn bị ảnh hưởng. Các bản tin hello định kỳ có thể được sử dụng để đảm bảo các liên kết đối xứng, cũng như để phát hiện các lỗi liên kết, như được mơ tả trong phần sau. Ngồi ra, với trễ ít hơn, lỗi như vậy có thể được phát hiện bằng cách sử dụng các ACK lớp liên kết (LLACK- link layer acknowledgment). Một lỗi liên kết cũng được chỉ ra nếu nỗ lực để chuyển tiếp một gói tin đến chặng kế tiếp gặp thất bại.

Một khi chặng kế tiếp trở nên không thể kết nối, nút phía upstream của điểm đứt truyền một RREP khơng mong muốn với một số chuỗi mới (ví dụ, một số chuỗi mà lớn hơn số chuỗi được biết trước đó) và hop count bằng vơ cùng cho tất cả các nút láng giềng phía upstream đang hoạt động. Những nút đó sẽ chuyển tiếp bản tin đó tới các nút láng giềng hoạt động của chúng và cứ tiếp tục như vậy. Quá trình này sẽ tiếp tục cho đến khi tất cả các nút nguồn hoạt động được thơng báo, nó chấm dứt bởi vì AODV chỉ duy trì các tuyến đường khơng loop và chỉ có một số hữu hạn các nút trong mạng ad-hoc.

Khi nhận được thông báo về một liên kết bị đứt, nút nguồn có thể khởi động lại q trình phát hiện nếu chúng vẫn cần một tuyến đường đến đích. Để xác định xem một tuyến đường vẫn còn cần thiết, một nút có thể kiểm tra xem các tuyến đường có được sử dụng gần đây khơng, cũng như kiểm tra các khối điều khiển giao thức lớp trên để xem liệu kết nối có mở sử dụng điểm đích chỉ định. Nếu nút nguồn (hoặc bất kỳ nút khác dọc theo tuyến đường lúc trước) quyết định nó muốn xây dựng lại tuyến đường đến đích, nó sẽ gửi ra một RREQ với một số chuỗi lớn hơn số chuỗi được biết trước đó, để đảm bảo rằng nó xây dựng một tuyến khả thi mới, và khơng có nút trả lời nếu chúng vẫn coi các tuyến đường trước đó là hợp lệ.

f) Quản lý kết nối cục bộ

Các nút học được các nút láng giềng của chúng theo một trong hai cách. Bất cứ khi nào một nút nhận được một gói quảng bá từ một nút láng giềng, nó cập nhật thơng tin kết nối cục bộ của nó để đảm bảo rằng nó có láng giềng này. Trong trường hợp một nút chưa gửi các gói tin đến tất cả các láng giềng phía downstream đang hoạt động của nó trong khoảng thời gian hello_interval, nó sẽ phát quảng bá cho các nút láng giềng bản tin hello (một RREP khơng mong muốn đặc biệt), có id của nó và số chuỗi. Số chuỗi của nút không thay đổi khi truyền bản tin hello. Bản tin hello này được ngăn khơng cho quảng bá lại ra bên ngồi các nút láng giềng bởi nó chứa một thời gian sống (TTL) giá trị là 1. Nút láng giềng mà nhận được gói tin này thì cập nhật thơng tin cục bộ tới nút phát. Nhận được một gói quảng bá hoặc một hello từ một nút láng giềng mới, hoặc không nhận được bản tin hello liên tiếp allowed_hello_loss từ một nút trước đó trong các láng giềng, là một chỉ thị rằng kết nối cục bộ đã thay đổi. Không nhận được các bản tin hello từ các nút láng giềng khơng hoạt động thì khơng gây ra bất kỳ hành động giao thức nào. Nếu bản tin hello không nhận được từ chặng kế dọc theo một đường dẫn hoạt động, những nút láng

giềng hoạt động sử dụng mà chặng kế tiếp được gửi thông báo về liên kết lỗi. Giá trị tối ưu được xác định cho allowed_hello_loss là hai.

Quản lý kết nối cục bộ với bản tin hello cũng có thể được sử dụng để đảm bảo rằng chỉ các nút với kết nối hai chiều được coi là láng giềng. Cho mục đích này, mỗi hello được gửi bởi một nút liệt kê các nút mà từ đó nó đã nghe được. Mỗi nút kiểm tra để chắc chắn rằng nó chỉ sử dụng tuyến đường đến các nút láng giềng đã nghe bản tin hello của nút đó. Để tiết kiệm băng thông cục bộ, việc kiểm tra như vậy chỉ được thực hiện khi được cấu hình một cách rõ ràng vào các nút.

3.4.2. Mơ phỏng và kết quả

Thuật tốn AODV đã được một nhóm nghiên cứu mơ phỏng trên phần mềm PARSEC. Mục tiêu chính của mô phỏng là để cho thấy rằng việc thành lập tuyến đường theo yêu cầu với AODV là vừa nhanh chóng và chính xác. Mục đích khác muốn cho thấy AODV cũng phù hợp với các mạng lớn, và xác định giá trị tối ưu cho mỗi thông số cần thiết.

a) Môi trường mô phỏng

Mô phỏng của đã được chạy sử dụng các mạng 50, 100, 500, và 1000 nút. Các thuật toán chuyển động cho tất cả các kích thước mạng là như nhau. Các nút ban đầu được đặt ngẫu nhiên trong một kích thước cố định L x L. Trong mơ phỏng, các nút có thể tự do di chuyển bất cứ nơi nào trong khu vực này. Mỗi nút chọn một tốc độ phân phối đều trong khoảng 0,4 đến 0,8 mét trên giây. Sau đó nó di chuyển tới một vị trí ngẫu nhiên trong khu vực L x L. Nút di chuyển cho đến khi nó đạt đến vị trí đó, sau đó chọn một khoảng thời gian nghỉ phân bố đều trong khoảng 60 và 300 giây. Sau thời gian đó, các nút lại di chuyển hướng tới một điểm lựa chọn ngẫu nhiên. Quá trình này lặp đi lặp lại trong suốt mô phỏng, gây ra những thay đổi liên

Một phần của tài liệu Thiết kế mạng cảm biến cảnh báo cháy sử dụng kỹ thuật ad hoc đa chặng (Trang 65)

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

(91 trang)