Giao thức định tuyến điều khiển theo yêu cầu DSR và AODV

Một phần của tài liệu Nghiên cứu nâng cao hiệu năng giao thức định tuyến cho mạng MANET (Trang 52)

DSR là giao thức định tuyến điều khiển theo yêu cầu sử dụng cơ chế định tuyến nguồn, nghĩa là bên gửi sẽ biết toàn bộ thông tin về đường đi đến đích. Phần thông tin điều khiển của gói tin sẽ lưu trữ thứ tự các nút mà gói tin cần phải đi qua để đến đích. Do vậy, các nút trung gian chỉ cần giữ kết nối với các nút láng giềng 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 Route Cache (bộ nhớ đệm các đường đi), đây là cấu trúc dữ liệu lưu trữ các lộ trình đã biết. Khi có đường đi tồn tại trong Route Cache, các gói tin sẽ nhận thông tin về đường đi và thực hiện việc truyền tin trên lộ trình đã chọn. Ngược lại, khi không tồn tại đường đi trong Route Cache hoặ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ế khám phá lộ trình bằng cách gửi các gói tin quảng bá RREQ đến các nút láng giềng 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 RREP sẽ chứa thứ tự các chặng đến đí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 giai đoạn chính: khám phá lộ trình định tuyến (Route Discovery) và duy trì lộ trình định tuyến (Route Maintanance) [4](pp.178-186)[23][81](pp.106-110)[93].

Khám phá lộ trình định tuyến

Khám lộ trình định tuyến thực hiện 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 khám phá lộ trình định tuyến sẽ phát gói RREQ đến các nút láng giềng của nó trong mạng. Ngoài các trường cơ bản 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ẽ thực hiện kiểm tra thông tin trong RREQ như sau:

38

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 đã nhận thì nó sẽ loại bỏ gói RREQ và không xử lí gì thêm. Ngược lại thì qua bước 2.

Bƣớc 2: 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 và còn hiệu lực thì nó sẽ phản hồi lại cho nút nguồn bằng gói 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: Kiểm tra địa chỉ đích cần tìm có trùng với địa chỉ của nó hay không? Nếu trùng thì nó gửi lại cho nút nguồn gói 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 quảng bá gói 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 RREQ sẽ thực hiện việc kiểm tra thông tin đường đi (quay về bước 1), trường hợp có nghĩa là không tìm được đường đi đến đích theo các bước trên từ một nút trung gian và nó tiếp tục thực hiện việc phát gói tin quảng bá đến khi tìm được đường đi khác từ nút trung gian đó đến nút đích theo thuật toán khám phá lộ trình.

Để thấy rõ hơn cơ chế khám phá lộ trình định tuyến như mô tả bằng các bước của thuật toán đã trình bày ở trên, Hình 2.2 dưới đây trình bày lưu đồ thuật toán khám phá lộ trình của giao thức định tuyến DSR.

39

Hình 2.2. Cơ chế xử l khám phá lộ trình tại nút của DSR

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 thông tin thông báo không thể định tuyến đến đích. Gói RREP được gửi đến nút nguồn bằng cơ chế phát đơn hướng (Unicast) với đường đi hướng nguồn (Source Route) là đảo ngược Source Route trong gói RREQ [66].

Phát gói RREQ đến các nút láng giềng

Trước đó nút đã nhận RREQ?

Hủy gói RREQ N

Y

Y

Phản hồi RREP về nguồn Sai

N

Kết thúc tiến trình khám phá

lộ trình

Thêm <Source, Request_ID> vào Router Cache của nút

Nút có phải là nút đích?

Kết nối đường đi trong RREQ và đường đi đã có trong Route Cache, cập nhật vào RREQ Bắt đầu tiến trình khám phá lộ trình tại nút nguồn Kết thúc tiến trình xử lý gói RREQ đã nhận Đúng Sai Đúng Đúng Sai Nút có đường đi đến đích

trong Route Cache?

Cập nhật thông tin về nguồn trong Route Cache Cập nhật lại đường đi cho gói RREQ

40

Xét ví dụ về quá trình khám phá lộ trình với mô hình mạng Ad hoc bao gồm 12 nút. Chúng ta xét nút S cần truyền dữ liệu đến nút D với giả thiết các đường đi có sẵn các kết nối như mô tả ở Hình 2.3

Hình 2.3. Mô hình mạng Ad hoc

Chúng ta thực hiện phân tích nguyên lý hoạt động của thuật toán khám phá lộ trình trong các trường hợp sau:

Trƣờng hợp 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 RREQ đến các nút láng giềng của nó (Hình 2.4). Nút E, F, A 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ả thiết ban đầu thì trong Route Cache sẽ không có thông tin đườ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 RREQ, đồng thời sẽ phát gói RREQ đến các nút láng giềng của nó.

