Nguyên lý hoạt động của giao thức

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hoàn thiện thủ tục phân tuyến AODV trong mạng cảm biến không dây và thực nghiệm trên phần mềm Opnet (Trang 32)

CHƢƠNG 1 : TỔNG QUAN MẠNGCẢM BIẾN KHÔNG DÂY

2.4 Giao Thức Định Tuyến AODV

2.4.2 Nguyên lý hoạt động của giao thức

Mỗi bảng định tuyến tại tất cả các nút đều phải lƣu giữ những thông tin mới nhất có thể về số đếm của tất cả các nút đích mà bảng định tuyến đang duy trì một đƣờng đi khả dụng đến đó. Số đếm này đƣợc gọi là “số đếmđích”. Nó đƣợc cập nhật bất cứ khi nào nút đó nhận đƣợc thông tin mới (mới xét theo mặt thông tin chứ không xét theo mặt thời gian) về số đếmtừ các bản tin RREQ, RREP, hoặc RERR mà nó nhận đƣợc có liên quan đến nút đích này. Giao thức AODV phụ thuộc vào việc từng nút ở trong

mạng lƣu và duy trì các số đếmđích trong bảng định tuyến của mình, từ đó giúp cho nó có thể ngăn ngừa hiện tƣợng lặp trong mạng bằng cách kiểm tra các số đếmtrong các bản tin. Một nút đích tăng số đếmcủa riêng nó trong 2 trƣờng hợp[8]:

 Ngay lập tức trƣớc khi nút khởi tạo một bản tin yêu cẩu RREQ, nút phải tăng số đếmcủa nó. Việc này giúp ngăn chặn việc trùng lặp khi các nút khác nhận đƣợc bản tin RREQ sẽ thực hiện kiểm tra số đếmđể tạo đƣờng ngƣợc quay lại nút khởi tạo bản tin RREQ ban đầu[8].

 Ngay lập tức khi nút đích thực hiện khởi tạo bản tin đáp trả RREP để hồi đáp lại bản tin RREQ nhận đƣợc[8].

Số đếmđƣợc lƣu dƣới dạng số nguyên không dấu. Khi một nút nhận đƣợc thông tin về số đếmcủa một nút nào đó, nó sẽ kiểm tra giá trị này với số đếmcũng của nút này mà nó lƣu trong bảng định tuyến. Nếu số đếmthu đƣợc từ bản tin lớn hơn số đƣợc lƣu trong bảng định tuyến tức là thông tin này là mới hơn, vậy nó sẽ tự động cập nhật lại bảng định tuyến của mình[8].

Chỉ duy nhất một trƣờng hợp khác mà một nút có thể thay đổi số đếmđích trong bảng định tuyến là khi tuyến đƣờng này đang ở trạng thái liên kết bị mất hoặc hết hạn với nút kế tiếp trong trong tuyến đƣờng đó. Khi đó, nút sẽ xác định nhữngnút đích bị ảnh hƣởng bởi sự mất kết nối với nút kế tiếp này bằng cách tra bảng định tuyến. Trong trƣờng hợp này, các nút bị ảnh hƣởng sẽ đƣợc nút này tăng số đếmlên 1 và đánh dấu tuyến đƣờng này là lỗi. Từ đây, nút sẽ chờ đến khi nào nó nhận đƣợc thông tin định tuyến về các nút bị ảnh hƣởng đủ tƣơi hơn thông tin cũ (có số đếmlớn hơn hoặc bằng số đếmnó đang lƣu), khi đó nó sẽ cập nhật lại bảng định tuyến của mình với thông tin mới vừa thu đƣợc[8].

Một nút chỉ thực hiện thay đổi số đếmtrong bảng định tuyến về một nút nào đó trong các trƣờng hợp sau đây[8]:

 Bản thân nó là nút đích, và nó chuẩn bị gửi bản tin hồi đáp RREP tới nút tạo bản tin yêu cầu RREQ về nó[8].

 Nó nhận đƣợc một bản tin AODV với thông tin về số đếmcủa nút đích mới hơn[8].

 Đƣờng đi tới nút đích này bị gãy hoặc là bị hết hạn[8].

2.4.2.2 Quá trình tìm đường khởi tạo kết nối

