- Cập nhật lại đƣờng dẫn cho gói RREQ
2.3.2. Giao thức định tuyến AOD
AODV là một trong những giao thức định tuyến theo cơ chế phản ứng (theo yêu cầu) trong hệ thống mạng Ad Hoc.
AODV cho phép định tuyến nhiều bƣớc giữa các nút mạng để thiết lập và duy trì mạng Ad Hoc. AODV dựa trên thuật toán vector khoảng cách nhƣng thuộc loại định tuyến theo yêu cầu, nó chỉ yêu cầu đƣờng định tuyến khi cần thiết. Thuật toán định tuyến AODV khá phù hợp cho cấu hình mạng động. AODV đƣa ra các tuyến khơng bị lặp ngay cả khi nó đang s a các liên kết lỗi. Bởi vì giao thức này khơng u cầu quảng bá tuyến định kỳ trên toàn mạng, nên u cầu tồn bộ băng thơng có sẵn cho một nút di động thực chất là thấp hơn so với các giao thức khác, những giao thức yêu cầu quảng bá.
AODV s dụng một cơ chế khám phá tuyến với sự cải biến của thuật tốn DSR. Thay vì định tuyến nguồn, AODV tin tƣởng vào sự thiết lập động
các entry trong bảng định tuyến ở các nút trung gian để phát gói tin RREP về node nguồn và node nguồn dùng thơng tin đó để gởi dữ liệu đến đích. Để đảm bảo rằng thông tin trong bảng định tuyến là mới nhất thì AODV s dụng kỹ thuật Sequence Number (kỹ thuật này dùng để nhận ra các con đƣờng đi khơng cịn giá trị trong quá trình cập nhật bảng định tuyến) để loại bỏ những đƣờng đi khơng cịn giá trị trong bảng định tuyến. Mỗi node sẽ có một bộ tăng số Sequence Number riêng cho nó.
N1 N3 N3 N4 N6 N7 N5 N8 N2 N1 N3 N4 N6 N7 N5 N8 N2 Đích Nguồn Đích
(a) Việc truyền của RREQ
(b) Đường đi của RREP tới nguồn Nguồn
Hình 2.10. Phát hiện tuyến trong AODV
Quá trình định tuyến của AODV gồm 2 cơ chế chính: cơ chế tạo thơng tin định tuyến và cơ chế duy trì thơng tin định tuyến.
Cơ chế tạo thông tin định tuyến (Route Discovery):
Cơ chế tạo thông tin định tuyến sẽ đƣợc thiết lập khi một nút nguồn có nhu cầu trao đổi thông tin với một nút khác trong hệ thống mạng. Trong hệ thống mạng VANET hoạt động theo giao thức AODV, mỗi nút trong hệ thống
mạng ln duy trì 2 bộ đếm: Bộ đếm Sequence Number và Bộ đếm broadcast_id. Cặp thông tin <Sequence Number, broadcast_id > là định danh duy nhất cho một gói tin RREQ. Cặp thơng tin này sẽ bị thay đổi giá trị khi:
Đối với Sequence Number:
Trƣớc khi một node khởi động tiến trình route discovery, điều này
nhằm chống sự xung đột với các gói tin RREP trƣớc đó.
Khi nhận đƣợc một gói tin RREP g i từ nút đích để trả lời gói tin
RREQ, nó sẽ cập nhật lại giá trị Sequence number lớn nhất của một trong 2 giá trị: Sequence number hiện hành mà nó lƣu giữ đối với Sequence number trong gói RREQ.
Đối với broadcast_id: Khi có một sự thay đổi trong tồn bộ các nút lân cận của nó dẫn đến sẽ có một số tuyến đƣờng trong bảng định tuyến sẽ khơng cịn hiệu lực. Số broadcast_id sẽ đƣợc tăng lên khi node khởi động một tiến trình route discovery mới. RREQ chứa các trƣờng sau:
<source_addr, source_sequence_#, broadcast_id, dest_addr, dest_sequence_#, hop_cnt>
Trong đó:
source _addr: địa chỉ nguồn source sequence: số thứ tự nguồn broadcast_id: định danh của RREQ dest_addr: địa chỉ đích
dest sequence: số thứ tự đích hop_cnt : số chặng
Tiến trình Route Discovery đƣợc khởi động khi nào một node muốn trao đổi dữ liệu với một node khác mà trong bảng định tuyến của nó khơng có thơng tin định tuyến đến node đích đó. Khi đó tiến trình sẽ phát broadcast một gói RREQ cho các node láng giềng của nó. Thơng tin trong RREQ ngồi địa
chỉ đích, địa chỉ nguồn, số hop-count (đƣợc khởi tạo giá trị ban đầu là 0),… cịn có các trƣờng: số sequence number của node nguồn, số broadcast id, giá trị sequence number đƣợc biết lần cuối cùng của node đích. Khi các node láng giềng nhận đƣợc gói RREQ, nó sẽ kiểm tra tuần tự theo các bƣớc:
Hình 2.11. Cơ chế l khám phá đường tại node của AODV
Bƣớc 1: Xem các gói RREQ đã đƣợc x l chƣa? Nếu đã đƣợc x lý
thì nó sẽ loại bỏ gói tin đó và phản hồi RREP về nguồn. Ngƣợc lại chuyển qua bƣớc 2.
Trƣớc đó node chƣa nhận RREQ? <Source, Broadcast_id>
Y
Node khơng là đích?
N
Khơng có đƣờng trong Router cache?
Hoặc
Có đƣờng nhƣng DSN của Router cache nhỏ hơn DSN của RREQ
N
Y
Phản hồi RREP về nguồn
N