Hình 2.4. Nút S phát gói RREQ đến các nút láng giềng E, F, A Bảng 2.2. Thông tin lưu trữ trong Route Cache tại thời điểm 1

Nút S A B C D E F G H I J K

Route cache - [S] - - - [S] [S] - - - - - Nút E, F, A sẽ phát gói RREQ đến các nút láng giềng của nó (Hình 2.5).

S E F A K G H I D C B J [S] [S] [S] S D H B J C I K A F G E

41

Hình 2.5. Nút A, F phát gói RREQ đến các nút B, F, K, G

Do nút E không phải là nút đích và không còn nút láng giềng và trả về kết quả đường đi từ E→S không phải là đích, do đó hướng đi này bị loại. Do đó, tại thời điểm này tại A và F đều nhận gói RREQ (vì A là nút láng giềng của F và ngược lại), hai gói tin này sẽ bị hủy vì đã tồn tại trong Route Cache 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áng giềng 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 RREQ đến các nút láng giềng của nó.

Bảng 2.3. Thông tin lưu trữ trong Route Cache tại thời điểm 2

Nút S A B C D E F G H I J K

Route cache - [S] [S,A] - - [S] [S] [S,F] - - - [S,F] Nút G, K, B sẽ phát gói RREQ đến các nút láng giềng của nó (Hình 2.6).

Hình 2.6. Nút G, K, B phát gói RREQ đến các nút G, K, H, C

Tại thời điểm này, nút H cùng nhận gói RREQ từ hai nút K và G. Trong trường hợp này, gói điều khiển nào đến sau sẽ bị loại bỏ. Giả sử gói tin gửi từ K đến sau, vì thế sẽ loại bỏ gói RREQ này. Tiến trình khám phá lộ trình vẫn tiếp tục thực hiện.

Bảng 2.4. Thông tin lưu trữ trong Route Cache tại thời điểm 3

Nút S A B C D E F G H I J K

Route cache - [S] [S,A] [S,A,B] - [S] [S] [S,F] [S,F,G] - - [S,F] Nút H, C sẽ phát gói RREQ đến các nút láng giềng của nó (Hình 2.7)

S E F A K G H I D C B J [S,F] [S,A] [S,A] [S,F] [S,F] S E F A K G H I D C B J [S,F,G] [S,A,B] [S,F,K] [S,F,G] [S,F,K]

42

Hình 2.7. Nút H, C phát gói RREQ đến các nút láng giềng I, D, J Bảng 2.5. Thông tin lưu trữ trong Route Cache tại thời điểm 4 Nú t S A B C D E F G H I J K Route cach e - [S ] [S,A ] [S,A,B ] [S,A,B,C ] [S ] [S ] [S,F ] [S,F,G ] [S,F,G,H ] - [S,F ] 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á lộ trình đến đích dừng. Giao thức định tuyến sẽ thực hiện các công việc sau:

- D sẽ phát gói tin phản hồi RREP về nguồn S thông qua đường đi đã tìm được;

- Nút I vẫn tiếp tục phát gói RREQ để tìm đường đi đến D. Tuy nhiên, khi đến D thì gói RREQ sẽ lập tức bị hủy vì D đã nhận gói này trước đó, đồng thời D gửi gói RREP về nguồn S thông qua lộ trình này theo Hình 2.7;

- Nút J vẫn tiếp tục phát gói RREQ để tìm đường đi đến D. Tuy nhiên, trong trường hợp này nút J không tìm thấy nút đích D và sẽ gửi gói RREP về nguồn theo hướng đường đi từ J về S như Bảng 2.6 và bị loại.

Bảng 2.6. Thông tin lưu trữ trong Route Cache khi hoàn thành khám khá lộ trình

Nút S A B C D E F G H I J K

Route cach

e

- [S] [S,A] [S,A,B] [S,A,B,C] [S] [S] [S,F] [S,F,G] [S,F,G,H] [S,A,B,C] [S,F]

Trong khi các gói 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 phản hồi RREP, S sẽ biết được đường đi đến đích và thực hiện gửi dữ liệu theo lộ trình này theo Hình 2.8.

S E F A K G H I D C B J [S,F,G,H] [S,A,B,C] [S,A,B,C] S E F A K G H I D C B J [S,A,B,C,D]

43

Hình 2.8. Nút D phát gói RREP về nút S theo lộ trình đã khám phá

Như vậy, trong trường hợp này sẽ có 2 lộ trình từ nút S đến nút D đó là: S, A, B, C, D và S, F, G, H, I, D. Giao thức định tuyến DSR sẽ sử dụng một trong hai đường đi 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á lộ trình sẽ tự động thực hiện lại.

