Giao thức DSR (định tuyến nguồn động) [5]-[10]-[11]

Một phần của tài liệu Định tuyến trong mạng vô tuyến AD Hoc (Trang 47)

2.5.1. Giới thiệu

Giao thức định tuyến nguồn động (Dynamic Source Routing – DSR) là một giao thức định tuyến đơn giản và hiệu quả được thiết kế riêng biệt cho sử dụng các mạng Ad hoc không dây đa bước của các nút di động. Sử dụng DSR, mạng tự tổ chức và tự tạo hình dạng hoàn toàn, không cần hạ tầng mạng tồn tại hay những người quản lý mạng. Những nút mạng (máy tính) hợp tác để gửi những gói dữ liệu cho nhau để cho phép truyền thông qua đa bước giữa các nút vô hướng trong truyền vô tuyến. Khi các nút mạng trong mạng di chuyển hoặc tham gia hoặc rời khỏi mạng, và khi các điều kiện truyền vô tuyến như: nguồn thay đổi nhiễu, tất cả việc

định tuyến đều được quyết định một cách tự động và duy trì bởi giao thức định tuyến DSR.

Trong thiết kế DSR, người ta cố gắng tạo ra một giao thức có overhead rất bé để có thể phản ứng nhanh với những thay đổi trên mạng, việc cung cấp dịch vụ phản ứng nhanh để giúp phân phát các gói dữ liệu đảm bảo thành công, mà không quan tâm tới sự di chuyển của nút mạng hay những thay đổi khác trong mạng.

2.5.2. Cơ chế hoạt động của giao thức

Giao thức DSR có hai cơ chế cơ hoạt động cùng với nhau, cho phép việc phát hiện và duy trì những nút mạng nguồn trong mạng Ad hoc:

+ Phát hiện tuyến: là cơ chế mà nút mạng S muốn gửi một gói tới đích D và tồn tại một tuyến nguồn tới D. Phát hiện tuyến được sử dụng chỉ khi S cố gắng gửi một gói tới D và không biết tuyến nào tới D.

+ Duy trì tuyến: là cơ chế mà nút mạng S có thể phát hiện trong khi sử dụng một tuyến nguồn tới D, nếu tôpô mạng đã thay đổi thì nó có thể không sử dụng tuyến tới D nữa bởi một kết nối theo tuyến không làm việc. Khi duy trì tuyến chỉ ra một tuyến nguồn bị gián đoạn thì S có thể cố gắng sử dụng một tuyến khác mà nó ngẫu nhiên biết tới D hoặc có thể yêu cầu phát hiện tuyến lần nữa để tìm một tuyến mới. Duy trì tuyến chỉ được sử dụng khi nút mạng S trên thực tế đang gửi các gói tin tới nút mạng D. Phát hiện và duy trì tuyến hoạt động hoàn toàn theo yêu cầu. Không giống như các giao thức khác, DSR yêu cầu không gửi các gói định kỳ bất kỳ loại nào ở bất kỳ mức nào trong mạng. Ví dụ, DSR không sử dụng bất kỳ quảng cáo định tuyến định kỳ hay các gói phát hiện lân cận, DSR không tin vào những nhiệm vụ này của các giao thức tầng dưới trong mạng. Thuộc tính hoàn toàn theo yêu cầu và giảm hoạt động định kỳ cho phép số gói overhead tạo ra bởi DSR giảm tới 0, khi tất cả các nút mạng gần như dừng đối với nhau và tất cả các nút mạng cần cho truyền thông hiên tại đã được phát hiện. Khi các nút bắt đầu di chuyển nhiều hơn hoặc khi các mẫu truyền thông thay đổi, overhead gói định tuyến của DSR sẽ tự động giãn ra chỉ để cần tìm những tuyến hiện tại đang sử dụng.

DSR cũng hỗ trợ hoạt động tương tác giữa các loại mạng không dây khác nhau, nó cho phép một nút nguồn tạo các bước qua việc kết hợp các loại mạng sẵn có. Ví dụ, một số nút mạng trong mạng Ad hoc có thể chỉ có các sóng vô tuyến ngắn, trong khi những nút mạng khác thì lại có cả sóng vô tuyến ngắn và dài. Việc kết hợp các nút mạng lại với nhau khi đó sẽ được DSR coi như một mạng Ad hoc đơn. Thêm vào đó, việc định tuyến DSR đã được kết hợp với định tuyến theo chuẩn Internet, ở đấy một nút gateway kết nối tới Internet cũng có thể tham gia vào các giao thức định tuyến mạng Ad hoc, và DSR cũng đã được kết hợp với định tuyến Mobile IP nơi mà các nút mạng gateway cũng có vai trò như một agent khách của Mobile IP.