Một nút khởi tạo bản tin yêu cầu RREQ khi nó xác định đƣợc rằng mình cần một tuyến đƣờng đến nút đích nào đó và trong bảng định tuyến của nó, nó không có tuyến đƣờng khả dụng nào đến nút này cả. Điều này có thể xảy ra nếu nút muốn gửi tin chƣa hề biết thông tin gì về nút đích này cả, hoặc là tuyến đƣờng khả dụng trƣớc đã hết hạn hoặc đƣợc đánh dấu là lỗi. Trƣờng số đếmđích trong bản tin RREQ là số đếmmới nhấtcủa nút đích mà nút khởi tạo có và giá trị này đƣợc sao chép từ trƣờng số đếmđích

trong bảng định tuyến. Nếu không có số đếmđích, cờ “số đếmkhông xác định” trong bản tin RREQ đƣợc dựng là 1. Số đếmnguồn trong bản tin RREQ chính là số đếmcủa nút khởi tạo bản tin RREQ này. Trƣờng RREQ ID đƣợc tăng thêm 1 từ số RREQ ID lần cuối đƣợc sử dụng tại nút đó. Mỗi nút chỉ có duy nhất một số RREQ ID. Trƣờng “Đếm chặng” đƣợc đặt là 0[8].

Trƣớc khi phát quảng bá gói tin RREQ, nút khởi tạo sẽ lƣu lại số RREQ ID và địa chỉ IP của nó vào bộ nhớ đệm trong khoảng thời gian là “PATH_DISCOVERY_TIME”. Bằng cách này, khi nút nhận đƣợc bản tin này từ hàng xóm của nó, nó sẽ không thực hiện xử lý hoặc chuyển tiếp gói tin[8].

Nút khởi tạo luôn mong chờ có sự liên lạc hai chiều với nút đích. Trong trƣờng hợp này, nếu nút nguồn có đƣờng đi tới nút đích không thôi là không đủ, nút đích cũng phải có đƣờng đi quay lại nút nguồn. Để thực hiện đƣợc điều này, các nút trung gian khi nhận đƣợc các bản tin RREQ, RREP, RERR, chúng đều thực hiện lƣu thông tin để tạo đƣờng ngƣợc về các nút khởi tạo bản tin này[8].

Một nút không thực hiện khởi tạo nhiều hơn “RREQ_RATELIMIT” bản tin RREQ trong 1 giây. Sau khi phát quảng bá 1 bản tin RREQ, nút đó sẽ đợi bản tin hồi đáp RREP (hoặc các bản tin điều khiển khác chứa thông tin về về tuyến đƣờng tới nút đích đang đƣợc tìm kiếm). Nếu tuyến đƣờng không nhận trong khoảng thời gian “NET_TRAVERSAL_TIME”(ms), nút đó có thể tiếp tục phát quảng bá bản tin yêu cầu RREQ để tìm đƣờng, số lần gửi yêu cầu lại không vƣợt quá “RREQ_RETRIES” lần. Và với mỗi lần phát lại này, nút phải tăng số RREQ ID lên 1 trong các bản tin RREQ của mình[8].

Các gói tin dữ liệu sẽ chờ cho tuyến đƣờng đƣợc khởi tạo thành công (đợi bản tin RREP sau khi bản tin yêu cầu RREQ đƣợc gửi đi) và đƣợc lƣu vào bộ đệm. Việc lƣu vào bộ đệm này tuân theo quy tắc “vào trƣớc ra trƣớc” (First in, first out – FIFO). Nếu quá trình tìm đƣờng đã đƣợc thực hiện “RREQ_RETRIES” lần mà không nhận đƣợc bất cứ bản tin RREP nào, tất cả bản tin dữ liệu gửi đến nút đích này đều bị bỏ khỏi hàng đợi và bản tin không tìm thấy nút yêu cầu (Destination Unreachable message) sẽ đƣợc gửi cho chƣơng trình ở lớp cao hơn[8].

Để giảm tắc nghẽn trong mạng, việc lặp lại bản tin RREQ từ nút nguồn đến đích trong quá trình tìm đƣờng phải thực hiện theo thuật toán phân bố nhị phân hàm mũ. Khi nút nguồn phát bản tin RREQ đầu tiên, nó sẽ chờ trong một khoảng thời gian “NET_TRAVERSAL_TIME” (ms) cho tới khi nhận đƣợc bản tin RREP. Nếu nó không nhận đƣợc bản tin RREP trong thời gian đó, nó sẽ gửi một bản tin RREQ mới. Sau khi gửi bản tin RREQ thứ hai, nút nguồn sẽ tính toán khoảng thời gian chờ theo thuật toán phân bố nhị phân hàm mũ. Do đó thời gian chờ bản tin RREP sau khi gửi bản tin RREQ thứ hai là “2 * NET_TRAVERSAL_TIME” (ms). Nếu trong khoảng thời gian này nút nguồn vẫn không nhận đƣợc bản tin RREP thì nó sẽ gửi tiếp bản tin

