Giao thức định tuyến nguồn động (DSR) 55

Một phần của tài liệu Mô phỏng và đánh giá các giao thức định tuyến trong mạng ad hoc (Trang 60)

DSR là giao thức định tuyến theo yêu cầu dựa trên khái niệm định tuyến nguồn nghĩa là trong tiêu đề của mỗi gói tin sẽ chứa một danh sách các nút mạng theo thứ tự mà bản tin phải đi qua để đến nút mạng đích. DSR không sử dụng bản tin định kỳ, nên giảm

được băng thông mạng, bảo tồn được năng lượng pin và giảm được thông tin định tuyến. Để thực hiện những việc trên DSR dựa trên sự hỗ trợ của lớp MAC (lớp MAC sẽ thông tin cho giao thức định tuyến về trạng thái liên kết).

Việc tập hợp thông tin về topo mạng tại nút nguồn của mỗi gói cho phép nút nguồn phân phát các gói tin một cách hữu hiệu trong mạng. Điều này rất thích hợp với việc quản lý tài nguyên trong mạng Ad-hoc.

Giao thức DSR dựa trên định tuyến nguồn có 2 lợi thế. Thứ nhất, giao thức có thể chứng minh một cách đơn giản tính không lặp vòng vì tuyến nguồn được sử dụng để điều khiển định tuyến các gói. Thứ hai, mỗi tuyến nguồn là một bản ghi về một đường truyền cụ thể, tin cậy để truyền các thông tin qua mạng.

DSR đã sử dụng các tuyến nguồn và mỗi gói được định tuyến dựa trên một tuyến

nguồn khám phá được, tuy nhiên những cải thiện gần đây đối với DSR đã cho phép hầu hết các gói tin không phải mạng theo phần tiêu đề chứa thông tin đầy đủ về tuyến nguồn.

2.4.2 Mô tả 

Giao thức DSR gồm 2 cơ chế cơ bản: Khám phá tuyến (Route Discovery) và Duy trì tuyến (Route Maintenance). Hai cơ chế này hoạt động hoàn toàn theo yêu cầu.

- Khám phá tuyến: một nút nguồn S muốn gửi một bản tin tới nút đích D mà không có một định tuyến nào tới D, nó sẽ thực hiện quá trình khám phá tuyến sử dụng định tuyến nguồn.

- Duy trì tuyến: khi nút nguồn S phát hiện topo mạng thay đổi làm liên kết tới đích bị đứt, nó sẽ không sử dụng tuyến đường hiện tại tới D vì liên kết trên tuyến đó không còn làm việc. Thay vào đó nút nguồn S sẽ sử dụng những tuyến đường khác mà nó biết để tới D, hoặc lặp lại quá trình khám phá tuyến để tìm tuyến đường mới. Duy trì tuyến chỉ sử dụng khi nút S gửi bản tin tới D.

DSR không yêu cầu bất kỳ các bản tin định kỳ nào khác nên số bản tin định tuyến khá

nhỏ đặc biệt khi mạng ổn định (các nút chuyển động ít). Khi các nút chuyển động

nhiều hơn hoặc khi quá trình trao đổi thay đổi, các bản tin định tuyến tự động cân bằng để giám sát những tuyến hiện đang sử dụng.

Sau một quá trình khám phá tuyến, một nút có thể học và lưu lại nhiều tuyến đường tới đích. Điều này cho phép các nút mạng phản ứng nhanh khi phát hiện tuyến thay đổi, một nút có nhiều tuyến tới đích có thể sử dụng một tuyến khác khi tuyến đang dùng bị đứt. Việc này sẽ tránh phát sinh nhiều bản tin định tuyến để thực hiện quá trình khám phá tuyến mới mỗi lần tuyến đang sử dụng không hoạt động.

Hoạt động của quá trình khám phá tuyến và duy trì tuyến được thiết kế để cho phép kết nối một chiều và hỗ trợ các tuyến không đối xứng làm tăng khả năng thực thi và kết nối trong mạng. Đặc biệt trong môi trường không dây, ảnh hưởng của các yếu tố như hướng anten, hướng truyền, nhiễu… làm cho liên kết 2 chiều giữa các nút mạng nhiều khi hoạt động không hiệu quả.

2.4.2.1 Khám phá tuyến 

Giao thức DSR sử dụng phần tiêu đề trong trường địa chỉ IP của bản tin định tuyến để mang thông tin điều khiển. Định dạng của phần tiêu đề:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Next Header |F| Reserved | Payload Length Options

Trong đó:

Next Header: xác định kiểu giao thức (TCP hay UDP) của lớp tiếp theo (lớp transport) F: cờ điều khiển, được thiết lập bằng 0

