Giống như nhiều thuật toán định tuyến theo yêu cầu khác, AODV sử dụng cách gửi quảng bá gói tin yêu cầu định tuyến lên toàn mạng để tìm đường tới trạm làm việc đích.
2.2.2.1. Tìm đường
Việc tìm đường được một trạm làm việc thực hiện mỗi khi nó muốn truyền số liệu với một trạm làm việc khác, nhưng trong bảng định tuyến mà nó đang lưu giữ không chứa thông tin định tuyến tới trạm làm việc này.
Khi muốn truyền số liệu, trạm làm việc nguồn sẽ khởi tạo quá trình tìm đường bằng việc quảng bá gói tin yêu cầu định tuyến RREQ (route request packet) tới các trạm làm việc lân cận
Gói tin yêu cầu định tuyến RREQ chứa các thông tin sau: • Địa chỉ trạm làm việc nguồn (source_addr)
• Số thứ tựđịnh tuyến của trạm làm việc nguồn (source_sequence_#) • Số hiệu gói tin yêu cầu định tuyến (broadcast_id)
• Số thứ tựđịnh tuyến của trạm làm việc đích (dest_sequence_#) • Giá trị thước đo định tuyến (ở đây ta dùng số bước nhảy hop_cnt)
Cặp giá trị <source_addr, broadcast_id> sẽ xác định duy nhất một gói tin yêu cầu định tuyến RREQ. Như vậy, mỗi trạm làm việc phải sử dụng hai bộđếm, một dành để đánh số thứ tự định tuyến cho trạm làm việc (node sequence-number) và một dành để đánh dấu số hiệu gói tin yêu cầu định tuyến (broadcast_id). Mỗi khi một trạm làm việc muốn tìm một đường đi mới, nó sẽ tựđộng tăng giá trị số hiệu broadcast_id để đánh dấu gói tin yêu cầu định tuyến, rồi mới phát quảng bá gói tin đó lên mạng.
Nếu một trạm làm việc nhận được gói tin yêu cầu định tuyến, và nó đang lưu giữ thông tin định tuyến đủ mới tới trạm đích, gói tin trả lời RREP sẽ được gửi lại cho trạm làm việc nguồn. Ngược lại, nó sẽ tăng thêm giá trị thước đo định tuyến hop_cnt rồi tiếp tục quảng bá gói tin yêu cầu định tuyến sang các trạm làm việc lân cận.
Như đã trình bày ở trên, ngoài số hiệu gói tin quảng bá broadcast_id, trong gói tin yêu cầu định tuyến còn chứa các thông tin khác, trong đó có số thứ tựđịnh tuyến mới nhất của trạm làm việc đích mà trạm nguồn biết được (dest_sequence_#). Số thứ tự định tuyến này cho biết tính cập nhật của thông tin định tuyến tới trạm đích mà trạm nguồn đang cần. Thông tin định tuyến mà một trạm định cung cấp cho trạm làm việc nguồn phải có số thứ tự định tuyến của trạm đích lớn hơn hoặc bằng số thứ tự tương ứng trong gói tin yêu cầu định tuyến.
Nếu một trạm làm việc trung gian nào đó (không phải trạm đích) có lưu giữ thông tin định tuyến đến trạm đích, định gửi gói tin trả lời RREP về cho trạm làm việc nguồn, nó phải chắc chắn thông tin định tuyến mà nó đang lưu giữ còn giá trị bằng cách so sánh số thứ tự định tuyến của trạm đích lấy trong gói tin yêu cầu định tuyến với số thứ tự định tuyến của trạm đích trong thông tin mà nó lưu giữ. Nếu số thứ tự định tuyến yêu cầu lớn hơn, trạm trung gian không được phép gửi lại trạm nguồn gói tin trả lời RREP mà thay vào đó phải tiếp tục quảng bá gói tin yêu cầu định tuyến RREQ tới các trạm làm việc lân cận. Trường hợp ngược lại, số thứ tự định tuyến yêu cầu nhỏ hơn hoặc bằng số thứ tự định tuyến của trạm đích trong thông tin định tuyến do trạm trung gian lưu giữ, trạm trung gian sẽ gửi gói tin trả lời RREP trở lại trạm nguồn theo phương thức gửi chỉ định (unicast) theo đường quay lại đã được thiết lập trước đó (mời xem phần Thiết lập đường quay lại ngay ở sau). Dĩ nhiên, việc này chỉ được thực hiện nếu như trạm làm việc trung gian chưa từng xử lý yêu cầu định tuyến này.
Nếu một trạm làm việc không có thông tin định tuyến đang được yêu cầu hoặc thông tin định tuyến lưu giữ không đủ tính cập nhật thì trước khi tiếp tục quảng bá gói tin yêu cầu định tuyến RREQ nhận được sang các trạm làm việc lân cận, nó sẽ lưu giữ lại các thông tin sau:
• Địa chỉ trạm làm việc đích. • Địa chỉ trạm làm việc nguồn.
• Số hiệu gói tin quảng bá (broadcast_id).
• Thời gian lưu giữđường quay lại (expiration time). • Số thứ tựđịnh tuyến của trạm làm việc nguồn.
Các thông tin này được sử dụng để phục vụ việc thiết lập đường quay lại (reverse path) và đường truyền tin (forward path) sau đó.
Lưu ý rằng, một trạm làm việc có thể nhận được cùng một gói tin yêu cầu định tuyến nhiều lần từ các trạm làm việc lân cận của nó. Bằng việc so sánh cặp giá trị <source_addr, broadcast_id>, các máy trạm sẽ biết được nó đã từng nhận được gói tin yêu cầu định tuyến đó chưa. Trong trường hợp phát hiện ra gói tin yêu cầu định tuyến vừa nhận được giống với một gói tin đã nhận trước đó, nó sẽ không quảng bá tiếp tới các trạm làm việc lân cận mà đơn giản là hủy bỏ gói tin yêu cầu định tuyến vừa nhận
Đến một lúc nào đó, tất cả các trạm làm việc trong mạng đều sẽ nhận được gói tin yêu cầu định tuyến. Một trong số chúng có thể sẽ biết đường đi tới trạm làm việc đích nên gói tin trả lời sẽđược gửi lại trạm nguồn. Hoặc chính trạm làm việc đích, sau khi nhận được gói tin yêu cầu định tuyến, sẽ gửi lại gói tin trả lời định tuyến. Ngược lại, có nghĩa là trạm làm việc đích không có trên mạng hoặc nằm ngoài vùng có thể giao tiếp.
Thiết lập đường quay lại
Mục đích của việc thiết lập đường quay lại (reverse path) là để bất kỳ một trạm làm việc nào trong mạng (có thể là trạm làm việc đích hoặc trạm trung chuyển) đều có thể gửi gói tin trả lời RREP theo phương thức gửi chỉ định (unicast) qua đường này về trạm làm việc nguồn, khi nó nhận được yêu cầu chuyển tiếp gói tin trả lời.
Để thiết lập đường quay lại, mỗi trạm làm việc sẽ lưu địa chỉ của trạm làm việc lân cận mà từđó, gói tin yêu cầu định tuyến được truyền tới sớm nhất (vì, nhưđã nêu trên, một trạm làm việc có thể nhận được cùng một gói tin yêu cầu định tuyến nhiều lần từ các trạm làm việc lân cận của nó). Như vậy, khi gói tin yêu cầu định tuyến RREQ được truyền quảng bá lên mạng thì đồng thời đường quay lại cũng tựđộng được thiết lập từ mỗi trạm làm việc trong mạng về tới trạm nguồn.
Hình 10. Thiết lập đường quay lại
Hình 10 là một thí dụ minh họa về việc thiết lập đường quay lại trong quá trình định tuyến của trạm làm việc S. Để xác định đường tới D, S quảng bá gói tin yêu cầu định tuyến tới trạm lân cận A. A sẽ lưu lại địa chỉ của S và tiếp tục quảng bá gói tin trên tới B và E. Tương tự, B, E lại lưu địa chỉ của A rồi quảng bá tiếp tới các trạm làm việc lân
cận khác của chúng, tương ứng là C và F. Như vậy, đến thời điểm này, các đường quay lại được thiết lập sẵn sàng cung cấp đường đi trở về S từ bất kỳ trạm làm việc nào trong số các trạm A, B, C, E, F. Quá trình cứ thế tiếp tục cho tới khi tất cả các trạm làm việc trong mạng nhận được gói tin yêu cầu định tuyến do S gửi đi.
Do mục đích của việc thiết lập đường quay lại chỉ nhằm để gói tin trả lời có thể được gửi về trạm làm việc nguồn nên các trạm làm việc chỉ cần lưu giữđường quay lại trong một thời gian nhất định, đủ để gói tin yêu cầu định tuyến lan truyền ra khắp mạng và gói tin trả lời được truyền vềđến trạm làm việc nguồn. Các trạm làm việc sẽ căn cứ vào số thứ tựđịnh tuyến mới nhất của trạm làm việc nguồn mà nó biết được và thời gian lưu trữ đường quay lại (expiration time) để xác định xem đường quay lại trạm làm việc nguồn có còn giá trị hay không.
Thiết lập đường truyền số liệu
Như đã thấy, đồng thời với việc gói tin yêu cầu định tuyến được gửi tới trạm làm việc đích hoặc tới một trạm trung gian có thể cung cấp thông tin định tuyến đủ mới tới trạm đích, đường quay lại cũng được thiết lập. Do vậy, gói tin trả lời RREP sẽ được gửi theo đường quay lại về trạm nguồn.
Gói tin trả lời RREP có chứa các thông tin sau: • Địa chỉ trạm làm việc nguồn.
• Địa chỉ trạm làm việc đích.
• Số thứ tựđịnh tuyến của trạm làm việc đích. • Giá trị thước đo định tuyến.
• Thời gian tồn tại của gói tin trả lời (lifetime).
Các trạm làm việc trên đường quay lại, trước khi chuyển tiếp gói tin trả lời RREP, sẽ lưu lại địa chỉ trạm lân cận vừa truyền tới gói tin RREP; cập nhật lại thời gian lưu trữ trong bảng định tuyến thông tin định tuyến đến trạm làm việc nguồn và trạm làm việc đích, đồng thời, lưu lại số thứ tựđịnh tuyến mới nhất của trạm đích. Bằng việc lưu lại địa chỉ của các trạm lân cận đã gửi tới nó gói tin trả lời RREP tại các trạm làm việc trung gian, đường truyền số liệu (forward path) đã được thiết lập.
Một trạm làm việc sẽ gửi gói tin trả lời RREP đầu tiên mà nó nhận được về trạm nguồn theo đường quay lại. Nếu tiếp tục nhận được các gói tin trả lời khác thì nó sẽ kiểm tra số thứ tự định tuyến của trạm làm việc đích và giá trị thước đo định tuyến trong gói tin RREP, so sánh với các giá trị tương ứng trong gói tin RREP nhận được trước đó. Nếu số thứ tự định tuyến của trạm đích trong gói tin RREP mới nhận được lớn hơn hoặc có cùng số thứ tựđịnh tuyến mà giá trị thước đo định tuyến hop_cnt lại nhỏ hơn (chứng tỏđường đi ngắn hơn) thì nó sẽ cập nhật lại thông tin định tuyến, và tiếp tục truyền gói tin trả lời RREP về cho trạm nguồn, đồng thời với việc cập nhật lại
thông tin vềđường truyền số liệu mới cho bảng định tuyến của nó. Trong các trường hợp còn lại, gói tin RREP sẽ bị loại bỏ. Việc này làm giảm bớt số lượng gói tin RREP truyền về trạm làm việc nguồn trong khi vẫn đảm bảo thông tin định tuyến được cập nhật nhanh chóng, đồng thời tìm được đường đi ngắn nhất.
Ngay sau khi nhận được gói tin trả lời đầu tiên, trạm làm việc nguồn có thể truyền đi các gói số liệu. Trong lúc truyền dữ liệu, nó vẫn tiếp tục cập nhật bảng định tuyến, nếu nhận được thông tin định tuyến tốt hơn từ các gói tin trả lời RREP sau đó.
Các trạm làm việc không thuộc đường truyền số liệu, sau khoảng thời gian lưu trữ đường quay lại (expiration time), sẽ tựđộng xóa đi các thông tin vềđường quay lại.
Hình 11 minh họa việc thiết lập đường truyền số liệu từ S tới D (đường liền nét). Sau khi gói tin yêu cầu định tuyến đạt tới trạm làm việc đích D, D gửi gói tin trả lời định tuyến theo đường quay lại (đường đứt nét) về S. Đường truyền số liệu đồng thời được thiết lập từ S tới D.