2.5.3. Phát hiện tuyến DSR cơ bản

Khi nút S khởi đầu một gói mới tới một nút D khác, nó sẽ đặt vào trong phần header của gói một tuyến nguồn chỉ ra số bước tuần tự mà gói sẽ theo các tuyến đấy để tới đích D. Thông thường, S sẽ sử dụng một tuyến nguồn phù hợp bằng cách tìm kiếm trong phần lưu trữ tuyến đã được biết trước đấy. Nhưng nếu không có tuyến nào được tìm thấy trong cache thì nó sẽ bắt đầu giao thức phát hiện tuyến để phát hiện động một tuyến mới tới D. Trong trường hợp này, S được gọi là nút khởi đầu (initiator) và D là nút đích (target) của phát hiện tuyến.

Ví dụ trên hình 2.5. biểu diễn một phát hiện tuyến, trong đó, nút mạng A đang tìm cách phát hiện tuyến tới E. Để khởi tạo phát hiện tuyến, nút mạng A sẽ truyền một thông báo Route Request (yêu cầu tuyến) như một gói quảng bá vùng đơn và tất cả các nút trong miền truyền vô tuyến của A nhận thông báo này. Mỗi thông báo Route Request định danh nút khởi đầu và nút đích của phát hiện tuyến và nó cũng chứa một request id duy nhất được quyết định bởi nút khởi đầu của Request. Mỗi Route Request sao chép thông báo Route Request đã được gửi. Nút khởi đầu của phát hiện tuyến sẽ khởi tạo cho bản ghi định tuyến một danh sách rỗng.

Hình 2.5: Phát hiện tuyến: nút A là nút khởi đầu và nút E là nút đích

Khi nút mạng khác nhận một Route Request, nếu có nút mạng đích từ phát hiện tuyến, nó sẽ trả về một thông báo Route Reply cho nút khởi đầu của phát hiện tuyến, đưa một bản sao chép tuyến được tích luỹ và ghi lại từ Route Request. Khi nút khởi đầu nhận Route Reply, nút mạng sẽ lưu tuyến này trong Route Cache để sử dụng khi gửi các gói tiếp theo tới đích. Mặt khác, nếu nút mạng nhận Route Request đã đọc được thông báo Route Request từ nút khởi đầu gửi tới với một request id thì nó sẽ phát hiện địa chỉ đã được ghi vào bản ghi định tuyến trong thông báo Route Request và loại bỏ yêu cầu này. Mặt khác, nút mạng sẽ gắn vào địa chỉ của nó tới bản ghi tuyến trong thông báo Route Request và truyền đi như một gói quảng bá vùng (với cùng một request id).

Trả về Route Reply tới nút khởi đầu của phát hiện tuyến như nút E hồi đáp tới nút mạng A. Nút E sẽ kiểm tra Route Cache cho một tuyến trở lại A và nếu nó tìm thấy, nó sẽ sử dụng tuyến đó để tuyến nguồn phân phát các gói đang chứa Route Reply. Mặt khác, nút E có thể thực hiện phát hiện tuyến của nó cho nút đích A nhưng để giảm đệ quy vô hạn việc phát hiện tuyến, nó có thể phải mang những gói dữ liệu nhỏ khác, như một gói TCP SYN. Nút mạng E có thể cũng đảo ngược một cách đơn giản các bước tuần tự trong bản ghi tuyến mà nó cố gắng gửi trong Route Reply và sử dụng tuyến này khi tuyến nguồn trên gói đang tự mang Route Reply. Giao thức MAC như IEEE 802.11 yêu cầu một khung trao đổi hai chiều như phần giao thức MAC, đảo ngược tuyến được ưu tiên khi nó ngăn overhead của phát hiện tuyến thứ hai có thể thực hiện được và nó sẽ kiểm tra tuyến được phát hiện để chắc chắn là hai chiều trước khi nút khởi nguồn phát hiện tuyến bắt đầu sử dụng tuyến. Tuy nhiên, kỹ thuật này sẽ ngăn cản việc phát hiện các tuyến đang sử dụng các kết

