CHƢƠNG 1 TỔNG QUAN VỀ MẠNG MANET
2.3. Một số giao thức định tuyến cơ bản trên mạng MANET
2.3.2. Giao thức DSR (Dynamic Source Routing)
DSR (Dynamic Source Routing) là giao thức định tuyến đơn giản và hiệu quả được thiết kế riêng cho mạng MANET. DSR cho phép mạng tự động tổ chức và cấu hình mà không cần đến sự can thiệp của người quản trị hoặc cơ sở hạ tầng sẵn có của mạng.
Giao thức DSR là giao thức định tuyến phản ứng (Reactive) sử dụng cơ chế định tuyến nguồn (source routing), nghĩa là bên gửi sẽ biết toàn bộ thông tin về tuyến đến đích. Phần Header của gói dữ liệu sẽ lưu trữ thứ tự các node mà gói tin cần phải đi qua để đạt tới đích. Do vậy, các node trung gian chỉ cần giữ liên lạc với các node lân cận của nó để chuyển tiếp các gói tin.
Tại mỗi một node trong mạng luôn duy trì một bộ nhớ đệm (Route cache), đây là cấu trúc dữ liệu lưu trữ các tuyến đã biết. Khi có tuyến tồn tại trong Route cache, các gói tin sẽ nhận thông tin về tuyến và thực hiện việc truyền tin trên tuyến đã chọn. Ngược lại, khi không tồn tại tuyến trong Route cache hoặc có tồn tại tuyến nhưng không còn hiệu lực, DSR sẽ thực hiện cơ chế khám phá tuyến (Route Discovery) bằng cách gửi các gói tin quảng bá Route Request đến các node lân cận trên toàn bộ mạng. Các node trung gian nhận được gói tin quảng bá sẽ kiểm tra tuyến trong Route Cache. Khi tuyến được tìm thấy, gói tin Route Reply sẽ chứa thứ tự các chặng tới đích và được truyền trở lại nguồn.
Như vậy, hoạt động của giao thức DSR bao gồm hai cơ chế chính: cơ chế khám phá tuyến (Route Discovery) và cơ chế duy trì thông tin định tuyến (Route Maintenance) [4], [5].
2.3.2.1. Cơ chế khám phá tuyến (Route Discovery)
Route Discovery cho phép các node trong mạng tìm kiếm tuyến đến đích một cách tự động thông qua các node trung gian. Tiến trình tạo thông tin định tuyến sẽ phát gói tin Route Request (RREQ) đến các node lân cận của nó trong mạng. Ngoài các
trường bình thường như: địa chỉ nguồn, địa chỉ đích, đường dẫn, … thông tin trong gói RREQ còn chứa một số request ID là một số được tạo ra bởi node nguồn và là số không trùng nhau. Khi một node nhận gói RREQ thì nó sẽ tiến hành kiểm tra thông tin trong RREQ như sau:
Lưu đồ 2.1.Cơ chế xử lí khám phá tuyến tại node của DSR
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