Reserved: gửi đi với giá trị 0 và được bỏ qua ở bên nhận

Payload Length: chiều dài của trường Options bằng tổng chiều dài của tất cả các option Options: gồm các mục điều khiển (yêu cầu tuyến, đáp ứng tuyến…)

Khi một nút gửi một bản tin đến một đích nào đó thì trước hết nó phải tham vấn bộ nhớ tuyến để xác định là có một tuyến khả thi nào để đến đích đó chưa. Bộ nhớ tuyến là một cây định tuyến từ nút nguồn tới nút đích. Nếu trong bộ nhớ tuyến đã có một tuyến chưa hết hiệu lực để đến đích cần thiết thì nút sẽ sử dụng tuyến này để gửi gói tin đi. Còn nếu không thì nó buộc phải khởi đầu một quá trình khám phá tuyến tự động tìm tuyến đường tới nút đích bằng cách phát quảng bá một bản tin yêu cầu tuyến. Một option yêu cầu tuyến được đặt vào trường Options trong phần tiêu đề của trường IP của bản tin định tuyến. Định dạng của option yêu cầu tuyến trong bản tin định tuyến:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Option Type | Opt Data Len | Identification Target Address

Address [1] Address [2]

….

Address [n]

Hình 2-12 Định dạng mục yêu cầu tuyến Trong đó:

Option Type: xác định kiểu của option, trong trường hợp này là yêu cầu tuyến Opt Data Len: chiều dài của option

Identification: trường nhận dạng được khởi tạo bởi nút nguồn. Mỗi bản tin yêu cầu tuyến được xác định bởi một giá trị nhận dạng duy nhất. Giá trị này thay đổi mỗi khi nút khởi tạo một yêu cầu tuyến mới. Mặt khác, giá trị này cũng cho phép nút nhận xác định liệu nó đã có định tuyến được yêu cầu chưa, nếu nút nhận tìm thấy một giá trị xác nhận của định tuyến trong bản tin yêu cầu tuyến, nó sẽ loại yêu cầu tuyến vừa nhận được.

Target Address: địa chỉ IP của nút đích

Address [1..n]: danh sách địa chỉ các nút bản tin yêu cầu tuyến đã đi qua. Địa chỉ của nút khởi tạo bản tin yêu cầu tuyến không có trong danh sách này.

Ngoài ra trường đia chỉ trong bản tin định tuyến được thiết lập:

Địa chỉ nguồn: là địa chỉ IP của nút khởi tạo bản tin yêu cầu tuyến. Các nút trung gian có thể quảng bá lại bản tin này nhưng không được thay đổi trường địa chỉ nguồn này. Địa chỉ đích: được thiết lập là địa chỉ IP broadcast 255.255.255.255

TTL (Time to live): có giá trị từ 1 đến 255, để giới hạn số chặng mà bản tin đi qua. Khi đi qua mỗi chặng trường TTL sẽ giảm 1, khi TTL bằng 0 thì bản tin sẽ bị loại.

Mỗi khi một nút nhận được bản tin yêu cầu tuyến, nó sẽ kiểm tra bộ nhớ tuyến:

Nếu trong bộ nhớ tuyến không có định tuyến được yêu cầu, nút nhận sẽ cập nhật địa chỉ của nó vào danh sách tuyến trong bản tin yêu cầu và quảng bá lại bản tin yêu cầu tới các hàng xóm tiếp theo của nút.

Nếu nút nhận là nút đích hoặc trong bộ nhớ tuyến của nút nhận có định tuyến tới đích, nó sẽ gửi bản tin trả lời trở lại nút nguồn. Trường hợp là nút đích, nó sẽ đảo các định tuyến trong danh sách tuyến của bản tin yêu cầu tuyến và ghi vào danh sách tuyến của bản tin trả lời. Nếu trường hợp là nút trung gian có định tuyến tới đích, nó phải gắn thêm định tuyến của nó tới đích vào danh sách tuyến. Khi nút nguồn nhận được bản tin trả lời, nó sẽ lưu lại tuyến này trong bộ nhớ tuyến của nó.

Nếu trong danh sách tuyến của bản tin yêu cầu tuyến đã có địa chỉ của nút nhận (bản

tin được quảng bá lại vì một lý do nào đó) thì nút này sẽ bỏ bản tin yêu cầu tuyến và

không xử lý thêm.

