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) từ nó đến nút nguồn bằng cách ghi nhận lại địa chỉ của nút láng giềng mà nó nhận gói RREQ lần đầu tiên. Nút định tuyến 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 nút nguồn, sau đó thông tin định tuyến này sẽ được xóa đi.
Source address Destination address Destination sequence number
Hop count Life-time
Hình 2.10. Các trường trong gói RREP
Quá trình kiểm tra này sẽ lặp tuần tự cho đến khi gặp nút đích hoặc một nút trung gian mà có các điều kiện theo yêu cầu của bước 2. Trong quá trình trả về gói RREP, một nút có thể nhận cùng lúc nhiều gói RREP, khi đó nó sẽ chỉ xử lý gói RREP có số DSN lớn nhất, hoặc nếu cùng số DSN 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.
Để 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.11 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 AODV.
46
Hình 2.11. Cơ chế xử l khám phá lộ trình tại nút của AODV
Duy trì lộ trình định tuyến
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 mà chỉ cần dựa vào các thông tin định tuyến nút trong bảng định tuyến. Vì vậy, khi một nút 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 RERR 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ô cùng) và gửi đến tất cả các nút láng giềng đang ở trạng thái hoạt động, những nút đó sẽ tiếp tục chuyển gói tin đó đến các nút láng giềng của nó, và cứ như vậy cho đến khi tất cả các nút trong mạng ở trạng thái hoạt động nhận được gói tin này.
Sau khi nhận thông báo này, các nút sẽ xóa tất cả các đường đi có chứa nút hỏng, đồng thời có thể sẽ khởi động lại tiến trình khám phá lộ trình nếu nó có nhu cầu định tuyến
Trước đó nút đã nhận RREQ? <Source, Broadcast ID>
Hủy gói RREQ Sai
Nút đang xét là nút đích?
Có lộ trình trong Route cache? hoặc
Có lộ trình nhưng DSN của Route cache nhỏ hơn DSN của RREQ
Sai
Phản hồi RREP về nguồn Đúng
Thiết lập lộ trình dẫn ngược về nút phát gói RREQ Hop count = Hop count + 1
Sai Phát gói RREQ đến các nút láng giềng
Thêm <Source, Request ID> vào Route cache của nút
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 khám phá lộ trình Kết thúc tiến trình xử lý gói RREQ đã nhận Đúng Đúng
47
dữ liệu đến nút bị hỏng đó bằng cách gửi một gói 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 nút láng giềng để tìm đường đi đến đích.
2.3 Nghiên cứu cải tiến định tuyến cho mạng MANET 2.3.1 Một số nghiên cứu về định tuyến cho mạng MANET 2.3.1 Một số nghiên cứu về định tuyến cho mạng MANET
Như phân tích ở phần trên về các giao thức định tuyến MANET, một trong những vấn đề chúng ta quan tâm là tăng hiệu quả truyền tin của mạng trong đó tập trung cả hai đặc tính là định tính (qualitative) và định lượng (quantitative). Đối với đặc tính về định tính bao gồm xử lý phân tán, hỗ trợ kết nối đơn hướng, hoạt động dựa trên yêu cầu, khả năng bảo mật. Các đặc tính về định lượng như thông lượng dữ liệu đến điểm đích (End to End data throughput), độ trễ, thời gian khám phá lộ trình, tỷ lệ gói tin không truyền được khi có yêu cầu truyền tin [69][77]. Với đặc điểm môi trường truyền dẫn vô tuyến thì các yếu tố làm ảnh hưởng chất lượng cũng như định lượng khá cao như các nhân tố nêu ở trên theo [9][96](pp.1-15), do đó việc cải tiến các giao thức định tuyến là giải pháp quan trọng để tăng hiệu quả truyền tin. Trong đó, việc nghiên cứu để cải tiến giao thức định tuyến tập trung vào các vấn đề như sau:
+ Hiệu quả định tuyến: Đây là yêu cầu quan trọng nhất của giao thức định tuyến, với yêu cầu khám phá lộ trình và gửi các gói tin từ nguồn đến đích. Vấn đề là phải tìm được đường đi ngắn nhất theo mục tiêu đặt ra, ví dụ tìm đường đi có số nút trung gian thấp nhất, hoặc tìm đường đi với khoảng cách từ nút nguồn đến nút đích là ngắn nhất hoặc kết hợp các tiêu chí với nhau để tìm được đường đi tối ưu. Việc tìm được đường đi ngắn nhất theo nghĩa trên là tham số định tính quan trọng của trong việc đánh giá hiệu quả định tuyến [26][34][90][95];
+ Tính chịu lỗi: Trong hệ thống phân tán, việc xác định đường truyền từ nguồn đến đích và việc tránh lỗi trong việc truyền từ nguồn đến đích là điều quan trọng trong thiết kế hệ thống. Điều này cũng tương tự trong hệ thống mạng MANET, tuy nhiên do đặc điểm của mạng MANET với việc truyền từ nút đến nút theo chặng do đó việc tồn tại đường truyền từ nút nguồn đến nút đích có thể gặp nhiều lỗi hoặc mất kết nối hoặc thay đổi trong quá trình nút di chuyển. Do đó, thực hiện việc truyền tin phải thông qua các nút láng giềng với các dữ liệu dư thừa để đảm bảo không bị lỗi truyền, đây cũng là một đặc điểm trong thiết kế thuật toán định tuyến của MANET [29][85];
+ Cân bằng tải: Đây là một vấn đề cần phải quan tâm trong thuật toán định tuyến MANET, do đặc tính truyền tin từ nút sang nút theo chặng, do đó một vài nút có thể có vị trí quan trọng và hầu hết các lộ trình phải qua nút đó, khi đó sẽ xảy ra tình trạng nghẽn mạng cục bộ tại nút đó và xảy ra tình trạng mất cân bằng tải và dẫn đến tắc nghẽn mạng [13][22]. Do đó, giao thức định tuyến phải giải quyết thuật toán cân bằng tải thông qua việc định tuyến đường đi để ”tránh” các nút hoặc đường đi đã có nhiều lộ trình qua nó để đảm bảo giảm tắc nghẽn cục bộ [6][53][54];
+ Sự tiêu tốn năng lượng: Hầu hết các nút trong mạng MANET đều sử dụng nguồn pin như thiết bị di động, PDA và các thiết bị di động khác. Với yêu cầu sử dụng năng
48
lượng trong việc khám phá lộ trình, truyền tin hoặc các xử lý khác và những xử lý này phải yêu cầu năng lượng lớn, vì vậy thiết kế thuật toán hiệu quả năng lượng là yêu cầu cơ bản của MANET trong khi nguồn năng lượng pin là giới hạn [40][63];
+ Xử lý trên mạng: Đối với mạng MANET, ngoài việc tiêu tốn năng lượng của các nút còn tiêu tốn năng lượng trong quá trình truyền dữ liệu trên mạng. Ví dụ, một vi xử lý thực hiện 3 triệu phép tính thì sử dụng một năng lượng tương đương cho việc truyền 1 Kbit dữ liệu trong 100m bằng sóng radio. Do đó chúng ta có thể thấy rằng cần phải điều khiển được việc truyền dữ liệu để hiệu quả hơn tránh việc tiêu tốn năng lượng hơn khi truyền dữ liệu bằng cách chưa truyền dữ liệu nếu chưa có sự chắc chắn của kết các nối hoặc đảm bảo kết nối mới truyền dữ liệu, đây cũng là một vấn đề cần phải thực hiện trong thuật toán định tuyến [28][50];
+ Tránh tắc nghẽn: Đây là một vấn đề quan trọng của giao thức định tuyến đặc biệt đối với MANET, giống như trường hợp cân bằng tải, trường hợp tắc nghẽn là một lượng lớn gói tin hoặc lộ trình đi qua một nút và xảy ra quá trình nghẽn tại nút đó. Khi đó thì hệ thống mạng sẽ bị ngưng trệ hoặc xảy ra tình trạng mất gói tin, mất kết nối vì phải hủy đường đi qua nút mạng đó. Do đó, việc tránh tắc nghẽn là quan trọng trong giao thức định tuyến và là cách để giảm bớt tỷ lệ gói tin rơi hoặc tăng tỷ lệ thành công của gói tin truyền trong mạng [22][29][61].
+ Sự phán đoán: Khả năng phán đoán về các nút sẽ xảy ra lỗi hoặc mất kết nối trước khi chúng thực sự xảy ra trong quá trình khám phá lộ trình hoặc truyền tin, đây là một đặc tính thông minh và khả năng phán đoán giúp cho giao thức hiệu quả hơn [50][58].
Như vậy ta thấy rằng các nhân tố trên ảnh hưởng đến hiệu quả của giao thức định tuyến và tùy theo các điều kiện cụ thể, có ảnh hưởng cụ thể của từng nhân tố đến việc thực hiện truyền tin trên mạng MANET của các giao thức định tuyến. Các giao thức định tuyến trên mạng MANET thường dựa vào hai thuật toán véc tơ khoảng cách và trạng thái liên kết trong mạng Ad hoc dẫn đến một số vấn đề:
+ Tiêu tốn băng thông mạng và năng lượng nguồn nuôi cho các cập nhật định kỳ: hầu hết các thiết bị di động trong mạng Ad hoc sẽ hoạt động dựa trên nguồn pin, việc truyền hoặc nhận gói tin sẽ làm tiêu tốn đáng kể nguồn năng lượng này như phân tích ở trên. Đối với các mạng có dây, các nút mạng là cố định và ít thay đổi nút mạng do đó ít xảy ra thay đổi cấu hình tô pô mạng. Tuy nhiên trong mạng Ad hoc hoặc MANET, các nút luôn