RREQ khác cho đến khi đạt giá trị ngƣỡng bản tin RREQ là “RREQ_RETRIES”. Với mỗi lần gửi lại một bản tin RREQ thì thời gian chờ lại tăng lên hai lần[8].

Để ngăn chặn việc bản tin RREQ đƣợc quảng bá ra toàn mạng một cách không cần thiết, nút nguồn sử dụng một công nghệ tìm kiếm vòng mở rộng. Trong công nghệ này, các nút nguồn ban đầu đặt “TTL=TTL_START” trong bản tin RREQ và thiết lập thời gian chờ cho việc nhận bản tin RREP là “RING_TRAVERSAL_TIME” (ms). Thời gian này đƣợc tính bằng công thức sau[8]:

RING_TRAVERSAL_TIME = 2 * NODE_TRAVERSAL_TIME *

(TTL_VALUE + TIMEOUT_BUFFER)[8]

Nếu sau một số lần quảng bá bản tin RREQ mà không nhận đƣợc bản tin RREP thì nút nguồn ban đầu sẽ tăng giá trị TTL lên một khoảng là “TTL_INCREMENT”, điều này cứ tiếp tục cho đến khi TTL đạt đến giá trị ngƣỡng “TTL_THRESHOLD”[8]. Giá trị “Đếm chặng” đƣợc lƣu trữ trong bảng định tuyến, chỉ ra “Đếm chặng” mới nhất đi đến nút đích. Khi có một đƣờng đi mới đến cùng một đích trong một khoảng thời gian sau đó, giá trị TTL trong bản tin RREQ đƣợc thiết lập bằng “Đếm chặng + TTL_INCREMENT”. Sau đó giá trị TTL đƣợc tăng lên một khoảng là “TTL_INCREMENT”, điều này cứ tiếp tục cho đến khi TTL đạt đến giá trị ngƣỡng “TTL_THRESHOLD”. Khi TTL=NET_DIAMETER thì khi đó thời gian chờ TTL đƣợc thiết lập bằng khoảng thời gian “NET_TRAVERSAL_TIME”[8].

Khi một nút nhận đƣợc bản tin RREQ, nó sẽ tạo ra hoặc cập nhật một đƣờng đi đến nút trƣớc đó mà không có một số thứ tự hợp lệ, sau đó nó sẽ kiểm tra hai thông tin địa chỉ nút đích và số ID của bản tin RREQ vừa nhận đã đƣợc nhận từ trƣớc hay chƣa, nếu nút đã nhận bản tin RREQ với các thông tin giống nhƣ bản tin vừa nhận thì bản tin RREQ vừa nhận sẽ bị hủy. Nếu là bản tin RREQ đầu tiên, nó sẽ tăng giá trị “Đếm chặng” thêm 1. Sau đó nút sẽ tạo và cập nhật một đƣờng ngƣợc về nút nguồn. Khi một bản tin RREQ đƣợc nhận, giá trị thời gian sống của đƣờng ngƣợc về nút nguồn là giá trị lớn nhất của hai giá trị “Thời gian sống đang tồn tại” và “Thời gian sống nhỏ nhất”, trong đó[8].

Thời gian sống nhỏ nhất = (thời gian hiện tại + 2*NET_TRAVERSAL_TIME - 2*Đếm chặng*NODE_TRAVERSAL_TIME) [8]

Một nút nhận đƣợc bản tin RREQ, sẽ thực hiện gửi lại bản tin RREP khi[8]:

 Nó chính là nút đích đƣợc chỉ ra trong bản tin RREQ[8].

 Nó biết đƣờng đi tới nút đích đƣợc chỉ ra trong bản tin RREQ, số đếm đích trong bảng định tuyến cho nút đích này là khả dụng và lớn hơn hoặc bằng số đếmđích trong bản tin RREQ[8].

