Giao thức DSR là một giao thức định tuyến đơn giản và hiệu quả được thiết kế riêng cho việc sử dụng trong các mạng ad hoc không dây đa chặng với các nút di động. Sử dụng DSR, mạng hoàn toàn tự tổ chức và tự cấu hình, không cần cơ sở hạ tầng mạng sẵn có hoặc quản trị trung tâm. Các nút mạng hợp tác để chuyển tiếp các gói tin
cho nhau từ đó cho phép giao tiếp qua nhiều “chặng” giữa những nút không trực tiếp nằm trong phạm vi truyền dẫn không dây của nút khác. Khi các nút trong mạng lưới di chuyển xung quanh hoặc gia nhập hoặc rời khỏi mạng, hoặc các điều kiện truyền dẫn không dây như các nguồn nhiễu thay đổi, thì tất cả định tuyến được tự động xác định và duy trì bởi các giao thức định tuyến DSR. Vì số lượng các chặng trung gian cần để đến được đích đến bất kỳ có thể thay đổi bất cứ khi nào, nên topo mạng có thể được thay đổi khá đa dạng và nhanh chóng.
Giao thức DSR là giao thức phản ứng dựa trên định tuyến nguồn, nó cho phép các nút tìm kiếm tự động một tuyến đường nguồn qua nhiều chặng đến đích bất kỳ trong mạng ad hoc. Mỗi gói tin dữ liệu gửi đi mang trong tiêu đề của nó danh sách xếp thứ tự đầy đủ các nút mà nó phải đi qua, cho phép định tuyến gói tin ở các nút trung gian có thể thực hiện nhanh chóng không có vòng lặp và tránh yêu cầu phải cập nhật thông tin định tuyến tại các nút trung gian mà các gói tin được chuyển tiếp. Bằng cách thêm tuyến đường nguồn trong header của mỗi gói dữ liệu, các nút đang chuyển tiếp hoặc đang nghe bất kỳ gói tin nào trong các gói tin đó có thể dễ dàng lưu giữ thông tin định tuyến để sử dụng trong tương lai.
Giao thức DSR gồm có hai cơ chế làm việc cùng nhau cho phép tìm kiếm và duy trì các tuyến đường nguồn trong mạng ad hoc:
Route discovery (Cơ chế tìm kiếm tuyến đường): Là cơ chế mà theo đó một nút
nguồn S có nhu cầu gửi một gói tin đến một node đích D có được một tuyến đường từ nguồn đến nút đích D. Route discovery được sử dụng chỉ khi S cố gắng gửi một gói tin đến D mà không thực sự biết một tuyến đường đến D.
Route discovery hoạt động như sau: Mỗi nút duy trì một bộ nhớ route cache có
chứa các tuyến đường đi đã biết. Khi tuyến đường được cần đến không có trong
route cache, Route discovery được khởi tạo bằng việc phát gói tin yêu cầu
đường Route Request. Khi một nút nhận được gói tin yêu cầu đường, nút tìm trong route cache đường tới đích được yêu cầu. Nếu đường trong route cache
không tìm thấy, nút chuyển tiếp gói tin yêu cầu đường cho các hàng xóm sau khi bổ sung địa chỉ vào thứ tự các chặng được lưu trong gói tin yêu cầu đường. Gói tin yêu cầu đường được truyền qua mạng cho tới khi đến đích hoặc nút có đường đi tới đích. Nếu đường được tìm thấy, gói tin trả lời (Route Reply) có chứa thứ tự các chặng tới đích được gửi trở lại nguồn.
Route maintenance (Cơ chế duy trì tuyến đường): Là cơ chế mà theo đó nút S có thể phát hiện ra hiện tượng: một tuyến đường mà nó đã biết không còn sử dụng được để sửa lại. Tức là trong khi sử dụng một tuyến đường từ nguồn S đến đích D, nếu topo mạng thay đổi khiến S có thể không sử dụng được tuyến đường của nó đến D vì một liên kết trên tuyến đường không còn hoạt đông. Khi đó cơ chế Route maintenance cho biết một tuyến đường nguồn bị đứt liên kết, S có thể cố gắng sử dụng tuyến đường khác bất kỳ có trong bộ nhớ route cache
của nó để đến D, hoặc có thể gọi cơ chế Route discovery một lần nữa để tìm kiếm một tuyến đường mới. được sử dụng chỉ khi S thực sự đang gửi các gói tin đến D. Cơ chế Route maintenance bao gồm việc thực hiện các biên nhận theo chặng hoặc đầu cuối, kèm theo đó là phát các gói tin Route Error để thông báo về hiện tượng đứt liên kết. DSR có thể sử dụng lớp MAC để thông báo về hiện tượng đứt liên kết. Trong trường hợp có hiện tượng đứt liên kết, gói tin Route
Error được gửi lại cho nút nguồn. Nút nguồn sau đó sẽ xoá bỏ liên kết bị hỏng
ra khỏi route cache và tất cả các đường có chứa chặng này được cắt tại điểm có liên kết hỏng. Ngoài ra, các nút trung gian chuyển tiếp gói tin Route Error có thể cập nhật route cache theo cách tương tự.
Hình 14. Ví dụ về Route maintenance:
(nút C không thể chuyển tiếp gói tin từ nút A đến nút E do liên kết giữa C và D bị hỏng)
Đặc biệt, không giống như các giao thức khác, DSR không yêu cầu phát các gói tin định tuyến định kỳ trong bất kỳ trường hợp nào, tại bất kỳ tầng nào trong mạng. Ví dụ, DSR không sử dụng quảng bá định tuyến định kỳ, cảm nhận trạng thái liên kết, hoặc các gói tin tìm kiếm nút hàng xóm và không dựa vào các chức năng từ bất kỳ giao thức cơ bản trong mạng. Các thông tin điều khiển của route discovery and route
maintenance trong DSR được thiết kế để cho phép các liên kết một chiều và các tuyến
đường bất đối xứng được hỗ trợ một cách dễ dàng. Như ta đã biết, trong các mạng không dây có thể xảy ra trường hợp một liên kết giữa hai nút có thể không làm việc tốt như nhau trong cả hai hướng, do khác biệt về ăng ten hoặc các mô hình lan truyền hoặc các nguồn nhiễu. DSR cho phép liên kết một chiều sẽ được sử dụng khi cần thiết, điều này nâng cao hiệu năng tổng thể và tính liên kết mạng trong hệ thống.