Phát RREQ đến các node lân cận
Trƣớc đó node chƣa nhận RREQ?
<Source, Request_id>
Hủy gói RREQ
N
Node không có tuyến đến đích trong Route
Cache?
Y
Node không là node đích?
Y
Phản hồi RREP về nguồn
Y
- Cập nhật thông tin về nguồn trong Route cache
- Cập nhật lại đƣờng dẫn cho gói RREQ
N
Kết thúc tiến trình khám phá
tuyến Thêm <Source, Request_id> vào Route cache
của node
Nối tuyến trong RREQ và tuyến đã có trong Route cache, cập nhật vào RREQ
N
Bắt đầu tiến trình khám phá tuyến tại
nguồn
Kết thúc tiến trình xử lý gói RREQ đã nhận
- Bước 1: Thông qua trường request ID, nó sẽ kiểm tra xem đã nhận gói tin này hay chưa? Nếu đã tồn tại thì nó sẽ loại bỏ gói tin đó và không xử lí gì thêm. Ngược lại thì qua bước 2.
- Bước 2: Nó kiểm tra trong Route Cache của nó có tuyến đến node đích mà còn hiệu lực hay không. Nếu có tuyến đến đích thì nó sẽ phản hồi lại cho node nguồn bằng gói Route Reply (RREP) chứa thông tin về tuyến đến đích và kết thúc tiến trình. Ngược lại thì qua bước 3.
- Bước 3: Nó kiểm tra địa chỉ đích cần tìm có trùng với điạ chỉ của nó hay không. Nếu trùng thì nó gửi lại cho node nguồn gói Route Reply (RREP) chứa thông tin về tuyến đến đích và kết thúc tiến trình. Ngược lại thì nó sẽ phát broadcast gói tin RREQ đến các node lân cận của nó. Các node lân cận sau khi nhận gói tin RREQ sẽ thực hiện việc kiểm tra thông tin (quay về bước 1).
Như vậy, quá trình này cứ tiếp tục cho đến khi node nguồn nhận được thông tin về tuyến đến đích hoặc thông tin rằng không thể định tuyến đến đích. Gói Route Reply (RREP) được gửi đến nguồn bằng cơ chế phát Unicast với Source Route là đảo ngược Source Route trong gói RREQ.
Ví dụ: Xét mô hình mạng MANET với mô hình truyền thông như hình 2.2. Node S cần truyền dữ liệu đến node D.
Hình 2.2.Mô hình mạng MANET gồm 12 node
Giả thuyết 1: Trong Route Cache của các node hiện tại là rỗng.
- Node S sẽ phát gói tin Route Request (RREQ) đến các node lân cận của nó (Hình 2.3)
Hình 2.3.Node S phát gói tin RREQ đến các node lân cận A, E, F
- Node A, E, F sẽ kiểm tra mình có phải là đích hay không. Nếu không sẽ kiểm tra trong Route Cache về tuyến đến đích. Theo giả thuyết ban đầu thì trong Route Cache sẽ không có thông tin về tuyến đến đích. Do đó, node E, F, A sẽ cập nhật thông tin về tuyến về nguồn vào Route Cache thông qua gói tin RREQ, đồng thời sẽ phát gói tin RREQ đến các node lân cận của nó.
Bảng 2.1.Thông tin lưu trữ trong Route Cache tại thời điểm 1
- Node A, E, F sẽ phát gói tin RREQ đến các node lân cận của nó (Hình 2.4)
Hình 2.4.Node A, F phát gói tin RREQ đến các node F, B, A, K, G
- Tại thời điểm này tại A và F đều nhận gói tin RREQ (vì A là node lân cận của F và ngược lại). Do đó, hai gói tin này sẽ bị hủy vì đã tồn tại trước đó. Đồng thời, quá trình khám phá tuyến vẫn chưa hoàn thành vì chưa đạt đến đích. Vì vậy, các node lân cận sẽ lưu trữ thông tin về tuyến đến nguồn trong Route Cache và tiếp tục gửi gói tin RREQ đến các node lân cận của nó.
Bảng 2.2.Thông tin lưu trữ trong Route Cache tại thời điểm 2
Hình 2.5.Node B, K, G phát gói tin RREQ đến các node C, G, H, K
- Tại thời điểm này, node H cùng nhận gói RREQ từ 2 node K và G. Trong trường hợp này, gói tin nào đến sau sẽ bị loại bỏ. Giả sử gói tin gửi từ K đến sau, vì thế giao thức DSR sẽ loại bỏ gói tin này. Tiến trình khám phá tuyến vẫn tiếp tục thực hiện.
Bảng 2.3.Thông tin lưu trữ trong Route Cache tại thời điểm 3
- Node H, C sẽ phát gói tin RREQ đến các node lân cận của nó (Hình 2.6)
Hình 2.6. Node H, C phát gói tin RREQ đến các node lân cận I, D, J Bảng 2.4.Thông tin lưu trữ trong Route Cache tại thời điểm 4 Bảng 2.4.Thông tin lưu trữ trong Route Cache tại thời điểm 4
- Tại thời điểm này, D nhận được gói RREQ và kiểm tra biết được mình chính là đích nên tiến trình khám phá đường đến đích dừng. Giao thức DSR sẽ thực hiện các công việc sau:
o D sẽ phát gói tin phản hồi Route Reply (RREP) về nguồn thông qua tuyến đã tìm được.
o Node I vẫn tiếp tục phát gói RREQ để tìm tuyến đến D. Tuy nhiên, khi tìm thấy D thì gói tin RREQ sẽ lập tức bị hủy vì D đã nhận gói tin này trước đó, đồng thời D gửi gói tin RREP về nguồn S thông qua tuyến này.
o Node J vẫn tiếp tục phát gói RREQ để tìm đến D. Tuy nhiên, trong trường hợp này node I không tìm thấy và sẽ gửi gói RREP về nguồn.
- Trong khi các gói tin RREP được gửi về nguồn, Route Cache sẽ tiếp tục lưu trữ tuyến ngược lại từ đích. Sau khi node nguồn S nhận được gói tin phản hồi RREP, S sẽ biết được tuyến đến đích và tiến hành gửi dữ liệu theo tuyến này.
Hình 2.7.Node D phát gói tin RREP về node S theo đường đã khám phá - Như vậy, trong trường hợp này sẽ có 2 tuyến từ node S đến node D đó là: S, A, - Như vậy, trong trường hợp này sẽ có 2 tuyến từ node S đến node D đó là: S, A, B, C, D và S, F, G, H, I, D. Giao thức DSR sẽ sử dụng một trong hai tuyến này để truyền dữ liệu từ node S đến node D. Trong quá trình truyền dữ liệu nếu tuyến thứ nhất đang sử dụng bị hỏng thì giao thức sẽ sử dụng tuyến thứ hai và ngược lại. Trong trường hợp cả hai tuyến bị hỏng thì tiến trình khám phá tuyến (Route discovery) sẽ tự động thực hiện lại.
Giả thuyết 2: Trong Route Cache của các node là không rỗng. Giả sử Route cache của node B đã lưu trữ tuyến đến D. Tiến trình khám phá tuyến vẫn thực hiện bình thường như giả thuyết 1. Tuy nhiên, khi đến B giao thức DSR sẽ kiểm tra trong Route cache và phát hiện được tuyến đến D chính là đích, nên tiến trình khám phá tuyến sẽ dừng và node B sẽ gửi gói tin phản hồi RREP về nguồn thông qua tuyến đã xác định.
2.3.2.2. Cơ chế duy trì thông tin định tuyến (Route Maintenance)
Route Maintenance cho phép các node trong hệ thống mạng tự động bảo trì thông tin định tuyến trong Route cache. Trong giao thức định tuyến DSR, các node khi chuyển gói tin trên mạng đều phải có nhiệm vụ xác nhận rằng các gói tin đó đã chuyển đến node kế tiếp hay chưa (thông qua sự phản hồi thông tin của node nhận)? Trong một trường hợp nào đó mà node đó phát hiện rằng gói tin không thể truyền đến node kế tiếp, nó sẽ gửi gói Route Error (RERR) cho node nguồn để thông báo tình trạng hiện thời của liên kết và điạ chỉ của node kế tiếp mà không thể chuyển đi. Khi node nguồn nhận được gói RERR, nó sẽ xóa tuyến mà liên kết bị hỏng trong Route cache và
tìm một tuyến khác mà nó biết trong route cache hoặc sẽ khởi động một tiến trình route discovery mới nếu như không tồn tại tuyến thích hợp trong Route cache.
Hình 2.8.Minh họa cơ chế duy trì thông tin định tuyến
2.4. Giao thức định tuyến AODV (Ad-hoc On Demand Distance Vector)
Giao thức định tuyến AODV là một trong những giao thức định tuyến theo cơ chế phản ứng trong hệ thống mạng MANET. Tương tự như giao thức DSR, AODV cũng phát gói tin broadcast để yêu cầu tìm đường khi có nhu cầu. Tuy nhiên điểm khác biệt cơ bản đối với giao thức DSR là AODV sử dụng nhiều cơ chế khác để duy trì thông tin bảng định tuyến, chẳng hạn như nó sử dụng bảng định tuyến truyền thống để lưu trữ thông tin định tuyến với mỗi entry cho một địa chỉ đích [3].
AODV không sử dụng cơ chế Source Routing và cũng không cần biết thông tin về các node lân cận của nó, nó dựa trên các entry của bảng định tuyến để 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 tuyến không còn giá trị trong quá trình cập nhật bảng định tuyến) để loại bỏ những tuyến 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ó [4].
Tương tự như cơ chế hoạt động của DSR, quá trình định tuyến của AODV cũng bao gồm 2 cơ chế chính: cơ chế khám phá tuyến và cơ chế duy trì thông tin định tuyến. 2.4.1. Cơ chế khám phá tuyến (Route Discovery)
Cơ chế khám phá tuyến sẽ được thiết lập khi một node nguồn có nhu cầu trao đổi thông tin với một node khác trong hệ thống mạng. Trong hệ thống mạng MANET hoạt động theo giao thức AODV, mỗi node trong hệ thống mạng luôn duy trì 2 bộ đếm: Bộ đếm Sequence Number và Bộ đếm REQ_ID. Cặp thông tin <Sequence Number, REQ_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 [4]:
- Đối với Sequence Number:
o 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 đó.
o Khi nhận được một gói tin RREP gửi từ node đí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 REQ_ID: Khi có một sự thay đổi trong toàn bộ các node 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ố REQ_ID sẽ được tăng lên khi node khởi động một tiến trình route discovery mới.
Source address Request ID Source sequence No. Destination address Destination sequence No. Hop count
Hình 2.9.Các trường trong gói tin RREQ
Tiến trình khám phá tuyến được khởi động khi 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ân cận của nó. Thông tin trong RREQ ngoà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ân cận nhận được gói RREQ, nó sẽ kiểm tra tuần tự theo các bước:
Lưu đồ 2.2.Cơ chế xử lý khám phá tuyến 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à không xử lí thêm. Ngược lại chuyển qua bước 2.
- Bước 2: Nếu trong bảng định tuyến của nó chứa tuyến đến đích, thì sẽ kiểm tra giá trị Destination sequence number trong entry chứa thông tin về tuyến với số Destination sequence number trong gói RREQ, nếu số Destination sequence number trong RREQ lớn hơn số Destination squence number trong entry thì nó sẽ không sử dụng thông tin trong entry của bảng định tuyến để trả lời cho node nguồn mà nó sẽ tiếp tục phát Broadcast gói RREQ đó đến cho các node lân cận của nó. Ngược lại nó sẽ
Trƣớc đó node chƣa nhận RREQ? <Source, Broadcast_id>
Hủy gói RREQ
Y
Node không là đích?
N
Không có tuyến trong Route cache?
Hoặc
Có tuyến nhƣng DSN của Route cache nhỏ hơn DSN của RREQ
N
Y
Phản hồi RREP về nguồn
N
- Thiết lập đƣờng dẫn ngƣợc về node phát RREQ - Hop_cnt = Hop_cnt + 1
Y
Phát RREQ đến các lân cận
Thêm <Source, Request_id> vào Route cache của node Bắt đầu tiến trình khám phá
tuyến tại nguồn
Kết thúc tiến trình khám phá tuyến
Kết thúc tiến trình xử lý gói RREQ đã nhận
phát Unicast cho gói RREP ngược trở lại cho node lân cận của nó để báo đã nhận gói RREQ. Gói RREP ngoài các thông tin như: địa chỉ nguồn, địa chỉ đích,… còn chứa các thông tin: destination sequence number, hop-count, TTL. Ngược lại thì qua bước 3.
- Bước 3: Nếu trong bảng định tuyến của nó không có tuyến đến đích thì nó sẽ tăng số Hop-count lên 1, đồng thời nó sẽ tự động thiết lập một tuyến ngược (Reverse path) từ nó đến node nguồn bằng cách ghi nhận lại địa chỉ của node lân cận mà nó nhận gói RREQ lần đầu tiên. Entry chứa tuyến ngược này sẽ được tồn tại trong một khoảng thời gian đủ để gói RREQ tìm tuyến đến đích và gói RREP phản hồi cho node nguồn, sau đó entry này sẽ được xóa đi.
Source address
Destination address
Destination
sequence No. Hop count Life - time Hình 2.10.Các trường trong gói tin RREP
Quá trình kiểm tra này sẽ lặp tuần tự cho đến khi gặp node đích hoặc một node trung gian mà có các đều kiện thỏa mãn bước 2. Trong quá trình trả về gói RREP, một node có thể nhận cùng lúc nhiều gói RREP, khi đó nó sẽ chỉ xử lí gói RREP có số Destination Sequence number lớn nhất, hoặc nếu cùng số Destination sequence number thì nó sẽ chọn gói RREP có số Hop-count nhỏ nhất. Sau đó nó sẽ cập nhật các thông tin cần thiết vào trong bảng định tuyến của nó và chuyển gói RREP đi.
2.4.2. Cơ chế duy trì thông tin định tuyến (Route Maintenance)
Như đã nhận xét ở trên, cơ chế hoạt động của AODV là không cần phải biết thông tin về các node lân cận, chỉ cần dựa vào các entry trong bảng định tuyến. Vì vậy, khi một node nhận thấy rằng Next hop (chặng kế tiếp) của nó không thể tìm thấy, thì nó sẽ phát một gói RRER (Route Error) khẩn cấp với số Sequence number bằng số Sequence number trước đó cộng thêm 1, Hop count bằng ∞ và gửi đến tất cả các node lân cận đang ở trạng thái active, những node đó sẽ tiếp tục chuyển gói tin đó đến các node lân cận của nó, ... và cứ như vậy cho đến khi tất cả các node trong mạng ở trạng thái active nhận được gói tin này [4].
Sau khi nhận thông báo này, các node sẽ xóa tất cả các tuyến có chứa node hỏng, đồng thời có thể sẽ khởi động lại tiến trình khám phá tuyến nếu nó có nhu cầu định tuyến dữ liệu đến node bị hỏng đó bằng cách gửi một gói tin RREQ (với số Sequence number bằng số Sequence number mà nó biết trước đó cộng thêm 1) đến các node lân cận để tìm đến địa chỉ đích.
2.5. Giao thức cải tiến N-AODV
Như đã đề cập ở trên, mạng MANET là một mạng động tự tổ chức mà không cần bất kì sự quản trị hay hỗ trợ về hạ tầng nào. Nếu hai node không nằm trong phạm vi truyền phát của nhau thì các node khác cần đóng vai trò như các router trung gian cho việc truyền thông giữa hai node này. Hơn nữa, các thiết bị di động di chuyển một cách độc lập, không lường trước và truyền thông thông qua hệ thống mạng thay đổi động. Bởi vậy, tần suất thay đổi topo của mạng là một thách thức lớn cho rất nhiều vấn đề quan trọng, trong đó có vấn đề về hiệu năng của giao thức định tuyến trong mạng.
Các giao thức định tuyến chủ ứng luôn yêu cầu các node trao đổi thông tin định tuyến theo kì hạn và tính toán định tuyến liên tục giữa bất kì node nào trong mạng, bất chấp việc có sử dụng kết quả định tuyến này hay không. Điều này có nghĩa rằng một phần lớn tài nguyên mạng như năng lượng và băng thông sẽ bị lãng phí và đây là điều