Bản tin RREP sẽ đƣợc truyền đơn hƣớng về nút đầu tiên khởi tạo bản tin RREQ. Tuyến đƣờng sẽ đƣợc tạo dựa trên các bảng định tuyến tại các nút mà bản tin RREP đi

qua. Các bản ghi về nút nguồn đầu tiên khởi tạo bản ghi RREQ này đã đƣợc tạo ra do các nút trung gian tạo đƣờng ngƣợc về nút nguồn mỗi khi nhận đƣợc bản tin RREQ. Trƣờng “Đếm chặng” sẽ tăng lên qua mỗi nút, bởi vậy khi bản tin RREP đến đƣợc nút nguồn, giá trị của trƣờng “Đếm chặng” trong bản tin RREP sẽ biểu diễn chiều dài của tuyến đƣờng (theo số nút) từ nút nguồn đến nút đích[8].

Để dễ hiểu, có thể biểu diễn phƣơng thức AODV thực hiện khởi tạo kết nối bằng cách biểu diễn dƣới dạng thuật toán nhƣ sau:

//S là nút nguồn, D là nút đích //RT= bảng định tuyến

//S muốn kết nối với D

Nếu (RT của S có đƣờng đi khả dụng tới D) S sẽ thiết lập kết nối tới D

Ngƣợc lại

S tạo bản tin yêu cầu RREQ và phát quảng bá nó đến các hàng xóm của mình Cho ( tất cả các nút nhận đƣợc bản tin RREQ)

Nếu (RREQ này đã xử lý từ trƣớc) Bỏ đi bản tin RREQ bị trùng Kết thúc nếu

Nếu ( nó là D)

Gửi bản tin RREP tới nút ban đầu gửi đi bản tin RREQ này Ngƣợc lại nếu (N có một tuyến đƣờng tới D với SeqId >= RREQ.Seq)

Gửi bản tin RREP

Ngƣợc lại

Lƣu lại thông tin nút gửi bản tin RREQ này Phát quảng bá bản tin RREQ

Kết thúc nếu Kết thúc cho

S nhận đƣợc bản tin RREP

S cập nhật RT của nó dựa trên nút gửi bản tin RREP S thiết lập kết nối với D

Sau đây là ví dụ mô tả cách thức tìm đƣờng của giao thức AODV.

Hình 2.6 : Ví dụ bản tin RREQ phần 1

Nút S là nút nguồn. Các nút trong mạng sử dụng giao thức AODV là giao thức định tuyến. Tại thời điểm ban đầu, nút S muốn tìm đƣờng đến nút D

Hình 2.7 : Ví dụ bản tin RREQ phần 2

Nút S bắt đầu phát quảng bá bản tin RREQ. Nút B,C,E nhận đƣợc bản tin RREQ.

Hình 2.8 : Ví dụ bản tin RREQ phần 3

Nút B,C,E thấy mình không phải là nút đích và cũng không có đƣờng đi khả dụng nào đến nút đích trong bảng định tuyến, nút B,C,E thực hiện chuyển tiếp bản tin RREQ đó. Trƣớc khi chuyển tiếp, nó thực hiện lƣu thông tin bản tin RREQ để tạo đƣờng ngƣợc về nút nguồn.

Hình 2.9 : Ví dụ bản tin RREQ phần 4

Quá trình tiếp tục đƣợc thực hiện với nút A,H,G,F. Nút C nhận đƣợc bản tin RREQ từ G và H, nhƣng nó không thực hiện chuyển tiếp bản tin này vì nút C đã chuyển tiếp bản tin RREQ này một lần.

Hình 2.10 : Ví dụ bản tin RREQ phần 5

Hình 2.11 : Ví dụ bản tin RREQ phần 6

Nút D không chuyển tiếp bản tin RREQ nữa, vì nút D chính là nút đƣợc yêu cầu của bản tin RREQ.

Hình 2.12 : Ví dụ bản tin RREQ phần 7

Nút D thực hiện gửi bản tin RREP về nút nguồn. Sau khi nút S nhận đƣợc bản tin RREP, nó sẽ thực hiện gửi các bản tin mang dữ liệu đƣợc lƣu trong bộ nhớ đệm.

2.4.2.3 Duy trì kết nối