nối một chiều. Trong môi trường không dây, người ta cho phép sử dụng các kết nối một chiều, một số trường hợp các tuyến có thể hoạt động hiệu quả hơn các tuyến chỉ với các kết nối hai chiều. Khi bắt đầu một phát hiện tuyến, nút nguồn sẽ lưu một phiên bản của gói gốc trong một vùng bộ đệm được gọi là Send Buffer. Send Buffer chứa một phiên bản cho mỗi gói không thể truyền bởi nút mạng này vì nó chưa có một tuyến nguồn tới đích. Mỗi gói trong Send Buffer sẽ được stamp với thời gian được đặt trong bộ đệm và huỷ bỏ trước khi lưu trong Send Buffer trong một số khoảng timeout. Để ngăn không cho Send Buffer bị tràn thì một FIFO hoặc một kế hoạch thay thế khác có thể được sử dụng để loại bỏ các gói trước khi chúng hết hiệu lực. Trong khi gói tin lưu trong Send Buffer, nút mạng có thể khởi tạo một phát hiện tuyến mới cho địa chỉ đích của gói. Tuy nhiên, nút mạng phải giới hạn tốc độ như các phát hiện tuyến mới cho cùng một địa chỉ được khởi tạo, khi hiện tại nút đích không thể tới được. Cụ thể, để giới hạn dãy truyền vô tuyến và sự di chuyển của các nút trong mạng, mạng đó có thể bắt đầu phân mảnh, nghĩa là không có các nút tuần tự qua mà một gói được hướng để tới đích. Phụ thuộc vào mẫu di chuyển và mật độ các nút trong mạng, việc phân mảnh mạng có thể hiếm hoặc thường xuyên xảy ra. Nếu một phát hiện tuyến mới đã được bắt đầu cho mỗi gói gửi bởi một nút mạng trong trạng thái như vậy thì một lượng lớn các gói Route Request không hữu ích sẽ được truyền thông qua một nhóm mạng Ad hoc có thể tới được từ nút mạng này. Để giảm overhead từ phát hiện tuyến, người ta sử dụng back-off theo kiểu số mũ để giới hạn tốc độ ở các phát hiện tuyến mới có thể được bắt đầu bởi bất kỳ tuyến nào cho cùng một đích. Nếu nút mạng cố gắng gửi các gói dữ liệu gia tăng tới cùng một nút mạng thường xuyên hơn mức giới hạn này thì các gói đến sau sẽ được lưu trong Send Buffer cho đến khi một Route Reply được nhận. Nhưng nút mạng này phải không bắt đầu một phát hiện tuyến mới cho đến khi khoảng thời gian nhỏ nhất có thể cho phép giữa các phát hiện tuyến mới tới được nút mạng đích.

2.5.4. Duy trì tuyến DSR cơ bản

Khi bắt đầu hoặc gửi một gói đang sử dụng ở tuyến nguồn, mỗi nút mạng truyền gói phải có nghĩa vụ xác nhận gói này đã được nhận bởi bước kế tiếp dọc theo

tuyến nguồn. Gói được truyền lại (cho tới một số lớn nhất) cho đến khi sự xác nhận này được nhận. Ví dụ, trong hình 2.5 nút mạng A khởi đầu một gói cho nút mạng E sử dụng một tuyến nguồn qua các nút trung gian B, C và D. Trong trường hợp này, nút mạng A có nghĩa vụ xác nhận gói ở B, nút mạng B có nghĩa vụ xác nhận ở nút C, nút C có nghĩa vụ xác nhận ở nút mạng D và cuối cùng nút mạng D có nghĩa vụ xác nhận ở đích E. Nếu gói được truyền lại một số bước với số lần max và không có sự xác nhận nào được nhận thì nút mạng sẽ trả về một thông báo Route Error tới người gửi gói tin đầu tiên và như vậy việc thực hiện kết nối có thể không xảy ra. Ví dụ, trong hình 2.5 nếu C không thể phân phát các gói tới bước tiếp theo D thì nút mạng C sẽ trả về một thông báo Route Error tới nút A để tuyên bố kết nối từ C tới D hiện tại bị gián đoạn. Khi đó, nút mạng A sẽ chuyển kết nối bị gián đoạn này vào cache của nó. Bất cứ gói khởi đầu truyền lại nào đều là một chức năng của giao thức lớp trên như TCP. Để gửi một sự phát lại hay các gói khác tới cùng một đích E, nếu nút mạng A có trong Route Cache một tuyến khác tới nút mạng E nó có thể gửi một gói đang sử dụng tuyến mới.

2.5.5. Các tính năng phát hiện tuyến gia tăng

2.5.5.1. Lưu thông tin định tuyến Overhead

Một nút mạng đang gửi hoặc đang lắng nghe bất kỳ gói nào cũng có thể thêm thông tin định tuyến từ gói này tới Route Cache của nó. Một tuyến nguồn được sử dụng trong một gói dữ liệu, tuyến được tích luỹ ghi vào Route Request hoặc tuyến đang được trả về trong Route Reply có thể được lưu bởi bất kỳ nút mạng nào.

