Trong Thuật toán 2, khi một nút trung gian nhận được một gói tin, đầu tiên nó sẽ kiểm tra xem nó có phải là nút nguồn hoặc nút đích của gói tin hay không (Dòng 1). Nếu đúng thì sẽ chuyển sang áp dụng Thuật toán 1 (nếu nó là nút nguồn) hoặc Thuật toán 3 (nếu nó là nút đích). Ngược lại, nó sẽ kiểm tra và phân loại gói tin nhận được. Từ đó, sẽ có các hành động tương ứng với loại gói tin nhận được theo nguyên tắc như sau:
- Nếu gói nhận được là gói RREQ, nút trung gian hiện tại sẽ tiếp tục quảng bá gói RREQ kèm theo ID của mình (dòng 2-3).
- Nếu gói nhận được là gói RREP, nút trung gian hiện tại sẽ tiếp tục gửi gói RREP kèm theo ID của mình (dòng 4-5).
- Nếu gói nhận được là gói dữ liệu, nút trung gian sẽ chuyển tiếp gói nhận được theo thông tin trong gói và thông tin đường đi trong bảng định tuyến của mình (dòng 6-7).
- Nếu gói nhận được là ACK hoặc NACK của nút đích, nút hiện tại chuyển tiếp gói tới các nút tiếp theo trên con đường tới nút nguồn (dòng 8-11).
Thuật toán 2: Thuật toán tại nút trung gian
Input: Các thông điệp định tuyến nhận được Output: Các thông điệp định tuyến truyền đi
1 if (SA <> ID nút hiện tại) and (DA <> ID nút hiện tại) then
2 if nhận được gói RREQ then
3 Gửi gói RREQ kèm ID nút hiện tại; 4 else if nhận được gói RREP then
5 Gửi gói RREP kèm ID nút hiện tại; 6 else if nhận được gói dữ liệu then
7 Chuyển tiếp gói dữ liệu; 8 else if nhận được gói ACK then
9 Chuyển tiếp gói ACK; 10 else if nhận được gói NACK then