Nội dung báo cáo
I.Các thuật ngữ viết tắt
II.Tổng quan về Mobile – Adhoc – Network (MANET):
2.1.MANET là gì
2.2.Các giao thức định tuyến trong MANET
2.3.Giới thiệu chung về mạng mắt lưới không dây WMN (Wireless Mesh Network )
2.4.Định tuyến trong mạng WMN
2.5.Tiêu chuẩn IEEE 802.11s
2.6.Định tuyến trong mạng hình lưới 802.11s
III.Giao thức định tuyến vectơ cự ly theo yêu cầu tùy biến AODV:
3.1.Tổng quan về AODV
3.2.Định dạng các gói tin
3.3.Hoạt động của AODV
IV.Giao thức định tuyến nguồn động DSR:
4.1.Tổng quan về DSR
4.2.Vấn đề cơ bản của cơ chế xác định tuyến và duy trì tuyến
4.3.Định dạng mào đầu các lựa chọn DSR
4.4.Hoạt động của DSR
4.5.Vị trí của chức năng định tuyến DSR trong mô hình tham khảo ISO
V.Tài liệu tham khảo
74 trang |
Chia sẻ: banmai | Lượt xem: 2693 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Ad - Hoc network, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
từ Address[n-1] tới Address[n]) trong bộ nhớ tuyến của nó. Giá trị n ở đây là số địa chỉ của tuyến nguồn được hổi đáp trong lựa chọn RREP, hay bằng (Opt Data Len – 1) /4.
Sau khi có thể cập nhật bộ nhớ tuyến của nút từ thông tin định tuyến trong lựa chọn RREP, thi nếu địa chỉ đích của gói tin phù hợp với địa chỉ của nút này thì nút phải xử lý lựa chọn RREP sau đó.
Nếu mào đầu các lựa chọn DSR chứa một lựa chọn RERR, nút phải xử lý gói tin chứ lựa chọn này
Nếu mào đầu các lựa chọn DSR chứa một lựa chọn Acknowledgment Request, nút phải xử lý lựa chọn này.
Nếu mào đầu các lựa chọn DSR chứa một lựa chọn Acknowledgment, nút nên thêm vào bộ nhớ tuyến của nó một liên kết đơn từ nút được chỉ ra bởi trường ACK Source Address tới nút được xác định bởi trường ACK Destination Address. Sauk hi cập nhậth thông tin định tuyến, nút phải xử lý lựa chọn Acknowledgment này.
Nếu mào đầu các lựa chọn DSR chứa một lựa chọn tuyến nguồn DSR, nút nên chép tuyến nguồn từ lựa chọn này và thêm thông tin định tuyến nào vào bộ nhớ tuyến của nó. Nếu giá trị của trường Salvage trong lựa chọn tuyến nguồn DSR là 0, thì thông tin định tuyến từ tuyến nguồn DSR là chuỗi các chặng có địa chỉ:
Source, Address[1], Address[2], …., Address[n], destination.
Nếu không (nếu Salvage không là 0), thông tin định tuyến từ tuyến nguồn DSR là chuỗi các chặng có địa chỉ:
Address[1], Address[2], ..., Address[n], destination.
Với, source là giá trị của trường Source Address trong mào đầu IP của gói mang lựa chọn tuyến nguồn DSR (nút khởi đầu gói tin), mỗi Address[i] là giá trị của trường Address[i] trong lựa chọn tuyến nguồn DSR, và đích là giá trị của trường Destination Address trong mào đầu gói IP (địa chỉ chặng cuối cùng của tuyến nguồn). Giá trị n ở đây là số lượng các địa chỉ trong tuyến nguồn trong lựa chọn tuyến nguồn DSR, n = (Opt Data Len – 2) /4.
Sau khi có thể cập nhật bộ nhớ tuyến của nút từ thông tin định tuyến trong lựa chọn tuyến nguồn DSR, nút phải xử lý lựa chọn tuyến nguồn DSR này.
Bất kì lựa chọn Pad1 hoặc PadN nào trong mào đầu các lựa chọn DSR đều được bỏ qua
Cuối cùng, nếu địa chỉ đích trong mào đầu gói tin IP phù hợp với một trong số các địa chỉ IP của các nút nhận, nó hủy bỏ mào đầu các lựa chọn DSR và tất cả các lựa chọn DSR được bao gồm trong mào đầu và chuyển phần còn lại của gói tin tới lớp mạng.
4.4.1.5 Xử lý một lựa chọn tuyến nguồn DSR nhận được
Khi một nút nhận được gói chứa một lựa chọn tuyến nguồn DSR, nút đó nên kiểm tra gói tin đó để xác định biên lai của gói có chỉ ra một tuyến tự động rút ngắn thích hợp hay không. Cụ thể, nếu nút này không mong đợi đích chặng tiếp theo cho gói nhưng nó được ghi tên trong phần không dùng đến sau đó của tuyến nguồn trong lựa chọn tuyến nguồn DSR của gói, thì gói này xác định một tuyến được tự động làm ngắn thích hợp: Các nút trung gian sau nút mà từ đó nút này có thể nghe gói tin và trước nút này mà bản thân nó không cần thiết nữa trong tuyến nguồn. Trong trường hợp này, nút này nên thực hiện các bước sau như một phần của quá trình làm ngắn tuyến tự động:
Nút kiểm tra trong bản RREP chặng trước của nó để tìm một mục mô tả một RREP chặng trước được gửi gần mới đây bởi nút này, cho cả nút khởi đầu và nút truyền phù hợp với địa chỉ nút tương ứng cho gới mới nhận này. Nếu như một mục được tìm thấy trong bảng RREP chặng trước của nút, nút không nên thực hiện tự động rút ngắn tuyến được hồi đáp từ biên lai của gói này.
Nếu không, nút tạo một mục cho gói nghe được này trong bản RREP chặng trước của nó. Giá trị timeout cho mục mới này nên được khởi đầu bằng giáo trị GratReplyHoldoff. Sau khi time out này hết hạn, nút nên xóa mục này khỏi bảng RREP chặng trước của nó.
Sau khi tại một mục mới trong bảng RREP chặng trước ở trên, nút khởi đầu một RREP chặng trước tới địa chỉ IP nguồn của gói nghe được này.
Nếu giao thức MAC đang được dùng trong mạng không có khả năng truyền unicast các gói qua các liên kết đơn hướng, thì trong sự khởi đầu RREP này, nút phải sử dụng một tuyến nguồn để định tuyến gói RREP mà được nhận bởi sự đảo chiều chuỗi các chặng qua đó gói tin mang RREP chặng trước được định tuyến trong khả năng có thể tới và nghe được bởi nút này. Tuyến ngược sử dụng RREP chặng trước để kiểm tra chuỗi các chặng có phải là song hướng hay không, ngăn chặn RREP chặng trước được nhận bởi khởi đầu khám phá tuyến trừ khi mỗi chặng qua RREP chặng trước được hồi đáp là song hướng.
Hủy bỏ gói tin nghe được, vì gói tin thường đã được nhận bởi nó trước khi tuyến nguồn của gói giao nhau là nguyên nhân nó có thể tới được nút nhận này. Một bản sao chép khác của gói sẽ thường tới nút này như được chỉ ra trong tuyến nguồn của gói; loại bỏ bản sao chép đầu tin của gói, cái mà đã khởi đầu RREP chặng trước, sẽ ngăn chặn sự sao lục của gói tin này có thể xảy ra.
Nếu như gói không bị hủy bỏ như một phần của sự tự động làm ngắn tuyến ở trên, thì nút phải xử lý lựa chọn tuyến nguồn DSR theo các bước sau:
Nếu giá trị của trường Segments Left trong lựa chọn tuyến nguồn DSR bằng 0, thì hủy bỏ lựa chọn tuyến nguồn DSR từ mào đầu các lựa chọn DSR.
Ngược lại, chẳng hạn n = (Opt Data Len – 2) /4. Đây là số lượng các địa chỉ trong lựa chọn tuyến nguồn DSR.
Nếu giá trị của trường Segments Left lớn hơn n, thì gửi một bản tin ICMP Parameter Problem tới địa chỉ IP nguồn, chỉ tới trường Segments Left, và hủy bỏ gói tin. Không xử lý lựa chọn tuyến nguồn DSR thêm nữa.
Ngược lại, sự giảm giá trị của trường Segments Left tới1. Chẳng hạn i bằng n – Segments Left. Đây là chỉ số của địa chỉ tiếp theo được ghé thăm trong vectơ địa chỉ.
Nếu Address[i] hoặc địa chỉ IP đích là một địa chỉ multicast thì hủy bỏ gói tin. Không xử lý lựa chọn tuyến nguồn DSR thêm nữa.
Nếu nút này có nhiều hơn một giao diện mạng và nếu Address[i] là địa chỉ của một trong các giao diện mạng của nút đó, thì điều này chỉ ra một sự thay đổi trong giao diện mạng sử dụng trong việc chuyển tiếp gói tin. Trong trường hợp này, sự giảm bớt giá trị của trường Segments Left tới 1 để bỏ qua địa chỉ này và tới bước đầu tiên ở trên để tiếp tục xử lý lựa chọn tuyến nguồn này; hơn nữa, trong sự xử lý của lựa chọn tuyến nguồn, giao diện mạng mới được xác định phải được sử dụng trong việc chuyển tiếp gói.
Nếu đơn vị truyền tải lớn nhất của liên kết qua đó mà nút này có thể truyền gói chuyển tiếp nó tới nút có địa chỉ Address[i] là nhỏ hơn kích thước của gói, nút này phải hủy bỏ gói tin và gửi một bản tin ICMP Packet Too Big tới địa chỉ nguồn của gói hoặc phân mảnh nó.
Chuyển tiếp gói tới địa chỉ IP được chỉ định trong trường Address[i] của mào đầu IP, thường theo sau các thủ tục chuyển tiếp IP, bao gồm việc kiểm tra và xác định trường TTL trong mào đầu gói IP. Trong sự chuyển tiếp gói tin này, nút chặng tiếp theo (được chỉ định bởi Address[i]) phải được coi như một nút hàng xóm trực tiếp: sự truyền tới nút tiếp theo đó phải được thực hiện trong một chặng IP chuyển tiếp đơn, không có khám phá tuyến và không có tìm kiếm trong bộ nhớ tuyến.
Trong việc chuyển tiếp gói tin, hoạt động duy trì tuyến cho chặng tiếp theo của gói xác nhận rằng nút chặng tiếp theo có thể tới được.
Địa chỉ multicast không được xuất hiện trong lựa chọn tuyến nguồn DSR hoặc trong trường Destination IP Address của gói tin mang lựa chọn tuyến nguồn DSR trong một mào đầu các lựa chọn DSR.
4.4.1.6 Sự điều khiển một lựa chọn DSR chưa biết
Trong DSR, các mã Option Type mã hóa hành vi được yêu cầu cho các nút không thực hiện được kiểu lựa chọn đó. Các hành vi này được chứa trong 3 bit quan trọng nhất của Option Type.
Nếu bit quan trọng nhất của Option Type được thiết lập (đó là Option Type & 0x80 khác 0) và gói này không chứa một lựa chọn RREQ, một nút nên hổi đáp một RERR tới địa chỉ IP nguồn, không kể đến kiểu lỗi đó phải được thiết lập là OPTION_NOT_SUPPORTED và trường Unsupported Opt phải được thiết lập là kiểu lựa chọn gây ra RERR.
Dù một RERR có được gửi hay không trong sự hồi đáp tới lựa chọn DSR này, như được mô tả ở trên, nút cũng phải kiểm tra 2 bit quan trọng nhất tiếp theo (đó là Option Type và 0x60):
Khi 2 bit này là 00 (túc là Option Type & 0x60 = = 0), một nút không thực hiện xử lý đối với kiểu lựa chọn đó phải sử dụng trường Opt Data Len để bỏ qua lựa chọn và tiếp tục xử lý.
Khi 2 bit này là 01 (tức là, Option Type & 0x60 = = 0x20), một nút không thực hiện xử lý với kiểu lựa chọn đó phải sử dụng trường Opt Data Len để hủy bỏ lựa chọn từ gói và tiếp tục xử lý nếu nhu lựa chọn chưa được bao gồm trong gói nhận.
Khi 2 bit này là 10 (tức là, Option Type & 0x60 = = 0x40), một nút không thực hiện xử lý với kiểu lựa chọn đó phải thiết lâpk bit quan trọng nhất theo sau trường Opt Data Len. Trong sự thêm vào, nút phải từ chối và bỏ qua nội dung của lựa chọn sử dụng trường Opt Data Len và phải tiếp tục xử lý gói tin.
Cuối cùng, khi 2 bit này là 11 ( đó là, Option Type & 0x60 = = 0x60), một nút không tiếp tục xử lý kiểu lựa chọn đó mà phải hủy bỏ gói tin.
4.4.2 Xử lý khám phá tuyến
Khám phá tuyến là một cơ chế mà nhờ nó khi một nút S muốn gửi một gói tin tới nút đích D thu được một tuyến nguồn tới D. Khám phá tuyến nên được sử dụng chỉ khi S cố gắng gửi một gói tin tới D mà không biết một tuyến nào đến D. Nút khởi đầu một khám phá tuyến được coi như “nguồn” của khám phá tuyến và nút đích được xác định bởi khám phá tuyến được coi như “đích” của khám phá tuyến.
Khám phá tuyến hoạt động hoàn toàn theo yêu cầu; một nút khởi đầu một khám phá tuyến khi bản thân nó muốn gửi một gói tin mới tới một vài địa chỉ đích mà nó chưa biết một tuyến nào hiện tại. Khám phá tuyến không phụ thuộc vào bất kì chù kì hoặc nền tảng trao đổi thông tin định tuyến hoặc sự tìm thấy nút hàng xóm tại bất kì lớp nào trong ngăn xếp giao thức mạng tại bất kì nút nào.
Thủ tục khám phá tuyến sử dụng hai loại bản tin là Route Request và Route Reply, để tích cự tìm kiếm trong mạng ad hoc một tuyến tới đích mong muốn. Các bản tin DSR này có thể được mang trong gói tin IP, thông qua việc sử dụng mào đầu các lựa chọn DSR. Một khám phá tuyến tới địa chỉ đích không nên được khởi đầu trừ khi nút nguồn có một gói tin trong bộ nhớ đệm gửi của nó được yêu cầu phân phát tới đích. Một khám phá tuyến tới một nút đích xác định không được phát động trừ khi được sự cho phép của thông tinh tốc độ giới hạn được chứa trong bảng RREQ. Sau khi mỗi khám phá tuyến được thử, khoảng thời gian giữa các khám phá tuyến liên tiếp cho đích này nên được nhân đôi, cho đến một giá trị lớn nhất là MaxRequestPeriod, cho đến khi một RREP được nhận đối với đích này.
4.4.2.1 Khởi đầu một Route Request
Một nút khời đầu một khám phá tuyến cho một vài đích tạo và khời đầu một lựa chọn RREQ trong một mào đầu các lựa chọn DSR trong một vài gói IP. Nó có thể là gói IP riêng biệt, chỉ được sử dụng để mang lựa chọn RREQ này, hoặc nút có thể chèn một lựa chọn RREQ vào một vài gói hiện tại mà nó cần để gửi tới nút đích (ví dụ, gói tin IP được khởi đầu bởi nút này mà nguyên nhân là do nút cố gắng thực hiện khám phá tuyến tới địa chỉ đích trong gói tin). Lựa chọn RREQ phải được chứa trong một mào đầu các lựa chọn DSR trong gói tin. Để cho giá trịn vào lựa chọn RREQ, nút thực hiện các bước sau:
Trường Option Type trong lựa chọn phải được đặt giá trị là 2.
Trường Opt Data Len trong lựa chọn phải được thiết lập giá trị là 6. Tổng kích thước của lựa chọn RREQ khi được khởi tạo là 8 octet; trường Opt Data Len trừ ra kích thước của bản thân các trường Option Type và Opt Data Len.
Trường Identification trong lựa chọn phải được thiết lập một giá trị mới, khác với giá trị mà được sử dụng đối với các RREQ hiện tại được phát động bởi nút này cho cùng một địa chỉ đích. Ví dụ, mỗi nút có thể duy trì một bộ đếm giá trị riêng cho việc khởi tạo một giá trị Identification mới cho mỗi RREQ mà nó khởi tạo.
Trường Address Target trong lựa chọn phải được thiết lập một địa chỉ IP là đích của khám phá tuyến.
Địa chỉ nguồn trong mào đầu IP của gói tin phải là địa chỉ của chính nút này. Địa chỉ đích trong mào đầu IP của gói tin phải là địa chỉ broadcast (255.255.255.255).
Một nút phải duy trì trong bảng RREQ của nó thông tin về các RREQ mà nó phát động. Khi phát động một RREQ mới, nút phải dùng thông tin được ghi trong mục bảng RREQ này cho đích của RREQ đó và nó phải cập nhận thông tin đó trong mục bảng để sử dụng trong việc khởi tạo một RREQ tiếp theo cho đích này. Cụ thể:
Mục bảng RREQ đối với một nút đích ghi trường TTL được sử dụng trong mào đầu IP của RREQ cho khám phá tuyến cuối cùng được khởi tạo bởi nút này tới đích đó. Giá trị này cho phép nút thực hiện các thuật toán các nhau để điều khiển sự trải rộng các RREQ trong mỗi khám phá tuyến được phát động tới một đích.
Mục bảng RREQ đối với nút đích ghi số lượng các RREQ liên tiếp được phát động tới nút này từ khi nhận một một RREP hợp lệ mang một tuyến tới nút đích và lượng thời gian còn lại trước khi nút này có thể phát động một khám phá tuyến tiếp theo cho nút đích đó.
Một nút phải sử dụng các giá trị này để thực hiện thuật toán back-off để giới hạn tốc độ tại đó nút này khởi đầu các khám phá tuyến mới cho cùng một địa chỉ đích. Cụ thể, cho đến khi một RREP hợp lệ được nhận đối với địa chỉ đích này, khoảng thời gian timeout giữa các khám phá tuyến liên tiếp được phát động cho nút đích này với cùng số chặng giới hạn nên tăng lên bằng cách nhân đôi giá trị timeout cho mỗi phát động mới.
Trạng thái của nút xử lý một gói tin chứa mào đầu các lựa chọn DSR với cả lựa chọn tuyến nguồn DSR và lựa chọn RREQ là không rõ ràng. Các gói tin không nên chứa cả hai lựa chọn tuyến nguồn DSR và RREQ.
Các gói chứa một lựa chọn RREQ không nên chứa một lựa chọn Acknowledgment Request, không nên mong đợi sự báo nhận của lớp liên kết và không nên được truyền lại.
4.4.2.2 Xử lý một lựa chọn RREQ được nhận
Khi một nút nhận được một gói tin chứa một lựa chọn RREQ, thì nút phải xử lý lựa chọn đó theo các bước sau:
Nếu trường Target Address trong RREQ phù hợp với địa chỉ IP của chính nút này, thì nút hồi đáp một RREP tới nút nguồn của RREQ này (địa chỉ nguồn trong mào đầu IP của gói tin). Tuyến nguồn cho hồi đáp này là chuỗi các địa chỉ:
initiator, Address[1], Address[2], ..., Address[n], target
với initiator là địa chỉ của nút khởi đầu RREQ, mỗi Address[i] là một địa chỉ từ RREQ và target là đích của RREQ. Giá trị n ở đây là số lượng các địa chỉ được ghi trong RREQ, n = (Opt Data Len- 6) /4.
Nút phải thay thế trường địa chỉ đích trong RREQ của mào đầu gói IP bằng giá trị trong trường địa chỉ đích trong lựa chọn RREQ và tiếp tục xử lý phần còn lại của gói RREQ thêm nữa. Nút không được xử lý lựa chọn RREQ thêm nữa và không được truyền lại RREQ từ nó tới các nút khác như một phần của khám phá tuyến.
Ngược lại, nút phải khảo sát tuyến được ghi trong lựa chọn RREQ (trường Source IP Address và chuỗi các trường Address[i]) để xác định địa chỉ IP của nút này có mặt trong danh sách địa chỉ hay không. Nếu có mặt, nó phải hủy bỏ hoàn toàn gói tin mang lựa chọn RREQ này.
Ngược lại, nếu RREQ được nhận qua một giao diện mạng mà yêu cầu các liên kết vật lý song hướng cho truyền dẫn unicast, nút phải kiểm tra RREQ đã được chuyển tiếp cuối cùng bởi một nút trong danh sách đen của nó hay không. Nếu như một mục được tìm thấy trong danh sách đen, và trạn thái của các kết nối đơn hướng là “có thể”, thì yêu cầu phải được lẳng lặng hủy bỏ.
Mặt khác, nếu RREQ được nhận qua một giao diện mạng mà yêu cầu các liên kết vật lý song hướng cho truyền dẫn unicast, nút phải kiểm tra RREQ đã được chuyển tiếp cuối cùng bởi một nút trong danh sách đen của nó hay không. Nếu như một mục được tìm thấy trong danh sách đen, và trạn thái của các kết nối đơn hướng là “có vấn đề”, thì nút phải tạo và truyền unicast một gói RREQ tới nút trước đó, thiết lập giá trị TTL bằng 1 để ngăng chặn yêu cầu này được nhân giống. Nếu nút nhận một RREP trong sự hồi đáp tuyến mới, nó phải hủy bỏ mục danh sách đen đối với nút đó và nên tiếp tục xử lý. Nếu nút không nhận được một RREP trong vòng một vài lượng thời gian hợp lý, nút phải lẳng lặng hủy bỏ gói tin RREQ.
Ngược lại, nút phải tìm kiếm trong bảng RREQ của nó toàn bộ thông tin về nút nguồn của RREQ này. Nếu như một mục được tìm thấy trong bảng, nút sẽ tìm kiếm giá trị Identification của các RREQ được nhận hiện tại trong toàn bộ bảng, để xác định một mục có hiện diện trong giá trị Identification phù hợp được lưu hay không và địa chỉ nút đích trong RREQ. Nếu một mục (Identification, địa chỉ đích) được tìm thấy trong bộ nhớ trong mục này của bảng RREQ, thì nút phải hủy bỏ toàn bộ gói tin mang lựa chọn RREQ.
Ngược lại, nút này nên xử lý thêm RREQ theo các bước sau:
Thêm một mục cho RREQ trong bộ nhớ của nó với các giá trị của các RREQ nhận được (Identification, địa chỉ đích).
Tạo một bản sao của toàn bộ gói tin và thực hiện theo các bước trên bản sao của gói tin.
Thêm vào địa chỉ IP của chính nút này vào trong danh sách các địa chỉ giá trị Address[i] trong RREQ và tăng giá trị của trường Opt Data Len trong RREQ lên 4 (kích thước của một địa chỉ IP). Tuy nhiên, nếu nút có nhiều giao diện mạng, thì bước này được thay đổi và trình bày trong phần sau của đồ án.
Nút này nên tìm kiếm trong bộ nhớ tuyến của nó một tuyến tới đích của RREQ. Nếu như một tuyến được tìm thấy trong bộ nhớ tuyến của nó, thì nút này nên hồi đáp một RREP tới nút nguồn của RREQ, nếu được cho phép bởi giới hạn đã chỉ định.
Nếu nút không hồi đáp một RREP từ bộ nhớ của nó, thì nút này nên truyền một bản sao của gói tin như một quảng bá lớp liên kết, với một trễ jitter ngắn trước khi quảng bá được gửi. Khoảng thời gian jitter nên đượ chọn ngẫu nhiên, phân bổ trong khoảng từ 0 đến BroadcastJitter.
4.4.2.3 Sự khởi tạo một Route Reply sử dụng bộ nhớ tuyến
Trong khi xử lý một RREQ nhận được, đối với một nút có thể hồi đáp một RREP từ bộ nhớ của nó, nó phải có trong bộ nhớ tuyến của nó một tuyến từ bản thân nó đến đích của RREQ này. Tuy nhiên, trước khi khởi tạo một RREP từ bộ nhớ cho RREQ này, nút phải kiểm tra xem có địa chỉ nào bị trùng lặp trong tuyến được tích lũy trong RREQ cùng với tuyến từ bộ nhớ tuyến của nút này hay không. Cụ thể, phải không được có sự sao lặp dọc theo chuỗi các địa chỉ sau:
Địa chỉ IP nguồn của gói chứa RREP.
Các trường Address[i] trong RREQ
Các nút được ghi trong tuyến thu được từ bộ nhớ tuyến của nút này, ngoại trừ địa chỉ của chính bản thân nút đó.
Nếu có bất kì bản sao nào tồn tại dọc theo các địa chỉ này, thì nút không được gửi một RREP sử dụng tuyến này từ bộ nhớ tuyến. Nút nên tiếp tục xử lý RREQ nếu nó không gửi một RREP.
Nếu RREQ và tuyến từ bộ nhớ tuyến gặp sự hạn chế trên, thì nút cần xây dựng và hồi đáp một RREP được nhớ như sau:
Tuyến nguồn cho RREP này là chuỗi các địa chỉ chặng
initiator, Address[1], Address[2], ..., Address[n], c-route
Với initiator là địa chỉ của nút khởi đầu RREQ, mỗi Address[i] là một địa chỉ từ RREQ và c-route là chuỗi các địa chỉ chặng trong tuyến nguồn tới nút đích này, thu được từ bộ nhớ tuyến của nút. Trong sự ghép nối tuyến được nhớ thành tuyến nguồn để hồi đáp, địa chỉ của chính bản thân nút này phải được loại trừ, vì nó đã có trong danh sách.
Gửi một RREP tới nút khởi đầu RREQ, nút này được xác định trong trường Source Address trong mào đầu gói tin IP.
Tuy nhiên, trước khi gửi RREP được nhớ này, nút có thể trì hoãn hồi đáp để mà tránh sự xuất hiện có thể của “bão” RREP.
Nếu nút hồi đáp một RREP như được chỉ ra ở trên, thì nút không được nhân giống RREQ thêm nữa. Trong trường hợp này, để thay thế, nếu gói tin không chứa một lựa chọn DSR nào khác và không chứa tải trọng sau mào đầu các lựa chọn DSR, thì nút nên hủy bỏ hoàn toàn gói tin. Nếu không (nếu gói tin chứa các lựa chọn DSR khác hoặc chứa bất kì tải trọng nào sau mào đầu các lựa chọn DSR), nút nên chuyển tiếp gói tin theo hướng đướng được nhớ tới đích của RREQ. Cụ thể, nếu nút làm vậy, nót phải sử dụng các bước sau:
Sao chép địa chỉ đích từ lựa chọn RREQ trong mào đầu các lựa chọn DSR tới trường Destination Address trong mào đầu gói IP.
Hủy bỏ lựa chọn RREQ từ mào đầu các lựa chọn DSR trong gói tin, và thêm một lựa chọn tuyến nguồn vào mào đầu các lựa chọn DSR của gói tin.
Trong lựa chọn tuyến nguồn DSR, thiết lập các trường Address[i] để mô tả tuyến nguồn được tìm thấy trong bộ nhớ tuyến của nút này tới đích ban đầu của khám phá tuyến (địa chỉ IP mới của đích gói tin). Cụ thể, nút sap chép các địa chỉ chặng của tuyến nguồn vào trong các trường Address[i] liên tiếp trong lựa chọn tuyến nguồn, với i = 1, 2, 3, …, n. Address[1] ở đây là địa chỉ của chính bản thân nút này ( địa chỉ đầu tiên trong tuyến nguồn đã tìm thấy tù nút này tới đích ban đầu của khám phá tuyến). Giá trị n ở đây là số lượng các địa chỉ chặng trong tuyến nguồn này, ngoại trừ đích của gói tin (nó đã được gán vào trường Destination Address trong mào đầu gói tin IP).
Khởi tạo trường Segments Left trong lựa chọn tuyến nguồn DSR bằng n được xác định ở trên.
Bit F trong lựa chọn tuyến nguồn DSR được thiết lập là 0.
Bit L trong lựa chọn tuyến nguồn DSR được sao chép từ bit External ra dấu chặng cuối trong tuyến nguồn của gói tin, như được xác định trong bộ nhớ tuyến.
Trường Salvage trong lựa chọn tuyến nguồn DSR phải được khởi tạo từ một vài giá trị 0; cụ thể giá trị 0 được dùng có thể là MAX_SALVAGE_COUNT. Do giá trị ban đầu của trường này là 0, các nút chuyển tiếp hoặc nghe được gói tin sẽ không cân nhắc một liên kết tồn tại giữa địa chỉ IP nguồn của gói và địa chỉ Address[1] trong lựa chọn tuyến nguồn DSR. Vì chọn MAX_SALVAGE_COUNT có giá trị 0, các nút sẽ không cố gắng lưu giữ lại bản tin này.
Truyền gói tin tới nút chặng tiếp theo trong tuyến nguồn mới của gói tin.
4.4.2.4 Khởi tạo một RREP
Một nút khởi tạo một RREP để mà hồi đáp cho một RREQ đã được nhận và xử lý. RREP được hồi đáp trong một lựa chọn RREP. Lựa chọn RREP có thể được hồi đáp tới nút khởi đầu của RREQ trong gói tin IP được lưu giữ lại, chỉ được sử dụng để mang lựa chọn RREP, hoặc nó có thể được chứa trong bất kì gói tin IP nào khác được gửi tới địa chỉ này.
Lựa chọn RREP phải được chứa trong mào đầu các lựa chọn DSR trong gói tin được hồi đáp tới nút khởi đầu. Để gán giá trị lựa chọn RREP, nút thực hiện theo các bước sau:
Trường Option Type trong lựa chọn phải được thiết lập giá trị là 3.
Trường Opt Data Len trong lựa chọn phải được thiết lập giá trị là (n x 4) + 3, với n là số lượng các địa chỉ trong tuyến nguồn được hồi đáp.
Nếu nút này là đích của RREQ, bit L trong lựa chọn phải được thiết lập là 0.
Trường Reserved trong lựa chọn phải được khởi tạo là 0.
Chuỗi các địa chỉ chặng trong tuyến nguồn được sao chép vào các trường địa chỉ Address[i] của lựa chọn. Address[1] phải được thiết lập là địa chỉ chặng đầu tiên của tuyến sau nút khởi đầu khám phá tuyến, Address[n] phải là địa chỉ chặng cuối cùng của tuyến nguồn (địa chỉ của nút đích), và mỗi Address[i] phải là các địa chỉ tiếp theo của chặng trong tuyến nguồn được hồi đáp.
Trường địa chỉ đích trong mào đầu IP của gói tin mang lựa chọn RREP phải được thiết lập địa chỉ của nút khởi đầu khám phá tuyến.
Sau khi tạo và gán giá trị cho lựa chọn RREP và gói IP chứa nó, RREP được gửi. Trong việc gửi RREP từ nút này (nhưng không từ các nút chuyển tiếp RREP), nút này nên trì hoãn hồi đáp trong một thời gian Jitter nhỏ được chọn ngẫu nhiên giữa 0 và BroadcastJitter.
Khi hồi đáp bất kì một RREP nào trong trường hợp mà giao thức MAC đang sử dụng trong mạng thì không có khả năng truyền các gói unicast qua các liên kết đơn hướng, tuyến nguồn được sử dụng định tuyến cho gói RREP phải được thu được bởi sự đảo chiều chuỗi các chặng trong gói RREQ. Sự hạn chế trong việc hồi đáp một RREP làm cho một RREP có thể kiểm tra chuỗi các chặng liên kết song hướng, ngăn chặn RREP đang được nhận bởi khởi đầu của khám phá tuyến trừ khi mỗi một chặng trong số các chặng trên qua đó mà RREP được hồi đáp là song hướng.
Nếu việc gửi một RREP tới khởi đầu của RREQ yêu cầu một khám phá tuyến, lựa chọn RREP phải được đội trên bản tin mà chứa RREQ. Việc đội này ngăn chặn một đệ quy phụ thuộc mà ở đó đích của RREQ mới (cái mà là chính bản thânh của khởi đầu RREQ ban đầu) phải thực hiện một RREQ khác để mà hồi đáp RREP của nó.
Nếu việc gửi RREP tới nút khởi đầu của RREQ không yêu cầu một khám phá tuyến, một nút nên gửi một RREP unicast trong sự trả lời cho mỗi RREQ nó nhận được trong đó nó là nút đích.
4.4.2.5 Ngăn chạn các cơn bão RREP
Khả năng của các nút để hồi đáp tới một RREP dựa vào thông tin trong bộ nhớ tuyến của nó có thể dẫn đến kết quả một “cơn bão” RREP có thể xảy ra trong một số trường hợp. Cụ thể, nếu một nút quảng bá một RREQ cho một nút đích trong đó các hàng xóm của nút này có một tuyến trong bộ nhớ tuyến của nó, mỗi hàng xóm có thể cố gắng gửi một RREP, theo cách ấy làm sụt giảm băng thông và có thể làm tăng số xung đột mạng trong khu vực. Ví dụ, hình dưới đây chỉ ra một trạng thái mà trong đó nút B, C, D, E và F tất cả đều nhận từ A một RREQ cho đích G, và mỗi chúng lại có trong bộ nhớ tuyến của mình một tuyến cho đích này:
Hình 3.14: Ví dụ về cơn bão Route Reply
Thông thường, mỗi nút này sẽ cố gắng hồi đáp từ bộ nhớ tuyến của nó, và như vậy tất cả cùng gửi RREP tại cùng một thời điểm, vì tất cả chúng đã nhận quảng bá RREQ tại cùng một thời điểm. Như các RREP đồng thời được gửi từ tất cả các nút nhận RREQ khác nhau có thể là nguyên nhân dẫn đến tắc nghẽn khu vự trong mạng không dây và có thể tạo các sự xung đột gói giữa một vài hay tất cả các hồi đáp này nếu giao thức MAC đang sử dụng khong cung cấp khả năng tránh xung đột giữa các gói này.
Để giảm được các hiệu ứng này, nếu một nút có thể đặt giao diện mạng của nó vào chế độ nhạn hỗn độn, nó có thể trì hoãn gửi việc gửi RREP từ nó trong một khoảng thời gian ngắn, trong khi lắng nghe để xem nút khởi xướng có bắt đầu sử dụng một tuyến ngắn hơn đầu tiên hay không. Cụ thể, nút này có thể trì hoãn gửi RREP trong một thời gian ngẫu nhiên: d = H x (h – 1 + r), với h là động dài của số lượng các chặng mạng cho tuyến được hồi đáp trong RREP của nút, r là một giá trị thay đổi ngẫu nhiên giữa 0 và 1, và H là một giá trị trì hoãn nhỏ không đổi được giới thiệu qua mỗi chặng. Hiệu quả của việc trì hoãn ngẫu nhiên hóa thời gian mà tại đó mỗi nút gửi RREP của nó, với tất cả các nút gửi RREP giữ các tuyến mà có độ dài nhỏ hơn h sẽ được gửi trước nút này, với tất cả các nút gửi RREP giữ các tuyến mà có độ dài lớn hơn h sẽ gửi RREP sau nút này.
Trong vòng khoảng thời gian trì hoãn, nút này nhận hỗn độn tất cả các gói, tìm kiếm các gói đã định trước từ nút khởi đầu của khám phá tuyến cho đích của khám phá tuyến. Nếu như một gói dữ liệu được nhận bởi nút này trong suốt khoảng thời gian trì hoãn sử dụng một tuyến nguồn có độ dài nhỏ hơn hoặc bằng h, nút này có thể luận ra rằng nút khởi đầu khám phá tuyến đã nhận được một RREP chứa một tuyến tốt bằng hoặc tốt hơn. Trong trường hợp này, nút này nên xóa bỏ thời gian trì hoãn và không nên gửi RREP của nó cho khám phá tuyến này.
4.4.3 Xử lý duy trì tuyến
Duy trì tuyến RM ( Route Mantenance) là cơ chế mà khi nút S có một cách nào đó tự tìm thấy đường trong khi đường truyền đang sử dụng bị gián đoạn do cấu hình mạng bị thay đổi hoặc kết nối giữa các nút trong đường truyền đó không hoạt động. Khi duy trì tuyến chỉ ra rằng tuyến đến D bị đứt, S có thể cố gắng thử một đường nào khác để đến D hoặc có thể thực hiện lại cơ chế RD để tìm ra một đường mới. Duy trì tuyến chỉ được sử dụng khi S thực sự gửi gói tin tới D.
Khi bắt đầu hay gửi một gói tin sử dụng một tuyến gốc, mỗi nút truyền gói tin có thể xác thực rằng gói tin đã được nhận bởi chặng kế tiếp dọc theo tuyến gốc hay chưa; các gói được truyền lại ( tới một số lượng lớn nhất có thể) cho đến khi được xác thực là đã được nhận. Sự ghi nhận xác thực này trong nhiều trường hợp có thể cung cấp không giá cho DSR, cái này như một phần tiêu chuẩn hiện tại của giao thức lớp MAC đang được sử dụng. Nếu các kĩ thuật xác thực không sẵn sàng, nút truyền gói tin có thể bố trí một phần nhỏ trong mào đầu gói tin đẻ yêu cầu một phần mềm đặc biệt của DSR báo nhận sự phản hồi của chặng kế tiếp; phần mềm này báo nhận đường truyền trực tiếp thông thường tới nút gửi, nhưng nếu kết nối giữa hai nút là đơn hướng trực tiếp, phần mềm có thể sẽ báo nhận di chuyển qua một chặng khác, như đường nhiều chặng.
Nếu gói tin được gửi lại bởi một vài chặng sau một lượng thời gian lớn nhất và không được xác thực là đã nhận, nút này sẽ gửi trả lại một bản tin ROUTE ERROR tới nút gốc của gói tin, chỉ ra rằng không thể chuyển tiếp gói tin.
4.4.3.1 Sử dụng sự báo nhận lớp liên kết
Nếu giao thức MAC đang sử dụng cung cấp thông tin phản hồi như sự phân phát thành công của một gói dữ liệu, thì việc sử dụng yêu cầu báo nhận DSR và lựa chọn Acknowledgment là không cần thiết. Nếu như sự phản hồi thông tin lớp liên kết sẵn sàng, nó nên được sử dụng để thay thế bất kì kĩ thuật báo nhận nào khác cho duy trì tuyến, và nút không nên sử dụng một sự báo nhận bị động hay sự báo nhận trong lớp mạng cho duy trì tuyến.
Khi sử dụng sự báo nhận lớp liên kết cho duy trì tuyến, thời gian truyền lại và thời gian mà tại đó sự cố gắng truyền lại được sắp xếp được điều khiển bởi sự thực hiện thông thường của lớp liên kết trong mạng.
Khi một nút nhận một báo nhận lớp liên kết cho bất kì gói tin nào trong bộ nhớ đệm duy trì của nó, nút đó nên hủy bỏ gói đó từ bộ nhớ đệm duy trì, cũng như bất kì các gói nào khác trong bộ nhớ đệm duy trì của nó với cùng đích chặc tiếp theo.
4.4.3.2 Sử dụng sự báo nhận bị động
Khi một sự báo nhận lớp liên kết không sẵn sang, nhưng sự báo nhận bị động lại sẵn sang, sự báo nhận bị động có thể được sử dụng cho duy trì tuyến khi khởi đầu hay chuyển tiếp một gói tin tiến tới bất kì chặng nào khác ngoài chặng cuối. Cụ thể, sự báo nhận bị động nên được sử dụng cho duy trì tuyến trong trường hợp như nếu nút có thể đặt giao diện mạng của nó vào chế độ nhận hỗn độn, và nếu các liên kết mạng đã sử dụng cho các gói dữ liệu thường hoạt động song hướng.
Sự duy trì đối với một gói được khởi đầu hay chuyển tiếp qua chặng cuối cùng của nó, do nút nhận sẽ không chuyển tiếp gói tin và như thế không có sự báo nhận bị động sẵn sang để được nghe bởi nút này. Ngoại trừ sự hạn chế này, một nút đồng thời có thể sử dụng nhiều chiến lược báo nhận khác nhau để duy trì tuyến của các gói được khởi đầu hay chuyển tiếp. Ví dụ, hai chiến lược sau có khả năng thực hiện được:
Mỗi khi một nút nhận gói tin để chuyển tiếp tới một nút khác không phải đích cuối cùng, nút đó gửi bản tin nguyên gố mà không yêu cầu một sự báo nhận của lớp mạng đối với nó. Nếu không sự báo nhận bị động nào được nhận trong vòng thời gian PassiveAckTimeout sau sự truyền này, nút sẽ truyền lại gói tin mà không yêu cầu một sự báo nhận của lớp mạng đối với nút; cùng một thời hạn PassiveAckTimeout được dùng cho mỗi sự cố gắng. Nếu không sự báo nhận nào được nhận sau tổng các sự truyền lại TryPassiveAcks của gói tin, báo nhận của lớp mạng được yêu cầu cho tất cả các sự cố gắng còn lại của lớp mạng.
Mỗi nút duy trì một bảng các nút đích chặng tiếp theo có thể, ghi chú dù có hay không sự báo nhận bị động có thể được mong đợi sự truyền tới nút đó. Mỗi khi một nút nhận gói được chuyển tiếp tới một nút khác ngoại trừ địa chỉ IP đích, nút kiểm tra bảng các nút đích chặng tiếp của nó để xác định xem có sử dụng một báo nhận bị động hay một báo nhận lớp mạng cho sự truyền của nút đó hay không. Thời hạn cho gói này cũng có thể được lấy từ bảng này. Một nút sử dụng phương pháp này nên dùng sự báo nhận bị động hơn là báo nhận của lớp mạng.
Trong việc sử dụng báo nhận bị động cho một gói mà nó khởi đầu hay chuyển tiếp, một nút tính toán đến sự nhận được sau đó của một gói mới một báo nhận của gói đầu tiên này nếu cả hai cách kiểm tra sau đều thành công:
Các trường Source Address, Destination Address, Protocol, Identification, và Fragment Offset trong mào đầu IP của hai gói tin phải phù hợp.
Nếu gói này hay gói kia chứa một mào đầu tuyến nguồn DSR, cả hai gói phải chứa một, và giá trị trong trường Segments Left trong mào đầu tuyến nguồn DSR của gói tin mới phải nhỏ hơn trong gói tin ban đầu đó.
Khi một nút nghe nhận được một báo nhận bị động cho bất kì gói tin nào trong bộ nhớ đệm duy trì của nó, nút đó nên hủy bỏ gói tin đó từ bộ nhớ đệm duy trì, cũng như bất kì gói tin nào khác trong bộ nhớ đệm duy trì của nó với cùng đích chặng tiếp theo.
4.4.3.3 Sử dụng báo nhận lớp mạng
Khi một nút khởi đầu hay chuyển tiếp mộg gói và không có kĩ thuật báo nhận khác sẵn sàng để xác định có thể tới được nút chặng tiếp theo trong tuyến nguồn cho duy trì tuyến, nút đó nên yêu cầu một báo nhận lớp mạng từ nút chặng tiếp theo đó. Làm như vậy, nút lồng vào một lựa chọn Acknowledgment Request trong mào đầu các lựa chọn DSR trong gói tin. Trường Identification trong lựa chọn Acknowledgment Request phải được thiếp lập một giá trị riêng qua tất cả các gói hiện tại được truyền bởi nút này tới cùng nút chặng tiếp theo.
Khi một nút nhận một gói tin chứa một lựa chọn Acknowledgment Request, nút đó thực hiện các kiểm tra trên gói tin như sau:
Nếu địa chỉ nút chặng tiếp được chỉ ra cho gói tin này không phù hợp với bất kì địa chỉ IP nào của nút này, thì nút này không được xử lý lựa chọn Acknowledgment Request. Địa chỉ chặng tiếp được xác định là trường địa chỉ Address[i] tiếp theo trong lựa chọn tuyến nguồn DSR trong mào đầu các lựa chọn DSR trong gói tin, hoặc địa chỉ IP đích trong gói nếu gói không chứa một lựa chọn tuyến nguồn DSR hay giá trị của Segments Left là 0.
Nếu gói tin chứa một lựa chọn Acknowledgment, thì nút này không được xử lý lựa chọn Acknowledgment Request.
Nếu cả hai kiểm tra trên đều không thất bại, thì nút này phải xử lý lựa chọn Acknowledgment Request bằng cách gửi một lựa chọn Acknowledgment tới nút chặng trước; làm như vậy, nút thực hiện các bước sau:
Tạo một gói và thiết lập trường IP Protocol bằng số hiệu giao thức được chỉ định cho DSR (48).
Thiết lập trường địa chỉ IP nguồn trong gói này là địa chỉ IP của chính nút này, được sao chép từ tuyến nguồn trong lựa chọn tuyến nguồn DSR trong gói đó.
Thiết lập trường địa chỉ IP đích trong gói này là địa chỉ IP của nút chặng trước, được sao chép từ tuyến nguồn trong lựa chọn tuyến nguồn trong gói đó.
Thêm một mào đầu các lựa chọn DSR. Thiết lập trường Next Header trong mào đầu các lựa chọn DSR giá trị 59, tức “No Next Header”.
Thêm một lựa chọn Acknowledgment vào mào đầu các lựa chọn DSR trong gói; thiết lập trường Option Type trong lựa chọn Acknowledgment này là 6 và trường Opt Data Len là 10.
Sao chép trường Identification từ lựa chọn Acknowledgment Request nhận được vào trường Identification trong lựa chọn Acknowledgment.
Thiết lập trường ACK Source Address trong lựa chọn Acknowledgment là địa chỉ IP nguồn của gói mới này.
Thiết lập trường ACK Destination Address trong lựa chọn Acknowledgment là địa chỉ IP đích của gói tin mới này.
Gửi gói tin.
Các gói tin chứa một lựa chọn Acknowledgment không nên được thay thế trong bộ nhớ đệm duy trì.
Khi một nút nhận một gói tin chứa cả hai lựa chọn Acknowledgment và Acknowledgment Request, nếu nút đó không là đích của lựa chọn Acknowledgment, thì lựa chọn Acknownledgment Request phải được bỏ qua. Nếu không, nút đó phải xủa lý lựa chọn Acknowledgment Request bằng cách hồi đáp một lựa chọn Acknowledgment theo các bước sau:
Tạo một gói tin và thiết lập trường IP Protocol là số hiệu giao thức được chỉ ra trong DSR (48).
Thiết lập trường địa chỉ IP nguồn trong gói này là địa chỉ IP của nút này, được sao chép từ tuyến nguồn của lựa chọn tuyến nguồn DSR trong gói đó.
Thiết lập trường địa chỉ IP đích trong gói này là địa chỉ IP của nút khởi đầu lựa chọn Acknowledgment.
Thêm một mào đầu các lựa chọn DSR vào gói tin. Thiết lập trường Next Header trong mào đầu các lựa chọn DSR giá trị 59, tức “No Next Header”.
Thêm một lựa chọn Acknowledgment vào mào đầu các lựa chọn DSR trong gói; thiết lập trường Option Type trong lựa chọn Acknowledgment này là 6 và trường Opt Data Len là 10.
Sao chép trường Identification từ lựa chọn Acknowledgment Request nhận được vào trường Identification trong lựa chọn Acknowledgment.
Thiết lập trường ACK Destination Address trong lựa chọn là địa chỉ IP đích của gói tin mới này.
Gửi gói tin trực tiếp tới đích. Địa chỉ IP đích phải được xem như một nút hàng xóm trực tiếp: sự truyền tới nút đó phải được thực hiện trong một chặng chuyển tiếp IP đơn, không có khám phá tuyến và không có sự tìm kiếm trong bộ nhớ tuyến. Hơn nữa, gói này không được chứa một yêu cầu báo nhận DSR, không được gửi lại đối với duy trì tuyến, và không được mong đợi một báo nhận lớp liên kết hay báo nhận bị động.
Khi sử dụng báo nhận lớp mạng cho duy trì tuyến, nột nút nên sử dụng một thuật toán thích ứng để xác định thời hạn truyền lại cho mỗi sự cố gắng gửi một yêu cầu báo nhận.
4.4.3.4 Xử lý một Route Error
Khi một nút không thể xác nhận có thể tới được nút chặng tiếp theo sau khi cố gắng với tới một giá trị lớn nhất của số lần thử truyền lại, nó nên gửi một RERR tới địa chỉ IP nguồn của gói tin. Khi gửi một RERR đối với một gói chứa một trong hai lựa chọn RERR hoặc lựa chọn Acknowledgment, một nút nên thêm các lựa chọn hiện tại này vào RERR của nó.
Một nút truyền RERR phải thực hiện theo các bước sau:
Tạo một gói tin IP và thiết lập trường IP Protocol là số hiệu giao thức được chỉ ra trong DSR (48). Thiết lập trường địa chỉ đích trong mào đầu gói IP là địa chỉ của nút này.
Nếu trường Salvage trong lựa chọn tuyến nguồn DSR trong gói tin gây ra RERR là 0, thì sao chép trường địa chỉ nguồn của gói gây ra RERR vào trường địa chỉ đích trong mào đầu gói IP; nếu không, sao chép trường Address[1] từ lựa chọn tuyến nguồn DSR của gói tin gây ra RERR vào trường địa chỉ đích trong mào đầu gói IP mới.
Lồng mào đầu các lựa chọn DSR vào gói mới.
Thêm lựa chọn RERR vào gói mới, thiết lập kiểu lỗi là NODE_UNREACHALBE, giá trị Salvage là giá trị Salvage từ lựa chọn tuyến nguồn DSR của gói gây ra RERR, và trường Unreachable Note Address là địa chỉ của nút chặng tiếp theo từ tuyến nguồn ban đầu. Thiết lập trường Error Source Address là địa chỉ IP của nút này, và trường Error Destination Address là địa chỉ đích của gói IP mới.
Nếu gói tin gây ra RERR chứa bất kì lựa chọn RERR hay Acknowledgment nào, nút có thể thêm vào RERR của nó mỗi lựa chọn này, với sự bắt buộc sau:
Nút không được bao gồm bất kì một lựa chọn RERR nào từ gói gây ra RERR mới, mà total Salvage count của RERR được bao gồm đó sẽ lớn hơn MAX_SALVAGE_COUNT trong gói mới.
Nếu bất kì lựa chọn RERR nào từ gói gây ra RERR mới không được bao gồm trong gói tin, nút không được bao gồm bất kì lựa chọn RERR hay Acknowledgment nào theo sau từ gói gây ra RERR mới.
Bất kì lựa chọn nào thêm vào từ gói gây ra RERR phải theo sau RERR mới trong gói tin.
Trong việc thêm các lựa chọn thêm vào này vào RERR mới, quyền của các lựa chọn này từ gói gây ra RERR phải được bảo vệ.
Gửi gói tin đi.
4.4.3.5 Sự xử lý một lựa chọn Route Error được nhận
Khi một nút nhận một gói tin chứa một lựa chọn RERR, nút đó phải xử lý lựa chọn RERR theo các bước sau:
Nút phải hủy bỏ từ bộ nhớ tuyến của nó liên kết từ nút được xác định bởi trường Error Source Address tới nút được xác định bởi trường Error Destination Address. Nếu nút thực hiện trong bộ nhớ tuyến của nó như một liên kết được lưu giữ, chỉ các kết nối đơn này bị hủy bỏ; nếu nút thực hiện bộ nhớ tuyến của nó như một đường được lưu giữ, tất cả các tuyến mà sử dụng liên kết này hoặc bị cắt cụt trước liên kết đó hoặc bị hủy bỏ hoàn toàn.
Nếu lựa chọn theo sau RERR là một lựa chọn Acknowledgment hoặc RERR được gửi bởi nút này, sao chép các lựa chọn DSR theo sau RERR hiện tại vào một gói mới với địa chỉ IP nguồn bằng địa chỉ IP của chính nút này và địa chỉ IP đích là địa chỉ đích cảu lựa chọn Acknowledgment hoặc RERR. Truyền gói này với giá trị Salvage count trong lựa chọn tuyến nguồn DSR được thiếp lập bằng giá trị Salvage của RERR.
Hơn nữa, sau khi xử lý RERR như mô tả ở trên, nút có thể khởi đầu một khám phá tuyến cho bất kì nút đích nào mà nó khi đó không có tuyến trong bộ nhớ tuyến của nó như một kết quả của quá trình xử lý RERR này, nếu nút có sự biểu thị rằng một tuyến tới đích đó được cần. Tuy nhiên, bất kì nút nào cũng phải giới hạn tốc độ mà tại đó nó khởi đầu các khám phá tuyến mới cho bất kì địa chỉ đích riêng nào, và bất kì khám phá tuyến mới nào được khởi đầu trong đường này như một phần của xử lý RERR này phải tuân theo như một phần của giới hạn này.
4.4.3.6 Lưu giữ lại một gói
Khi một nút trung gian chuyển tiếp một gói tin tìm thấy qua duy trì tuyến rằng liên kết chặng tiếp theo dọc theo tuyến của gói tin đó bị gãy, nếu nút có một tuyến khác tới địa chỉ đích của gói IP trong bộ nhớ tuyến của nó, nút nên lưu lại gói tin hơn là hủy bỏ nó. Làm như vậy sử dụng tuyến đã tìm thấy trong bộ nhớ tuyến của nó, nuts này xử lý gói tin như sau:
Nếu giau thức MAC đang dùng trong mạng không có khả năng truyền các gói unicast qua các liên kết đơn hướng, thì nếu gói này chứa một lựa chọn RREP, di chuyển và hủy bỏ lựa chọn RREP trong gói tin; nếu mào đầu các lựa chọn trong gói không chứa các lựa chọn DSR nào hoặc chỉ chứa lựa chọn tuyến nguồn DSR, rời đi các mào đầu từ gói tin. Nếu kết quả sau đó gói chỉ chứa một mào đầu IP, nút không nên lưu lại gói tin và để thay thế nên hủy bỏ toàn bộ gói tin.
Sửa đồi lựa chọn tuyến nguồn DSR hiện tại trong gói tin để các trường Address[i] mô tả tuyến nguồn đã tìm thấy trong bộ nhớ tuyến của nút này tới địa chỉ đích cảu gói tin IP. Cụ thể, nút sao chép các địa chỉ chặng của tuyến nguồn vào các trường Address[i] liên tiếp trong lựa chọn tuyến nguồn DSR, với i = 1, 2, 3, …, n. Address[1] ở đây là địa chỉ của chính nút lưu giữ gói tin. Giá trị n ở đây là số lượng các địa chỉ chặng trong tuyến nguồn này, ngoại trừ đích của gói tin.
Khởi tạo trường Segments Left trong lựa chọn tuyến nguồn DSR bằng n như được xác định ở trên.
Bit F trong lựa chọn tuyến nguồn DSR được thiết lập là 0.
Bit L trong lựa chọn tuyến nguồn DSR được sao chép từ bit External báo hiệu chặng cuối trong tuyến nguồn của gói tin, như được xác định trong bộ nhớ tuyến.
Trường Salvage trong lựa chọn tuyến nguồn DSR được thiết lập là 1 cộng thêm giá trị của trường Salvage trong lựa chọn tuyến nguồn DSR của gói tin là nguyên nhân dẫn đến lỗi.
Truyền gói tin tới nút chặng tiếp theo trên truyến nguồn mới trong gói tin.
Nút trong trường hợp này cũng nên hồi đáp một RERR tới nút nguồn gửi gói tin. Nếu nút chọn lưu giữ gói tin, nó nên thực hiện sau khi khởi đầu RERR.
Khi hồi đáp bất kì RREP nào trong trường hợp trong đó giao thức MAC đang sử dụng trong mạng không có khả năng truyền các gói unicast qua các liên kết đơn hướng, tuyến nguồn được sử dụng cho định tuyến gói RREP phải được thu được bởi sự đảo chiều các chặng trong gói RREQ. Sự hạn chế này trong việc hồi đáp một RREP và trong việc lưu giữ lại một gói mà chứa một lựa chọn RREP cho phép RREP kiểm tra chuỗi các chặng có là song hướng hay không, ngăn chặn RREP đang được nhận bởi nút khởi đầu khám phá tuyến trừ khi mỗi chặng qua đó mà RREP được hồi đáp là song hướng.
4.4.4 Hỗ trợ nhiều giao diện mạng
DSR tự động hỗ trợ các tuyến nối trong các cấu hình hỗn tạp, xuyên suốt các kiểu địa chỉ logic của nó. Quy ước sử dụng địa chỉ IP, mỗi nút của mạng ad hoc có thể cấu hình một địa chỉ IP khác nhau cho mỗi giao diện mạng có thể của nó, mỗi nút sử dụng DSR chọn một trong các địa chỉ này để làm địa chỉ nhà của mình để sử dụng trong tất cả truyền thông trong mạng ad hoc. Việc sử dụng một địa chỉ IP đơn cho mỗi nút này mang đến cho DSR khả năng xem xét toàn bộ mạng như một miền tuyến đơn. Để phân biệt các giao diện mạng khác nhau trên một nút, mỗi nút quy định độc lập chỉ số giao diện cục bộ duy nhất cho mỗi giao diện mạng của nó.
Chỉ số giao diện cho bất kỳ giao diện nào của nút là một giá trị mờ được quy định bởi chính nút đó. Đặc biệt giá chị được chọn phải là duy nhất giữa các giao diện mạng trong các nút riêng lẻ mà không có ý nghĩa đối với các nút khác và cũng không cần kết hợp với bất kì nút nào trong việc chọn thông số giao diện của chính nó. Trong nhiều hệ điều hành, một giá trị duy nhất giúp cho việc nhận dạng một giao diện mạng có hiệu lực và có thể được sử dụng cho mục đích này.
Một nút sử dụng DSR có thể có nhiều giao diện mạng mà hỗ trợ định tuyến DSR trong mạng ad hoc. Nút này phải có một vài cách để xác định giao diện nào được dùng để chuyển tiếp các gói RREQ. Ví dụ, một nút có thể chọn chuyển tiếp tất cả các RREQ qua tất cả các giao diện mạng.
Khi một nút với nhiều các giao diện mang cái mà hỗ trợ DSR quảng bá một RREQ trên một giao diện mạng và nhận một RREQ trên một giao diện mạng khác, trong trường hợp đặc biệt này nó phải sửa đổi danh sách điạ chỉ trong RREQ như sau:
Gắn địa chỉ IP của node cho giao diện mạng đến.
Gắn địa chỉ IP của node cho giao diện mạng đi.
Khi một nút chuyển tiếp một gói tin chứa một tuyến nguồn, nó phải cho rằng nút chặng tiếp có thể tới được trên giao diện đến, trừ jhi chặng tiếp là địa chỉ của một trong các giao diện khác của nút này, trong trường hợp này nút phải bỏ qua địa chỉ này trên tuyến nguồn và xử lý gói tin trong cùng đường nếu như nó vừa nhận gói tin từ giao diện mạng đó.
Hình 3.15: Mạng ad hoc bao gồm các nút với các giao diện mạng hỗn tạp
Ví dụ, hình 3.15 minh họa một mạng ad hoc đơn giản với 4 nút, trong đó nút A sử dụng một loại giao diện mạng (được miêu tả như hình tam giác trong hình), nút C và nút D cùng sử dụng một giao diện mạng khác (được mô tả là hình tròn), và nút B được cấu hình với cả hai loại giao diện mạng trên và có thể chuyển tiếp gói tin giữa hai loại kĩ thuật vô tuyến khác nhau. Sự đánh nhãn số mỗi giao diện mạng chỉ ra chỉ số giao diện được chọn bởi nút tương ứng với giao diện đó. Từ các chỉ số giao diện mạng được chọn độc lập bởi mỗi nút, ví dụ, ở nút B và D đều chọn chỉ số là 1 cho giao diện mạng tròn của nó, nhưng ở C lại chọn là 4.
Chỉ số giao diện được sử dụng như một phần của mỗi chặng trong mỗi tuyến nguồn được khám phá và sử dụng bởi DSR. Một cách cụ thể, một phần xuyên suốt trong mạng ad hoc từ nút nguồn N0 tới một nút đích Nm được mô tả đầy đủ như chuỗi các chặng N0/i0 → N1/i1 →N2/i2 → …→ Nm/im ở đó kí hiệu Nk/ik được sử dụng để chỉ ra rằng nút Nk phải truyền gói tin sử dụng giao diện mạng ik của nó trong thứ tự phân phát gói tin qua nút chặng tiếp tới nút Nk+1.
Trong việc gửi một bản tin RREQ, một nút thêm vào bản ghi tuyến trong bản tin không chỉ là địa chỉ của chính nó mà còn thêm vào chỉ số giao diện của giao diện mạng của nó mà tại đó bản tin được chuyển tiếp. Cho phép sự đảo chiều trong chuỗi các chặng để tạo ra một tuyến ngược trở lại nút nguồn, nút chuyển tiếp bản tin RREQ cũng thêm vào trong bản ghi tuyến của bản tin chỉ số giao diện tại giao diện mạng mà nó nhận gói tin RREQ. Ví dụ, tuyến nguồn được thể hiện trong hình 8 là A/1 → B/1 → C/4 → D/1. Tuyến đảo ngược tương ứng là D/1 → C/4 → B/2 → A/1. Các chỉ số giao diện đại diện cho một tuyến được mang trong bản tin RREQ, RREP và trong tuyến nguồn ở mào đầu của gói dữ liệu.
Nếu một nút mà có nhiều giao diện mạng trước đây hỗ trợ DSR nhận gói tin gửi với một tuyến nguồn định rõ một sự thay đổi giao diện mạng, mà không sẵn sàng nữa, nó có thể gửi một RERR tới nguồn của gói tin mà không có sự cố gắng chuyển tiếp gói tin trên giao diện mạng đến, trừ khi mạng dử dụng một kĩ thuật tự động cấu hình cái mà có thể cho phép nút khác thu được địa chỉ chưa được dùng hiện tại của giao diện mạng không được dùng.
4.4.5. Sự phân mảnh và ghép lại IP
Khi một nút sử dụng DSR mong muốn phân mảnh một gói tin mà chứa một mào đầu DSR mà không chứa lựa chọn RREQ, nó phải thực hiện theo các bước sau:
Bỏ mào đầu các lựa chọn DSR từ gói tin.
Phân mảnh gói sử dụng xử lý phân mảnh IP thông thường. Tuy nhiên, khi xác định kích cỡ của mỗi mảnh tạo ra từ gói gốc, kích thước phân mảnh phải được giảm bớt bởi mào đầu các lựa chọn DSR từ gói tin ban đầu.
Đóng gói IP- in- IP cho mỗi phân mảnh. Địa chỉ IP đích của gói ở ngoài (sự đóng gói) phải được thiết lập bằng địa chỉ đích của gói ban đầu.
Thêm mào đầu các lựa chọn DSR từ gói tin ban đầu vào mỗi gói được đóng. Nếu một mào đầu tuyến nguồn hiện nay ở trong mào đầu các lựa chọn DSR, tăng trường Salvage.
Khi một nút sử dụng giao thức DSR nhận một gói được đóng theo IP- in- IP đã được xác định trước bởi nó, nó nên mở gói tin và xử lý gói trong theo chuẩn xử lý ghép IP.
4.4.Vị trí của chức năng định tuyến DSR trong mô hình tham khảo ISO
Khi thiết kế DSR, phải xác định rõ tại lớp nào giao thức định tuyến sẽ được thực hiện. Có thể cân nhắc hai lựa chọn: định tuyến tại lớp liên kết ( ISO lớp 2) và định tuyến tại lớp mạng (ISO lớp 3). Đầu tiên, người ta lựa chọn định tuyến tại lớp liên kết vì những lý do sau:
Thực tế, sự vận hành giao thức DSR tại lớp liên kết làm cực đại hóa số lượng các nút di động mà có thể tham gia vào các mạng ad hoc. Ví dụ, giao thức có thể định tuyến khá đều nhau giữa các nút IPv4, IPv6, IP X.
Về mặt lịch sử, DSR được phát triển từ phiên bản quảng bá nhiều chặng của giao thức ARP, nó như một dạng kĩ thuật định tuyến được sử dụng trong IEEE 802. Đó là giao thức lớp 2.
Về kĩ thuật sử dụng, DSR được thiết kế đủ đơn giản để có thể là phương tiện trực tiếp trong vi chương trình bên trong các card giao diện mạng, phần mềm nằm ở lớp dưới lớp 3 trong nút di động. Người ta nhận thấy tiềm năng lớn trong sự hoạt động của DSR trong vòng phủ sóng của nút di động xung quanh trạm cơ sở cố định. Các nút di động mặt khác có thể không kết nối được với trạm cơ sở bởi các yếu tố như khoảng cách, fading, hoặc do các nguồn nhiễu.
Tuy nhiên, cuối cùng, người ta đã quyết định rõ và thực hiện DSR như giao thức ở lớp 3, bởi vì nó là lớp duy nhất mà tại đó người ta có thể thực hiện hỗ trợ các nút với nhiều giao diện mạng khác loại nhau.
V.Tài liệu tham khảo
1.Các diễn đàn về viễn thông và mạng :
www.vntelecom.org
www.saobacdau-acad.vn
www.wimaxpro.org
www.vnpro.org
www.quantrimang.com
2.Một số tài liệu tiếng anh :
[1]. Wireless Mesh Networking: Architecture, Protcols and Standards (Yan Zhang – Jijun Luo – Honglin Hu.)
[2]. Dynamic Source Routing in Ad Hoc Wireless Networks. (David B. Johnson – David A. Maltz.)
[3]. Wireless Mesh Networks: Architecture and Protcols (Ekram Hossain – Kin K.Leung)
[4].Adhoc networks : Fundamental Properties and Network Topologies (Ramin Hekmat)
[5].The handbook of Adhoc Wireless Networks (Mohammad Ilyas)
Các file đính kèm theo tài liệu này:
- Nguyen Quang Hung.doc