Khi nút nguồn S muốn gửi một bản tin tới D nhưng không tìm thấy định tuyến tới D trong bộ nhớ tuyến của nó, nút S sẽ khởi tạo bản tin yêu cầu tuyến và quảng bá tới các nút hàng xóm của nó. Nút 1 và 4 nhận được bản tin yêu cầu tuyến sẽ kiểm tra trong bộ nhớ tuyến của nó tuyến đường tới đích. Nhận thấy không có tuyến đường phù hợp, 2 nút này lưu địa chỉ của nó vào danh sách tuyến trong bản tin yêu cầu tuyến rồi quảng bá tiếp bản tin này tới các hàng xóm tiếp theo. Quá trình quảng bá tiếp tục cho tới khi nút 3 hoặc nút D nhận được bản tin yêu cầu.

Để trả về đáp ứng tuyến, nút tương ứng phải có một tuyến về nút nguồn. Nếu đã có một tuyến như thế trong bộ nhớ tuyến của mình thì nút có thể sử dụng tuyến đó. Nếu không có một tuyến như thế nhưng có các đường thông đối xứng thì nút có thể đảo ngược tuyến trong bảng ghi tuyến. Nghĩa là trường hợp này có thể áp dụng cho môi trường mà liên kết giữa các nút mạng là liên kết 2 chiều. Tuy nhiên, trong môi trường vô tuyến, đôi khi liên kết một chiều lại hiệu quả hơn liên kết 2 chiều. Khi đó nút buộc phải khởi đầu một quá trình khám phá tuyến mới và để tránh trường hợp lặp không xác định quá trình khám phá tuyến, nó phải mang cả bản tin trả lời trên bản tin yêu cầu của nó. Đinh dạng option trả lời tuyến trong bản tin trả lời:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

Option Type | Opt Data Len |L| Reserved

Address [1] Address [2]

Address [n]

Hình 2-14 Định dạng mục đáp ứng tuyến Trong đó:

Option Type: xác định kiểu của option, trong trường hợp này là đáp ứng tuyến Opt Data Len: chiều dài của option

L (Last Hop External): xác định chặng cuối cùng bản tin trả lời đi qua trước khi về tới nguồn.

Reserved: gửi đi với giá trị 0 và được bỏ qua ở bên nhận

Address [1..n]: danh sách tuyến mà bản tin trả lời phải đi qua để trở về nguồn, được sao chép lại từ danh sách tuyến trong bản tin yêu cầu.

Ngoài ra trường địa chỉ được thiết lập:

Địa chỉ nguồn: là địa chỉ của nút gửi bản tin trả lời.

Địa chỉ đích: là địa chỉ của nút nguồn khởi tạo bản tin yêu cầu tuyến, được sao chép lại từ địa chỉ nguồn trong bản tin yêu cầu tuyến.

Hình 2-15 Gửi bản tin trả lời

Khi nút 3 nhận được bản tin yêu cầu tuyến, nếu trong bộ nhớ tuyến có một tuyến

đường tới đích, nó sẽ đặt danh sách tuyến trong bản tin yêu cầu cùng với tuyến đường

tới đích vào danh sách tuyến trong bản tin trả lời và gửi trở lại theo tuyến đường vừa thiết lập. Nếu nút 3 không có tuyến phù hợp, nó tiếp tục quảng bá bản tin yêu cầu tới nút đích D và D cũng xử lý tương tự.

Khi khởi tạo thủ tục khám phá tuyến, các nút gửi sẽ lưu lại bản sao của bản tin ban đầu trong bộ đệm gửi (Send Buffer). Ngoài ra, bộ đệm gửi còn chứa bản sao của các gói tin không truyền đi được do chưa tìm ra một tuyến nguồn tới đích. Mỗi gói trong bộ đệm gửi được gán một tem thời gian chỉ ra thời gian chúng tồn tại trong bộ đệm và bản tin sẽ bị loại bỏ sau một thời gian xác định (timeout); để bộ đệm gửi không bị tràn, kỹ thuật FIFO hoặc kỹ thuật tương đương khác có thể được sử dụng để truyền các gói tin đó đi trước khi chúng hết hạn.

Trong trường hợp gói tin còn lưu lại trong bộ đệm gửi mà chưa truyền đi được thì nút mạng lại thiết lập một thủ tục khám phá tuyến mới tùy theo địa chỉ đích của các bản

tin. Tuy nhiên, tần xuất khởi tạo của khám phá tuyến mới cần phải được giới hạn do có thể xảy ra trường hợp đích của thủ tục khởi tạo tuyến đã thay đổi và không thể tới được. Trên thực tế, do giới hạn về phạm vi truyền dẫn vô tuyến và sự di chuyển của các nút trong mạng nên nhiều khi cấu trúc mạng bị phân mảnh, nghĩa là không có thứ tự sắp xếp của các chặng mà qua đó gói tin được chuyển tiếp tới đích. Kiểu phân mảnh mạng như vậy có thể hiếm gặp hoặc phổ biến tùy thuộc vào kiểu di chuyển và mật độ của các nút trong mạng.