Trƣờng hợp 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á lộ trình vẫn thực hiện bình thường như trong trường hợp 1. Tuy nhiên, khi đến B thuật toán 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á lộ trình sẽ dừng và nút B sẽ gửi gói tin phản hồi RREP về nguồn S thông qua đường đi đã xác định.

Duy trì khám phá định tuyến

Cơ chế duy trì khám phá định tuyến cho phép các nút trong hệ thống mạng tự động duy trì lộ trình đị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 một trường hợp nào đó mà nút đó 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 kết nối 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 lộ trình bị mất kết nối trong Route cache và tìm một lộ trình khác đã tồn tại trong Route cache hoặc sẽ khởi động một tiến trình phám phá lộ trình mới để xác định lại lộ trình từ nguồn đến đích theo yêu cầu.

2.2.2 AODV

Giao thức định tuyến AODV là giao thức định tuyến điều khiển theo yêu cầu, tương tự như giao thức định tuyến DSR, AODV cũng thực hiện phát gói tin quảng bá để yêu cầu khám phá lộ trình khi có yêu cầu tìm đường đi. Tuy nhiên, điểm khác biệt cơ bản của giao thức AODV đối với DSR là sử dụng nhiều cơ chế khác nhau để 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 nút trung gian là một cổng vào định tuyến của nút hay còn gọi là nút chứa thông tin định tuyến (route entry) cho một yêu cầu đến địa chỉ đích.

AODV không sử dụng cơ chế định tuyến nguồn và cũng không cần biết thông tin về các nút láng giềng của nó, AODV dựa trên các cổng vào định tuyến của từng nút trong bảng định tuyến để phát gói RREP về nút nguồn và nút 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 (chỉ số thứ tự trong bảng định tuyến), kỹ thuật này dùng để nhận ra các đường đi không còn giá trị trong quá trình cập nhật bảng định tuyến để loại bỏ ra khỏi bảng định tuyến. Mỗi nút sẽ có một bộ tăng số Sequence Number riêng cho nó.

44

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 giai đoạn: khám phá lộ trình định tuyến và duy trì lộ trình định tuyến [4](pp.186- 190)[21][81](pp.101-106)[93].

Khám phá lộ trình định tuyến

Khám phá lộ trình định tuyến sẽ được thiết lập khi một nút nguồn có nhu cầu truyền thông tin đến một nút khác trong mạng. Trong mạng MANET hoạt động theo giao thức định tuyến AODV, mỗi nút trong mạng luôn duy trì 2 bộ đếm: Sequence number và Request ID. Trong đó cặp thông tin <Sequence number, Request ID> là định danh duy nhất cho một gói RREQ. Giá trị của cặp thông tin này sẽ được thay đổi như sau:

 Đối với Sequence number:

- Trước khi một nút khởi động tiến trình khám phá lộ trình, điều này nhằm tránh xung đột với các gói RREP trước đó;

- Khi nhận được một gói RREP gửi từ nút đích để trả lời gói 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 Request ID:

- Khi có sự thay đổi trong toàn bộ các nút láng giềng của nó dẫn đến sẽ có một số đường đi trong bảng định tuyến sẽ không còn hiệu lực. Số Request ID sẽ được tăng lên khi nút khởi động lại một tiến trình khám phá lộ trình 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 RREQ

Tiến trình khám phá lộ trình được khởi động khi nào một nút muốn truyền dữ liệu với một nút khác mà trong bảng định tuyến của nó không có thông tin định tuyến đến nút đích đó. Khi đó nó sẽ phát quảng bá một gói RREQ cho các nút láng giềng 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 nút nguồn, số Broadcast ID, giá trị Sequence number được biết lần cuối cùng của nút đích.

Khi các nút láng giềng nhận được gói RREQ, nó sẽ kiểm tra tuần tự theo các bước:

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 RREQ 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 đường đi đến đích, thì sẽ kiểm tra

giá trị Destination sequence number (DSN) trong cổng vào chứa thông tin định tuyến của nút về đường đi với số DSN trong gói RREQ, nếu số DSN trong gói RREQ lớn hơn số DSN trong nút thì nó sẽ không sử dụng thông tin trong nút chứa bảng định tuyến để trả lời

45

cho nút nguồn mà nó sẽ tiếp tục phát quảng bá gói RREQ đó đến các nút láng giềng của nó. Ngược lại nó sẽ phát đơn hướng (Unicast) cho gói RREP ngược trở lại cho nút láng giềng của nó để báo đã nhận gói RREQ. Trong 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: DSN, Hop count, Time-To-Live (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ó đường đi đế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 đường đi ngược (Reverse path)

Một phần của tài liệu Nghiên cứu nâng cao hiệu năng giao thức định tuyến cho mạng MANET (Trang 52)