Một phương pháp khác với giao thức định tuyến theo bản ghi đó là định tuyến điều khiển theo yêu cầu còn được gọi là giao thức phản ứng lại (reactive). Theo phương pháp này, các đường đi sẽ được khám phá nếu như có nhu cầu. Khi một nút yêu cầu một đường đi đến đích, nó phải khởi đầu một quá trình khám phá lộ trình để tìm đường đi đến đích. Quá trình này chỉ hoàn tất khi đã tìm ra một đường đi sẵn sàng hoặc tất cả các đường đi khả thi đã được kiểm tra. Khi một đường đi đã được khám phá và thiết lập, nó được duy trì định tuyến (route maintenance) bởi một số dạng thủ tục cho đến khi hoặc là đường đi đó không thể truy nhập được từ nút nguồn hoặc là không cần thiết đến nó nữa.
Với các cơ chế đó, các giao thức định tuyến điều khiển theo yêu cầu không phát quảng bá (broadcast) đến các nút láng giềng về các thay đổi của bảng định tuyến theo thời gian, nên tiết kiệm được tài nguyên mạng. Vì vậy, loại giao thức này có thể sử dụng trong các mạng MANET phức tạp, các nút di chuyển nhiều.
Một số giao thức định tuyến điều khiển theo yêu cầu tiêu biểu như: Giao thức định tuyến CBRP (Cluster Based Routing Protocol), Giao thức định tuyến AODV (Ad hoc On Demand Distance Vector), Giao thức định tuyến DSR (Dynamic Source Routing), Giao thức định tuyến TORA (Temporally Ordered Routing Algorihm).
Giao thức TORA
TORA là giao thức định tuyến phân tán không có lặp tuyến thích nghi cao dựa trên thuật toán đảo ngược liên kết (link-reversal). TORA được đề xuất để điều khiển định tuyến trong môi trường mạng di động thay đổi nhanh. Nó được khởi tạo tại nút nguồn và cung cấp nhiều đường đi cho bất kỳ cặp nút nguồn/đích theo yêu cầu nào đó. Ý tưởng thiết kế chính của TORA là định vị các thông báo điều khiển đến một tập các nút rất nhỏ gần nơi xảy ra việc thay đổi cấu trúc. Để làm được điều này, các nút cần đảm bảo thông tin định tuyến về các nút láng giềng. Giao thức TORA thực hiện ba chức năng cơ bản: khám phá lộ trình; duy trì lộ trình; xóa lộ trình.
Trong suốt giai đoạn khám phá và duy trì lộ trình, các nút sử dụng đơn vị đo “độ cao” để thiết lập đồ thị không chu trình có hướng DAG (Directed Acyclic Graph) có gốc tại đích đến. Sau đó, các liên kết được gán hướng (luồng lên hoặc xuống) dựa trên đơn vị đo độ cao tương đối của các nút láng giềng. Đường đi trong mạng được phát hiện bằng hai gói tin là QUERY và UPDATE. Khi nút có nhu cầu gửi gói tin đến đích bất kỳ, nó sẽ gửi quảng bá gói tin truy vấn QUERY. Gói tin này được các nút trung gian truyền trong mạng cho tới khi đến đích hoặc nút trung gian có đường đi đến đích. Nút trả lời sẽ gửi trả lại gói tin UPDATE chứa độ cao của nút đó. Các nút nhận được gói tin UPDATE sẽ thiết lập độ cao lớn hơn độ cao trong gói tin UPDATE và quảng bá gói tin UPDATE của nó. Kết quả nút nguồn sẽ có đường đi đến nút đích theo đường có độ cao giảm dần.
Do tính di động của các nút, lộ trình DAG bị phá vỡ và việc đảm bảo lộ trình là cần thiết để thiết lập lại đồ thị DAG có gốc ở cùng nút đích. Khi mà lỗi của liên kết luồng
34
xuống cuối cùng xảy ra, nút hiệu chỉnh độ cao của nó là cao nhất so với các láng giềng của nó và truyền quảng bá gói tin UPDATE với độ cao mới đến các nút láng giềng nhằm phản ứng với lỗi. Các liên kết được đảo ngược phản hồi với thay đổi để thích nghi với độ cao mới. Điều này có cùng tác động do hướng đảo ngược của một hay nhiều liên kết khi nút không có các liên kết luồng xuống.
Giai đoạn xóa lộ trình của TORA bao gồm chủ yếu việc quảng bá gói tin xóa CLR (Clear Packet) thông qua mạng để xóa các lộ trình không hợp lệ. Gói tin CLR bao gồm độ cao và định danh đích. Khi một nút nhận được gói tin CLR và độ cao của nó khớp với độ cao trong CLR, nó thiết lập tất cả độ cao cho các láng giềng và bản thân nó đối với đích giá trị null và quảng bá tiếp gói tin CLR. Ngược lại, nếu không khớp, nó chỉ thiết lập độ cao cho các láng giềng đối với đích giá trị null [81](pp.91-115).
Giao thức định tuyến AODV
Giao thức định tuyến AODV được xây dựng trên cơ sở giao thức định tuyến DSDV được mô tả ở mục 2.1.2.1. Khác với DSDV luôn lưu trữ một danh sách các đường đi hoàn chỉnh, AODV chỉ khám phá các đường đi khi có yêu cầu.
Khi mà nút nguồn cần gửi thông tin đến nút đích nhưng chưa có sẵn lộ trình hợp lệ đến đích, nó khởi tạo tiến trình khám phá lộ trình để định vị đường đi đến nút đích. Nút nguồn quảng bá gói tin yêu cầu lộ trình RREQ (Route Request) đến các láng giềng của nó và sau đó các láng giềng sẽ chuyển tiếp yêu cầu đến các láng giềng khác và cứ như thế cho đến khi gặp đích hoặc gặp nút trung gian có đường đi đến đích. AODV sử dụng số thứ tự của đích đến để bảo đảm tất cả các lộ trình là không có vòng lặp và chứa các thông tin lộ trình cập nhật nhất. Mỗi nút bảo đảm số thứ tự của nó cũng như định danh của các gói tin phát quảng bá, định danh quảng bá được tăng cho mỗi gói RREQ khi nút khởi tạo. Cùng với địa chỉ của nút, định danh gói RREQ là duy nhất. Ngoài số thứ tự và định danh quảng bá, nút nguồn còn bao gồm trong gói RREQ thông tin về số thứ tự gần đây nhất mà nó có đối với đích. Các nút trung gian có thể trả lời RREQ chỉ khi chúng có lộ trình đến đích tương ứng với số thứ tự địa chỉ đích lớn hơn hoặc bằng số thứ tự trong gói RREQ, nghĩa là chúng có thông tin mới hơn về lộ trình đến đích.
Trong suốt quá trình chuyển tiếp gói RREQ, nút trung gian khởi tạo đường quay trở về nguồn tạm thời. Ngoài ra, nút trung gian cũng lưu lại định danh của các gói RREQ đã nhận để loại bỏ các RREQ trùng lặp. Một khi gói RREQ đến được đích hoặc đến được nút trung gian với lộ trình đủ mới, nút đích/nút trung gian phản hồi bằng cách truyền gói tin phản hồi lộ trình RREP ngược trở lại cho nút láng giềng mà nó nhận được RREQ lần đầu tiên. Vì RREP được định tuyến quay trở lại theo đường mà gói RREQ đã đi nhưng theo chiều ngược lại, các nút theo đường dẫn thiết lập các đầu vào lộ trình chuyển tiếp trong bảng định tuyến của chúng trỏ đến nút có gói RREP đến. Các đầu vào lộ trình chuyển tiếp này cho biết lộ trình chuyển tiếp có còn hoạt động hay không. Mỗi đầu vào lộ trình có một trường định thời gian, nút mạng dựa vào trường định thời gian để quyết định xóa đầu vào
35
nếu nó thấy lộ trình tương ứng không còn được sử dụng trong một chu kỳ thời gian xác định [81](pp.101-106).
Giao thức định tuyến DSR
Giao thức định tuyến DSR là giao thức định tuyến điều khiển theo yêu cầu dựa trên khái niệm về định tuyến nguồn. Các nút được yêu cầu bảo đảm bộ đệm lộ trình chứa các lộ trình từ nút nguồn mà nút biết đến. Các đầu vào trong bộ đệm lộ trình được cập nhật liên tục khi có các lộ trình mới được biết.
Giao thức định tuyến bao gồm hai giai đoạn chính: khám phá và duy trì lộ trình. Khi nút có gói tin cần gửi đến nút đích, đầu tiên nó thăm dò bộ đệm định tuyến của nó để xác định xem đã có sẵn lộ trình đến đích chưa. Nếu có lộ trình để gửi đến đích và chưa hết hạn, nó sẽ sử dụng lộ trình này để gửi gói tin. Ngược lại, nếu nút không có lộ trình, nó sẽ khởi tạo khám phá lộ trình bằng cách gửi quảng bá gói yêu cầu lộ trình RREQ. Yêu cầu lộ trình này chứa địa chỉ của nút đích, cùng với địa chỉ của nút nguồn và số định danh duy nhất. Mỗi nút nhận được gói tin sẽ kiểm tra xem nó có biết lộ trình đến đích hay không. Nếu nút không biết, nó sẽ thêm địa chỉ của nó vào bản ghi lộ trình của gói tin và chuyển tiếp gói tin dọc theo các liên kết ra ngoài. Để giới hạn số lượng các yêu cầu lộ trình được truyền ra các liên kết ngoài của nút, nút chỉ chuyển tiếp yêu cầu lộ trình nếu yêu cầu chưa từng được nhận biết bởi nút và địa chỉ của nút không có trong bản ghi lộ trình. Phản hồi lộ trình RREP được tạo ra khi yêu cầu lộ trình đến được đích của nó hoặc đến nút trung gian chứa bộ đệm lộ trình trong đó có lộ trình đến đích theo yêu cầu và chưa hết hạn. Theo thời gian, gói tin đến được đích hoặc nút trung gian, nó chứa bản ghi lộ trình bao gồm một dãy các chặng đã đi qua.
Việc duy trì lộ trình được thực hiện thông qua việc sử dụng các gói tin báo lỗi lộ trình và các ghi nhận. Các gói tin lỗi lộ trình được tạo ra tại mỗi nút khi mà tầng liên kết dữ liệu bắt gặp lỗi truyền nghiêm trọng. Khi một nút nhận được gói tin lỗi lộ trình, chặng có lỗi được loại bỏ khỏi bộ đệm lộ trình và tất cả các lộ trình chứa chặng này được cắt kết nối tại điểm này. Ngoài các thông báo lỗi lộ trình, các thông báo ghi nhận được sử dụng để ghi nhận sự hoạt động đúng của các kết nối đường đi. Các thông báo ghi nhận bao gồm các ghi nhận thụ động trong đó nút có khả năng nghe ngóng chặng kế tiếp chuyển tiếp gói tin theo lộ trình đã chọn [81](pp.106-110).