Giao thức DSR (Dynamic Source Routing

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Đánh giá dung lượng MANET theo số nút và độ linh động của nút Luận văn ThS Công nghệ thông tin (Trang 20 - 25)

Chương 3. CÁC GIAO THỨC ĐỊNH TUYẾN CHÍNH TRONG MẠNG MANET

3.3. Phân loa ̣i các giao thức định tuyến trong mạng M ANET

3.3.1. 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ề đường đi đến đích. Phần Header của gói dữ liệu sẽ lưu trữ thứ tự các nút mà gói tin cần phải đi qua để đạt tới đích. Do vậy, các nút trung gian chỉ cần giữ liên lạc với các nút hàng xóm của nó để chuyển tiếp các gói tin.

Tại mỗi một nút trong mạng luôn duy trì một bộ nhớ đệm (Router Cache), đây là cấu trúc dữ liệu lưu trữ các con đường đã biết. Khi có đường đi tồn tại trong Router Cache, nút sẽ ghi thông tin về đường đi vào từng gói tin cần truyền và thực hiện việc truyền trên con đường đã chọn. Ngược lại, khi không tồn tại đường đi trong Router Cache hoặc có tồn tại đường đi nhưng không còn hiệu lực, DSR sẽ thực hiện cơ chế phát hiện đường (Route Discovery) bằng cách gởi các gói tin quảng bá Route Request đến các nút lân cận trên toàn bộ mạng. Các nút trung gian nhận được gói tin quảng bá sẽ kiểm tra đường đi trong Route Cache. Khi đường đi đượ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 [10], [12].

Dưới đây là các trường trong gói tin Route Request (RREQ):

Hình 3.2. Các trường trong gói tin Route Request [12, 18]

Trong đó:

- Trường type chứa giá trị của kiểu gói tin (0x32).

- Trường floodIDs cần thiết để làm cho phù hợp với các gói tin tương ứng và để điểu khiển quá trình flooding. Chỉ có duy nhất một RREQ chứa một cặp (sender, floodID) trong suốt quá trình broadcast. Trường floodID được thiết kế gồm 16 bít, tăng lên trong quá trình flooding bắt đầu từ giá trị 0.

- Các trường Sender và Receive chứa địa chỉ của nút nguồn và nút đích của một quá trình định tuyến trọn vẹn.

- Trường TTL mô tả chiều dài của quá trình định tuyến hoàn chỉnh.

Ví dụ:

Định tuyến DSR trong đó nút 2 là nguồn, nút 5 là đích (Hình 3.3):

Hình 3.3. Định tuyến DSR (nút 2 là nguồn, nút 5 là đích) [18]

Quá trình gửi gói tin RREQ (Hình 3.4):

Hình 3.4. Route Request (nút 2 là nguồn, nút 5 là đích) [18]

Như vậy, hoạt động của giao thức DSR bao gồm hai cơ chế chính: cơ chế tạo thông tin định tuyến (Route Discovery) và cơ chế duy trì thông tin định tuyến (Route Maintanance).

3.3.1.1. Cơ chế tạo thông tin định tuyến (Route Discovery)

Route Discovery cho phép các nút trong mạng Ad Hoc tìm kiếm đường đi đến đích một cách tự động thông qua các nút 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 nút 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 nút nguồn và là số không trùng nhau. Khi một nút nhận gói RREQ thì nó sẽ tiến hành kiểm tra thông tin trong RREQ như sau:

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ó đường đi đến nút đích mà còn hiệu lực hay không. Nếu có đường đi đến đích thì nó sẽ phản hồi lại cho nút nguồn bằng gói Route Reply (RREP) chứa thông tin về đường đi đế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 nút nguồn gói Route Reply (RREP) chứa thông tin về đường đi đế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 nút láng giềng của nó. Các nút láng giềng 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 nút nguồn nhận được thông tin về đường đi đến đích hoặc các nút láng giềng sẽ gửi 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 Ad Hoc với mô hình truyền thông như hình 2. Nút S cần truyền dữ liệu đến nút D.

Hình 3.5. Mô hình mạng Ad Hoc gồm 12 nút [18]

+ Giả thuyết 1: Trong Route Cache của các nút hiện tại là rỗng.

- Nút S sẽ phát gói tin Router Request (RREQ) đến các nút lân cận của nó (Hình 3.6)

Hình 3.6. Nút S phát gói tin RREQ đến các nút lân cận A, E, F [18]

- Nút 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ề đường đi đến đích. Theo giả thuyết ban đầu thì trong Route Cache sẽ không có thông tin về đường đi đến đích. Do đó, nút E, F, A sẽ cập nhật thông tin về đường đi 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 nút lân cận của nó.

- Nút A, E, F sẽ phát gói tin RREQ đến các nút lân cận của nó (Hình 3.7)

Hình 3.7. Nút A, F phát gói tin RREQ đến các nút F, B, A, K, G [18]

- Tại thời điểm này tại A và F đều nhận gói tin RREQ (vì A là nút láng giềng 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 tìm kiếm đường đi vẫn chưa hoàn thành vì chưa đạt đến đích. Vì vậy, các nút lân cận sẽ lưu trữ thông tin về đường đi đến nguồn trong Route Cache và tiếp tục gửi gói tin RREQ đến các nút lân cận của nó.

- Nút B, K, G sẽ phát gói tin RREQ đến các nút lân cận của nó (Hình 3.8)

Hình 3.8. Nút B, K, G phát gói tin RREQ đến các nút C, G, H, K [18]

Tại thời điểm này, nút H cùng nhận gói RREQ từ 2 nút 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á đường đi vẫn tiếp tục thực hiện. Nút H, C sẽ phát gói tin RREQ đến các nút lân cận của nó (Hình 3.9)

Hình 3.9. Nút H, C phát gói tin RREQ đến các nút láng giềng I, D, J [18]

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 DRS 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 đường đã tìm được.

o Nút I vẫn tiếp tục phát gói RREQ để tìm đường đế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 đường này.

o Nút 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 nút 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ữ đường đi ngược lại từ đích. Sau khi nút nguồn S nhận được gói tin phản hồi RREP, S sẽ biết được được đường đi đến đích và tiến hành gửi dữ liệu theo con đường này.

Hình 3.10. Nút D phát gói tin RREP về nút S theo đường đã khám phá [18]

- Như vậy, trong trường hợp này sẽ có 2 con đường đi từ nút S đến nút 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 con đường này để truyền dữ liệu từ nút S đến nút D. Trong quá trình truyền dữ liệu nếu đường thứ nhất đang sử dụng bị hỏng thì giao thức sẽ sử dụng đường thứ hai và ngược lại. Trong

trường hợp cả hai đường bị hỏng thì tiến trình khám phá đường (Router Discovery) sẽ tự động thực hiện lại.

+ Giả thuyết 2: Trong Route Cache của các nút là không rỗng. Giả sử Route Cache của nút B đã lưu trữ đường đi đến D. Tiến trình khám phá đường đi 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 đường đi đến D chính là đích, nên tiến trình khám phá đường sẽ dừng và nút B sẽ gửi gói tin phản hồi RREP về nguồn thông qua đường đi đã xác định.

3.3.1.2. Cơ chế duy trì thông tin định tuyến (Route Maintanance)

Route Maintanance cho phép các nút 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 nút 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 nút kế tiếp hay chưa (thông qua sự phản hồi thông tin của nút nhận). Trong trường hợp một nút nào đó phát hiện rằng gói tin không thể truyền đến nút kế tiếp, nó sẽ gởi gói Route Error (RERR) cho nút nguồn để thông báo tình trạng hiện thời của liên kết và địa chỉ của nút kế tiếp mà không thể chuyển đi. Khi nút nguồn nhận được gói RERR, nó sẽ xóa con đường đi qua liên kết bị hỏng trong Route cache và tìm một đường đi 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 đường đi thích hợp trong Route cache.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Đánh giá dung lượng MANET theo số nút và độ linh động của nút Luận văn ThS Công nghệ thông tin (Trang 20 - 25)

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

(65 trang)