Khám phá tuy ến (Route Discovery)

Một phần của tài liệu Cải thiện lưu lượng giao thông sử dụng thuật toán virtual traffic light và giao thức định tuyến dymo trên nền omnet++ (Trang 48 - 59)

3.2 Giao th ức định tuyến trong mạng VANET

3.2.1 DYNAMIC SOURCE ROUTING (DSR)

3.2.1.2 Khám phá tuy ến (Route Discovery)

Route Discovery cho phép các node trong mạng Ad Hoc tìm kiếm đường đi đế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 đồ 3.1: Cơ chế khám phá tuyến của tại node của DSR

Phát RREQ đến các node hàng xóm

Trước đó node chưa nhận RREQ?

<Source, Request_id>

Hủy gói RREQ N

Node không có đường đi đế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 Router 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á

đường Thêm <Source, Request_id> vào Router cache

của node

Nối đường đi trong RREQ và đường đi đã có trong Router cache, cập nhật vào

RREQ N

Bắt đầu tiến trình khám phá đường 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ó đường đi đến node đí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 node 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 node 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 node 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 node nguồn nhận được thông tin về đường đi đế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 Ad Hoc với mô hình truyền thông như hình 3.2. Nút S cần truyền dữ liệu đến nút D.

Hình 3.2. Mô hình mạng Ad Hoc gồm 12 nút

S

E

A

F

B

K

G H

I

S

D J

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 2.5.1)

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

- 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ó.

Bảng 3.1 Thông tin lưu trữ trong Route Cache tạithời điểm 1

- 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 2.5.2)

Hình 3.4 Nút A, F phát gói tin RREQ đến các nút 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à 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ó.

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

- 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 2.5.3)

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

- 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.

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

- 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.6)

Hình 3.6 Nút H, C phát gói tin RREQ đến các nút láng giềng I, D, J Bảng 3.4 Thông tin lưu trữ trong Route Cache tạithờ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 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.7 Nút D phát gói tin RREP về nút S theo đường đã khám phá

- 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.2.1.3 Duy trì 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 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à địa 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 con đường đi mà 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.

Hình 3.8 Minh họa cơ chế duy trì thông tin định tuyến 3.2.2 Giao thức 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 theocơ 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. [7]

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áng giềng của nó, AODV 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 con đường đi không còn giá trị trong quá trình cập nhật bảng định tuyến) để loại bỏ những đường đi 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ó. [5]

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ế tạo thông tin định tuyến và cơ chế duy trì thông tin định tuyến.

3.2.2.1 Khám phá tuyến (Route Discovery)

Cơ chế tạo thông tin định tuyến sẽ được thiết lập khi một nút nguồn có nhu cầu trao đổi thông tin với một nút 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 nút 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: [5]

- Đối với Sequence Number:

o Trước khi một node khởi động tiến trình route discovery, đề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ừ nút đí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 nút 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 sequen

Destination address

Destination sequen

Hop count Hình 3.9. Các trường trong gói tin RREQ

Tiến trình Route Discovery được khởi động khi nào 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á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 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áng giềng nhận được gói RREQ, nó sẽ kiểm tra tuần tự theo các bước:

Lưu đồ 3.2 Cơ chế xử lý khám phá đường tại node của AODV

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ó đường trong Router cache?

Hoặc

Có đường nhưng DSN của Router 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 hàng xóm

Thêm <Source, Request_id> vào Router cache của node Bắt đầu tiến trình khám phá

đường tại nguồn

Kết thúc tiến trình khám phá đường

Kết thúc tiến trình xử lý gói RREQ đã nhận

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 đường đi đến đích, thì sẽ kiểm tra giá trị Destination sequence number trong entry chứa thông tin về đường đi 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áng giềng của nó. Ngược lại nó sẽ phát Unicast cho gói RREP ngược trở lại cho node láng giềng 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ó đườ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 ) từ nó đến node nguồn bằng cách ghi nhận lại địa chỉ của node láng giềng mà nó nhận gói RREQ lần đầu tiên. Entry chứa đường đi ngược này sẽ được tồn tại trong một khoảng thời gian đủ để gói RREQ tìm đường đi đế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 Hop count Life time Hình 3.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 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.

3.2.2.2 Duy trì tuyến (Route Maintanance)

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 nút láng giềng, 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áng giềng đang ở trạng thái active, những node đó sẽ tiếp tục chuyển gói tin đó đến các node láng giềng 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. [5]

Sau khi nhận thông báo này, các node sẽ xóa tất cả các đường đi có chứa node hỏng, đồng thời có thể sẽ khởi động lại tiến trình Route discovery 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áng giềng để tìm đến địa chỉ đích.

Một phần của tài liệu Cải thiện lưu lượng giao thông sử dụng thuật toán virtual traffic light và giao thức định tuyến dymo trên nền omnet++ (Trang 48 - 59)

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

(97 trang)