Giao thức Phƣơng pháp cập nhật Tính toán lộ trình Số lộ trình Duy trì lộ trình DSDV Quảng bá (multicast)
Trước, phân tán Đơn đường (đường đi ngắn nhất)
Gửi các cập nhật định kỳ và theo sự kiện
OLSR Quảng bá Trước, thực hiện bởi nút nguồn
Đơn đường (đường đi ngắn nhất)
Gửi các cập nhật TORA Quảng bá Phản ứng theo
yêu cầu, quảng bá thông báo truy vấn
Đa đường Xóa đường, thông báo đến các nút láng giềng cập nhập
AODV Đơn hướng (unicast)
Phản ứng theo yêu cầu, quảng bá thông báo truy vấn
Đơn đường (đường đầu tiên nhận được bởi thông báo trả lời)
Xóa đường, thông báo đến tất cả các nút nguồn bị ảnh hưởng
DSR Đơn hướng Phản ứng theo yêu cầu, quảng bá thông báo truy
Đa đường Xóa đường, thông báo cho nút nguồn
37 vấn
Qua trình bày và so sánh một số đặc điểm chính của các giao thức định tuyến, mỗi giao thức đều thực hiện trên số điều kiện và môi trường nhất định. Với việc trình bày một số giao thức cơ bản và phổ biến như trên cũng như các nghiên cứu, đánh giá so sánh các giao thức định tuyến được trình bày ở các tài liệu [15][67][79]; tác giả nhận thấy rằng, tùy theo từng ứng dụng, từng loại mạng cụ thể để chọn giao thức phù hợp để tăng hiệu quả của hệ thống mạng. Tác giả cũng lựa chọn giao thức định tuyến điều khiển theo yêu cầu để nghiên cứu và cải tiến vì các giao thức định tuyến loại này phù hợp với các hệ thống mạng MANET triển khai phổ biến trong thực tế, do đặc điểm ứng dụng mạng MANET đối với các hệ thống mạng không dây có số lượng nút mạng nhiều và di chuyển là phổ biến hiện nay [32][78][84]. Tác giả cũng đánh giá rằng hai giao thức DSR và AODV với các đặc điểm về phương thức hoạt động gần giống nhau và được áp dụng nhiều cho các hệ thống mạng MANET sẽ được chọn lựa để phân tích, trình bày chi tiết hơn ở phần dưới đây.
2.2 Giao thức định tuyến điều khiển theo yêu cầu DSR và AODV 2.2.1 DSR 2.2.1 DSR
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 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 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.