Mỗi nút đều phải liên tục theo dõi các kết nối đang đƣợc sử dụng bằng cách giữ liên kết với các nút tiếp theo trong tuyến đƣờng đi. Một số cách đƣợc AODV sử dụng để giữ liên kết với các nút kế tiếp đƣợc nêu ra ở dƣới đây[8]:

 Nếu có thể sử dụng các báo hiệu ở lớp liên kết, nhƣ là các báo hiệu đƣợc đƣa ra trong chuẩn IEEE 802.11, AODV sẽ sử dụng chúng để kiểm tra trạng thái của liên kết. Mỗi khi có một bản tin đƣợc truyền đến một nút kế tiếp, nút đó sẽ đợi bản tin ACK ở lớp liên kết. Nếu sau một số lần cho phép mà việc truyền lại đều không thành công, điều đó sẽ chỉ răng liên kết với nút tiếp theo đã bị gãy.[8]

 Để giữ liên kết với nút kế tiếp, AODV còn sử dụng một bản tin đó là bản tin Hello.Một nút chỉ thực hiện phát quảng bá bản tin Hello nếu nó đang nằm trong một tuyến đƣờng đang đƣợc sử dụng để truyền tin. Cứ sau một khoảng thời gian là “HELLO_INTERVAL”(ms), nút đó sẽ kiểm tra xem

nó đã phát quảng bá một bản tin nào chƣa (bản tin RREQ hoặc một bản tin lớp 2 thích hợp). Nếu nó chƣa, nó sẽ thực hiện phát quảng bá một bản tin Hello (chính là bản tin RREP với trƣờng TTL = 1, đƣợc gọi là bản tin Hello). Các trƣờng của bản tin Hello bao gồm[8]:

 Địa chỉ IP đích : địa chỉ IP của nút đó[8].

 Số đếm đích: số đếm hiện tại của nút đó[8].

 Đếm chặng : 0[8].

 Thời gian sống = ALLOWED_HELLO_LOSS *

HELLO_INTERVAL[8].

Một nút sẽ xác định trạng thái của liên kết bằng cách lắng nghe bản tin HELLO từ các nút lân cận. Nếu trong khoảng thời gian ALLOWED_HELLO_LOSS * HELLO_INTERVAL (ms), nó không nhận đƣợc bản tin nào từ hàng xóm (bản tin Hello hoặc các bản tin khác), liên kết đó sẽ đƣợc coi là bị gãy, nút sẽ thực hiện kiểm tra điều kiện xem có thể thực hiện sửa cục bộ. Nếu điều kiện thỏa mãn, nút sẽ thực hiện sửa cục bộ, còn nếu không, nó sẽ thực hiện gửi bản tin RERR về nút nguồn để báo cho nút nguồn thực hiện định tuyến lại[8].

Bất cứ khi nào nút nhận đƣợc một bản tin Hello từ hàng xóm, nút sẽ kiểm tra xem nó có tuyến đƣờng nào đang đƣợc sử dụng mà nút gửi bản tin Hello đóng vai trò là nút kế tiếp hay không, nếu không nó có thể tạo một bản ghi mới nếu cần thiết. Nếu thực sự có tuyến đƣờng sử dụng nút hàng xóm đó làm nút kế tiếp, nó sẽ thực hiện tăng giá trị của trƣờng thời gian sống trong bảng định tuyến. Những bản ghi trong bảng định tuyến đƣợc tạo bởi việc gửi nhận bản tin Hello mà không đƣợc dùng đến thì khi trƣờng thời gian sống hết hạn, tức là nút hàng xóm đã di chuyển ra khỏi vùng phủ sóng hay gặp trục trặc thì nút đó sẽ xóa bản ghi đó mà không thực hiện gửi bản tin RERR nào cả[8].

2.4.2.4 Xử lý khi có lỗi xảy ra

Thông thƣờng, việc xử lý lỗi đƣờng hoặc gãy kết nối đòi hỏi phải thực hiện các bƣớc sau[8]:

 Đánh dấu tuyến đƣờng bị lỗi[8].

 Liệt kê các nút đích bị ảnh hƣởng[8].

 Xác định nếu có những nút hàng xóm có thể bị ảnh hƣởng[8].

 Gửi bản tin RERR phù hợp tới những nút hàng xóm này[8].

Bản tin lỗi RERR có thể đƣợc phát quảng bá (nếu có nhiều nút bị ảnh hƣởng),

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Hoàn thiện thủ tục phân tuyến AODV trong mạng cảm biến không dây và thực nghiệm trên phần mềm Opnet (Trang 32)

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

(79 trang)