Tuy nhiên trong một giới hạn, việc ghi thông tin định tuyến overhead có thể xuất hiện các kết nối đơn hướng trong mạng Ad hoc. Ví dụ, trên hình 2.6 nút mạng A đang sử dụng tuyến nguồn để truyền thông với nút mạng E. Khi nút mạng C gửi các gói dữ liệu dọc theo tuyến từ A tới E, nó có thể luôn thêm vào cache những kết nối hướng “gửi” hiện có mà nó biết được từ header của các gói, từ bản thân nút đó tới nút D và từ D tới E. Tuy nhiên, các kết nối hướng “đảo ngược” nhận ra trong các header gói, từ nút đó trở lại B và từ B trở lại A, có thể sẽ không hoạt động nếu các

kết nối này là đơn hướng. Nếu C biết rằng kết nối là hai chiều thì nó có thể lưu chúng.

Hình 2.6. Những giới hạn trong việc lƣu thông tin định tuyến overhead: nút mạng C từ gửi các gói tới E và các gói overhear từ X

Tương tự như vậy, nút mạng V đang sử dụng một tuyến nguồn khác để truyền thông với nút Z. Nếu nút mạng C ở trên nút X đang truyền một gói dữ liệu tới Y thì nút C sẽ chiếu cố dù các kết nối kéo theo có thể được biết là hai chiều hoặc không sau khi lưu chúng. Nếu kết nối từ X tới C là hai chiều thì C sẽ lưu kết nối từ bản thân nó tới X, kết nối từ X tới Y và kết nối từ Y tới Z. Nếu tất cả các kết nối có thể cho là hai chiều thì C cũng sẽ lưu các kết nối từ X tới W và từ W tới V.

2.5.5.2. Hồi âm Route Request sử dụng các tuyến đã được lưu

Một nút đang nhận một Route Request cho một nút không phải là đích, nó sẽ tìm kiếm Route Cache của nó cho một tuyến tới đích của Request. Nếu tìm thấy, nút mạng này thường sẽ trả lại một Route Reply tới nút khởi tạo nó hơn là gửi Route Request. Trong Route Reply, nó thiết lập bản ghi tuyến để ghi trình tự các bước qua bản sao Route Request đã gửi tới nó trước đó.

Tuy nhiên, trước khi truyền gói Route Request đã phát sinh việc sử dụng thông tin từ Route Cache của nó. Một nút mạng phải kiểm tra kết quả tuyến đang sử dụng đã được trả về trong Route Reply chưa. Ví dụ, hình 2.7. mô tả trường hợp Route Request của đích E đã được nhận bởi nút mạng F và nút F đã có trong Route Cache của nó một tuyến từ F tới E. Kết hợp những tuyến tích luỹ từ Route Request

và tuyến được lưu từ Route Cache của nút mạng F sẽ bao gồm một nút bản sao trong quá trình truyền từ C tới F và ngược lại.

Hình 2.7. Ví dụ về hồi âm RR sử dụng các tuyến đã lƣu

Nút mạng F trong trường hợp này có thể cố gắng sắp xếp tuyến để loại bỏ việc sao chép, kết quả là có một tuyến từ A tới B tới C và tới E, tuy nhiên nút F sẽ không ở trên tuyến nữa mà nó sẽ trả về trong Route Reply.

2.5.5.3. Ngăn ngừa nhiễu Route Reply

Khả năng của các nút mạng hồi đáp Route Request dựa trên thông tin trong các Route Cache của chúng. Như đã nói ở trên, việc hồi đáp có thể dẫn tới “nhiễu” Route Reply có thể xảy ra trong một số trường hợp. Cụ thể, nếu nút mạng quảng bá Route Request cho một nút đích để các nút lân cận có một tuyến trong Route Cache của chúng thì mỗi nút mạng lân cận sẽ cố gắng để gửi một Route Reply. Theo cách này, băng thông có thể bị hao mòn và làm tăng khả năng xung đột mạng trong vùng.

2.5.5.4. Giới hạn bước Route Request

Mỗi thông báo Route Request chứa một “giới hạn bước” mà được sử dụng để giới hạn số nút mạng trung gian cho phép để gửi bản sao Route Request. Khi Request được gửi, giới hạn này sẽ bị giảm xuống và gói Request bị loại nếu giới hạn tiến đến 0 trước khi đến đích. Người ta sử dụng cơ chế này để gửi một Route

Một phần của tài liệu Định tuyến trong mạng vô tuyến AD Hoc (Trang 47)

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

(93 trang)