Khi một thủ tục khám phá tuyến được khởi tạo thì một lượng lớn các bản tin yêu cầu tuyến không hữu ích (overhead) sẽ được quảng bá từ nút này tới tất cả các nút trong mạng. Để giảm số bản tin yêu cầu tuyến không hữu ích này, mỗi nút sẽ sử dụng một thuật toán back-off theo hàm mũ để giới hạn tốc độ khởi tạo quá trình khám phá tuyến tới cùng một đích bằng cách nhân đôi thời gian timeout giữa 2 lần khám phá tuyến thành công tới cùng một đích. Nếu các nút vẫn cố gửi các bản tin tới cùng đích nhiều hơn cho phép, thì các bản tin sau sẽ được lưu trong bộ đệm gửi cho tới khi nhận được bản tin đáp ứng tuyến tuy nhiên nút này cũng sẽ không khởi tạo một khám phá tuyến mới cho tới khi khoảng thời gian cho phép giữa những lần khám phá tuyến mới hết hạn.

Một số tối ưu trong khám phá tuyến:

Giới hạn số chặng trong yêu cầu tuyến: mỗi bản tin yêu cầu tuyến chứa một trường thông tin: “số chặng giới hạn” được sử dụng để giới hạn số các nút trung gian có thể tham gia khi chuyển tiếp các bản tin yêu cầu tuyến. Khi một yêu cầu tuyến được chuyển đi, giới hạn này sẽ giảm và khi đạt giá trị 0, bản tin yêu cầu tuyến sẽ bị loại bỏ dù chưa tới được nút đích.

bản tin trả lời tuyến tới nút nguồn thay vì chuyển tiếp bản tin yêu cầu tuyến. Trong bản tin trả lời tuyến nút sẽ dung bản ghi tuyến của mình để liệt kê thứ tự các chặng mà nó sao chép được từ bản tin yêu cầu tuyến vừa chuyển tiếp tới nó. Tối ưu này đã làm giảm thời gian chờ của các trả lời tuyến và ngăn chặn được việc phát tràn lan các yêu cầu tuyến trên toàn bộ mạng.

Ngăn chặn cơn bão trả lời tuyến: trong topo mạng lớn không thể tránh khỏi “cơn bão” trả lời tuyến khi có nhiều nút tham gia vào quá trình khám phá tuyến. Để giảm tác động này, các nút mạng sẽ đặt các cổng mạng ở chế độ nhận không phân biệt, do đó nó có thể làm trễ việc gửi bản tin trả lời tuyến trong một khoảng thời gian ngắn trong khi vẫn lắng nghe xem liệu nút nguồn có sử dụng định tuyến ngắn hơn không.

2.4.2.2 Duy trì tuyến 

Khi gửi hoặc chuyển tiếp một bản tin tới nút đích sử dụng tuyến nguồn, mỗi nút sẽ phải xác nhận xem bản tin đã đến được nút tiếp theo trên tuyến nguồn hay chưa; bản tin sẽ được truyền lại (sau một số lần cho phép) cho tới khi nút này xác nhận được nó đã đến được nút tiếp theo. Mỗi nút khi phát bản tin đến nút hàng xóm tiếp theo sẽ kèm theo một yêu cầu xác nhận:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

OptionType | Opt Data Len | Identification Hình 2-16 Định dạng mục yêu cầu bản tin xác nhận Trong đó:

- Option Type: xác định kiểu của option, trong trường hợp này là yêu cầu bản tin xác nhận.

- Opt Data Len: chiều dài của option

Khi nút hàng xóm nhận được bản tin với yêu cầu xác nhận từ nút trước đó, nó sẽ gửi lại một bản tin xác nhận:

0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

OptionType | Opt Data Len | Identification ACK Source Address

ACK Destination Address

Hình 2-17 Định dạng mục xác nhận trong bản tin xác nhận. Trong đó:

- Option Type: xác định kiểu của option, trong trường hợp này là bản tin xác nhận. - Opt Data Len: chiều dài của option

- Identification: trường nhận dạng của bản tin, được sao chép lại từ bản tin yêu cầu xác nhận

- ACK Source Address: địa chỉ của nút khởi tạo bản tin xác nhận

- ACK Destination Address: địa chỉ của nút mà bản tin xác nhận sẽ được gửi tới hay địa chỉ của nút khởi tạo bản tin yêu cầu xác nhận

Một phần của tài liệu Mô phỏng và đánh giá các giao thức định tuyến trong mạng ad hoc (Trang 60)

Tải bản đầy đủ (PDF)

(109 trang)