Thuật toán định tuyến theo yêu cầu – AODV

Một phần của tài liệu NGHIÊN CỨU ĐỊNH TUYẾN MẠNG CẢM BIẾN ZIGBEE TRONG THUẬT TOÁN TỐI ƯU NĂNG LƯỢNG (Trang 32)

2.3.1. Tổng quan

Định tuyến là một cơ chế rất quan trọng của tầng mạng ZigBee. Nếu cơ chế định tuyến làm việc không hiệu quả sẽ ảnh hƣởng tới hiệu năng của toàn bộ mạng. Cơ chế định tuyến hay thuật toán định tuyến và tầm ảnh hƣởng của nó bị chi phối bởi nhiều yếu tố, ví dụ nhƣ: kích thƣớc mạng, cấu trúc của mạng, tài nguyên của mạng.

ZigBee sử dụng cơ chế, thuật toán AODV cho việc định tuyến bên trong mạng lƣới của nó – mesh network. Phần phức tạp nhất trong cơ chế AODV chính là tìm ra tuyến – route discovery.

Tìm tuyến là một cơ chế của tầng mạng ZigBee để thu thập thông tin định tuyến từ mạng. Những thiết bị chƣa biết trong mạng, chƣa có trong bảng định tuyến thiết bị, sẽ chờ đợi một gói tin RREQ để cho phép truyền thông qua bƣớc nhảy bổ sung.

Đặc tả ZigBee mô tả tìm ra định tuyến nhƣ sau, khám phá định tuyến đƣợc khởi tạo bằng cách gửi một tin RREQ tại thiết bị gốc. Gói tin RREQ sẽ đƣợc quảng bá tới tất cả thiết bị. Mỗi thiết bị nhận đƣợc gói tin RREQ sẽ thêm vào gói tin những thông tin nhƣ giá trị chi phí của lần truyền cuối cùng. Hơn nữa, thiết bị tìm kiếm một mục trong bảng định tuyến tƣơng ứng với địa chỉ nguồn và định danh RREQ trong gói tin. Nếu tồn tại một mục phù hợp trong bảng và chi phí cao hơn so với chi phí mới tìm đƣợc, bảng định tuyến sẽ đƣợc cập nhật hoặc đƣợc tạo tƣơng ứng với mục RTE đó.

Các vấn đề chính trong thuật toán:

+ Quảng bá gói tin tìm đƣờng khi cần thiết

+ Khuếch tán thông tin khi mạng cục bộ thay đổi tới những node lân cận, những node cần thông tin này.

2.3.2. Tìm đường - Path Discovery

Quá trình phát hiện đƣờng đƣợc khởi tạo khi một node nguồn cần kết nối tới một node khác mà nó chƣa có thông tin định tuyến tới node đó trong bảng định tuyến. Mỗi node trong nó sẽ luôn chứa thông tin riêng biệt về: thứ tự node – node sequence number và định danh quảng bá – broadcast_id. Node nguồn sẽ khởi tạo việc tìm đƣờng bằng cách quảng bá gói tin yêu cầu định tuyến tới các hàng xóm của nó. Gói tin yêu cầu định tuyến–RREQ đó bao gồm các thông tin: <source_addr, source_sequence_#, broadcast_id, dest_id, dest_sequence_#, hop_cnt> <source_addr, broadcast_id>: tạo nên một khóa duy nhất cho gói tin RREQ, nó phân biệt gói tin RREQ này với gói tin RREQ khác. Thông tin broadcast_id sẽ đƣợc tăng khi node nguồn yêu cẩu thêm một RREQ mới. Mỗi node lân cận xử lý gói tin RREQ bằng cách gửi lại một gói tin RREP tới node nguồn hoặc quảng bá tiếp gói tin RREQ tới lân cận của nó sau khi đã tăng chỉ sổ hop_cnt. Lƣu ý rằng, một node trong mạng có thể nhận đƣợc nhiều gói tin quảng bá yêu cầu định tuyến giống nhau từ những lân cận khác nhau của nó. Nếu một node trung gian nhận đƣợc một gói tin RREQ, nếu gói tin đó nó đã nhận đƣợc bằng cách so sánh trƣờng địa chỉ nguồn – source_addr và broadcast_id, nó sẽ loại bỏ gói tin dƣ thừa đó và sẽ không quảng bá tiếp gói tin đó.

Nếu node lân cận đó không thể đáp ứng gói tin RREQ, nó sẽ theo dõi thông tin của gói tin đó bằng cách lần ngƣợc lại đƣờng đi của gói tin, các thông tin sau vào gói tin RREP: địa chỉ đích, địa chỉ nguồn, định danh quảng bá – broadcast_id, thời gian cho phép của gói tin, số thứ tự của node nguồn.

Hình 2.7 : Mô tả quá trình tìm đƣờng – path discovery

2.3.3. Thiết lập đường ngược

Gói tin RREQ có 2 số thứ tự đó là: số thứ tự nguồn, và số thứ tự đích cuối cùng. Số thứ tự của nguồn đƣợc sử dụng để duy trì thông tin định tuyến về node nguồn luôn đƣợc cập nhật và số thứ tự đích chỉ ra cách định tuyến mới nhất tới node đích trƣớc khi nó đƣợc chấp nhận bới node nguồn.

Gói tin RREQ sẽ phải đi từ node nguồn tới nhiều node đích khác nhau, nó sẽ tự động ghi lại con đƣờng để trở lại node nguồn. Để ghi lại con đƣờng đó, một node sẽ ghi lại địa chỉ node lân cận, từ nơi mà nó nhận đƣợc bản sao đầu tiên của gói tin RREQ. Định tuyến đƣờng ngƣợc này sẽ đƣợc duy trì trong một khoảng thời gian đảm bảo để gói tin RREQ đi qua mạng và thực hiện một trả lời tới nơi gửi nó.

2.3.4. Thiết lập đường tiến

Cuối cùng, gói tin RREQ có thể đến node nào đó, node đó có thể là node đích của nó hoặc nằm trên con đƣờng tới node đích. Đầu tiên node đó sẽ kiểm tra xem gói tin RREQ nhận đƣợc thông qua liên kết hai chiều bi-directional link. Nếu node trung gian này có chứa thông tin định tuyến tới node đích nó sẽ tiến hành các bƣớc kiểm tra bằng cách so sánh số thứ tự đích trong bảng định tuyến của node hiện tại với số thứ tự đích trong gói tin RREQ. Nếu số thứ tự đích lƣu trữ trong gói tin RREQ lớn hơn số thự tự đích lƣu trong bảng định tuyến của node hiện thời thì node

hiện thời không phải sử dụng thông tin định tuyến của nó để đáp ứng gói tin RREQ. Thay vào đó, node hiện thời sẽ tiếp tục quảng bá gói tin RREQ này tới các node lân cận của nó. Node trung gian hiện thời chỉ thực hiện việc phản hồi lại gói tin RREQ chỉ khi nó chứa thông tin định tuyến mà ở đó số thứ tự đích của nó lớn hơn hoặc bằng số thứ tự đích chứa trong gói tin RREQ. Nếu nó chứa thông tin định tuyến tới node đích, và nếu gói tin RREQ chƣa đƣợc xử lý trƣớc đó, node hiện thời sẽ thực hiện một gói tin RREP tới lân cận của nó, nơi mà phát gói tin RREQ này cho nó. Một gói tin RREP thì bao gồm các thông tin: <địa chỉ nguồn, địa chỉ đích, số thứ tự đích, số bƣớc nhảy, thời gian sống của gói tin>.

Tại thời điểm một gói tin quảng quá tới đƣợc một node, node mà cung cấp thông tin đinh tuyến tới node đích, một con đƣờng ngƣợc trở lại node nguồn, node mà phát đi gói tin RREQ cũng đƣợc thành lập. Khi mà gói tin RREP quay trở lại node nguồn, nơi phát ra gói tin RREQ, mỗi node dọc theo con đƣờng đó sẽ thiết lập con trỏ tới node đó, lƣu trữ và cập nhật thông tin về thời gian trễ cho bảng định tuyến tới node nguồn và node đích và ghi lại số thứ tự cuối cùng của đích cần đến.

Một node mà không thuộc con đƣờng ngƣợc sẽ bị trễ thời gian trong khoảng 3 giây và sẽ bị xóa con trỏ ngƣợc.

Một node khi nhận đƣợc một gói tin RREP lần đầu tiên nó sẽ lan truyền gói tin này tới node nguồn hay là node mà nó nhận đƣợc gói tin RREQ và cứ vậy cho tới node nguồn cuối cùng. Nếu nó nhận đƣợc nhiều hơn một gói tin RREQ nó sẽ phải cập nhật thông tin định tuyến và chỉ truyền gói tin RREQ nếu gói tin đó có chứa thông tin số thứ tự đích lớn hơn số thứ tự đích của gói tin RREQ trƣớc đó hoặc có cùng số thứ tự đích nhƣng có số bƣớc nhảy nhỏ hơn. Nó sẽ cấm tất cả các gói tin RREP khác mà nó nhận đƣợc, điều này đảm bảo số lƣợng gói tin RREP đƣợc truyền tới nguồn trong khi vẫn đảm bảo thông tin định tuyến tốt nhất. Node nguồn có thể bắt đầu truyền dữ liệu ngay khi nhận đƣợc gói tin RREP đầu tiên và có thể cập nhật thông tin định tuyến nếu tìm đƣợc thông tin định tuyến tốt hơn.

2.3.5. Quản lý bảng định tuyến

Bên cạnh thông tin về số thứ tự của nguồn và số thứ thứ tự của đích, một số thông tin có ích khác cũng đƣợc lƣu trữ trong bảng thông tin định tuyến và đƣợc gọi là trạng thái mềm – soft state. Một liên kết tới thông tin định tuyến về con đƣờng ngƣợc đƣợc gọi là: thời gian hết hiệu lực yêu cầu định tuyến – route request expiration timer. Mục đích của bộ đếm thời gian này chính là làm sạch con đƣờng định tuyến ngƣợc từ node phát gói tin RREP về node nguồn, nó đảm bảo những node không nằm trên con đƣờng đó đƣợc loại bỏ. Bộ đếm thời gian này phụ thuộc vào các yếu tố nhƣ kích thƣớc của mạng. Một biến số quan trọng trong bảng định tuyến đƣợc đề cập tới đây là route-caching-timeout, hoặc là có thể hiểu là thời gian sau khi một định tuyến đƣợc cân nhắc để loại bỏ.

Trong bảng định tuyến cũng lƣu trữ địa chỉ của các lân cận tích cực , các lân cận đƣợc cân nhắc là tích cực nếu nó có thể khởi phát hoặc chuyển tiếp một gói tin tới đích trong một khoảng thời gian cho phép. Thông tin địa chỉ này sẽ đƣợc duy trì chính vì vậy tất cả các lân cận tích cực sẽ thông báo nếu đƣờng liên kết dọc theo tới node đích bị gẫy.

Mỗi một phần tử trong bảng định tuyến sẽ chứa các thông tin sau: đích, bƣớc nhảy tiếp theo, số bƣớc nhảy, số thứ tự của node đích, lân cận tích cực cho định tuyến, thời gian hiệu lực cho phần tử bảng định tuyến.

Mỗi khi một phần tử trong bảng định tuyến đƣợc sử dụng để truyền dữ liệu từ nguồn tới đích, thời gian trễ cho phần tử này sẽ đƣợc tính lại từ thời gian hiện tại cộng thêm thời gian trễ định tuyến tích cực.

2.3.6. Bảo trì đường dẫn

Việc di chuyển của các node không nằm trên đƣờng dẫn tích cực không ảnh hƣởng tới việc định tuyến tới đích. Đƣờng dẫn tích cực là đƣờng dẫn từ node nguồn tới node đích. Nếu node nguồn di chuyển trong phiên truyền dữ liệu, nó có thể khởi tạo lại việc tìm đƣờng để tìm ra một định tuyến mới tới đích. Ngay cả khi node đích

di chuyển hoặc một vài node trung gian trên đƣờng dẫn tích cực di chuyển thì một gói tin RREP đặc biệt sẽ đƣợc gửi tới node nguồn. Theo chu kỳ, một thông điệp hello có thể đƣợc sử dụng đảm bảo liên kết đối xứng giữa nguồn và đích một cách tốt nhất, mục đích của thông điệp là phát hiện hiện lỗi trên đƣờng liên kết. Bên cạnh việc kiểm tra đƣờng liên kết bằng phát đi thông điệp hello, còn có 1 cách khác nhƣ là 1 sự thay thế đó là việc sử dụng LLACK – Link Layer Ack. Một liên kết lỗi sẽ đƣợc thông báo nếu cố gắng chuyển tiếp một gói tin tới bƣớc chuyển lỗi kết tiếp.

Một trong bƣớc nhảy kế tiếp không thể kết nối, node trƣớc đó sẽ phải lan truyền một gói tin RREP không mong muốn với số thứ tự đã đƣợc làm mới (số thứ tự phải là số lớn hơn số trƣớc đó) và số bƣớc nhảy sẽ chuyển thành vô cùng tới tất cả các node lân cận. Các node phía sau sẽ chuyển tiếp gói tin đó tới các lân cận của nó và cứ thế. Quá trình này sẽ tiếp tục đến khi tất cả node nguồn tích cực đƣợc thông báo. Nó kết thúc bởi vì thuật toán AODV chỉ duy trì các định tuyến lặp miễn phí – loop-free và định tuyến đó chỉ có hữu hạn các node trong mạng. Khi nhận đƣợc thông báo của một liên kết hỏng, node nguồn có thể khởi động lại quá trình tìm đƣờng nếu nó vẫn muốn định tuyến tới đích. Để xác định định tuyến đó vẫn còn cần thiết, một node có thể kiểm tra các định tuyến đƣợc sử dụng gần đây cũng nhƣ kiểm tra khối điều khiển giao thức cấp trên để xem liệu kết nối đó vấn đƣợc mở bằng cách sử dụng một đích đƣợc chỉ định. Nếu node nguồn hoặc bất kỳ một node thuộc định tuyến trƣớc đó quyết định sẽ xây dựng lại định tuyến tới node đích, nó sẽ gửi một gói tin RREQ với số thứ tự đích lớn hơn số thứ tự đích trƣớc đó để chắc chắn một định tuyến mới sẽ đƣợc xây dựng lại và có thể tồn tại và nếu không có một node nào trả lời gói tin RREQ đó thì mặc định định tuyến cũ sẽ đƣợc sử dụng nhƣ một định tuyến chắc chắn.

2.3.7. Quản lý kết nối cục bộ

Một node có thể biết thông tin về lân cận của nó bằng một trong hai cách. Bất cứ khi nào một node nhận đƣợc thông tin quảng quá từ lân cận, nó sẽ cập nhật thông tin của lân cận đó đảm bảo nó luôn lƣu trữ thông tin của lân cận. Trong

trƣờng hợp một node không gửi bất kỳ một gói tin nào tới các lân cận tích cực dƣới nó – downstream bên trong phạm vi hello_interval, nó sẽ quảng bá tới lân cận của nó một thông điệp hello (một gói tin RREP đặc biệt) nó chứa thông tin định danh và số thứ tự của node. Số thứ tự của node không thay đổi với thông điệp hello trong quá trình truyền tin này. Thông điệp hello này bị ngăn ngừa không đƣợc quảng bá lại bên ngoài các lân cận của node bởi vì nó chỉ đƣợc phép sống trong một khoảng thời gian. Lân cận nhận đƣợc gói tin cập nhật thông tin cục bộ của node. Việc nhận một quảng bá hoặc là nhận một thông điệp hello từ một lân cận mới hoặc là lỗi khi nhận allowed_hello_loss liên tiếp thông điệp hello từ node trƣớc đó trong lân cận là dấu hiệu chỉ ra rằng liên kết cục bộ đã bị thay đổi. Lỗi khi nhận thông điệp hello từ lân cận không tích cực sẽ không kích hoạt bất kỳ hành động của giao thức. Nếu những thông điệp hello không đƣợc nhận từ những bƣớc nhảy kế tiếp dọc theo đƣờng dẫn tích cực, lân cận tích cực sử dụng bƣớc nhảy kế tiếp sẽ đƣợc gửi thông báo rằng đƣờng liên kết bị lỗi.

Quản lý thông tin kết nối cục bộ với thông điệp hello có thể đƣợc sử dụng để chắc chắn rằng chỉ những node với đƣờng liên kết hai chiều đƣợc cân nhắc là những lân cận. Với mục đích này thì mỗi thông điệp hello gửi bởi một node sẽ liệt kê tất cả những node là lân cận. Mỗi node sẽ kiêm tra để chắc chắn rằng nó chỉ sử dụng định tuyến tới lân cận của nó khi mà nó có thể nghe đƣợc thông điệp hello từ node đó. Để tiết kiệm băng thông cục bộ, việc kiêm tra nhƣ vậy chỉ khi mà các node đã đƣợc cấu hình rõ ràng.

Một phần của tài liệu NGHIÊN CỨU ĐỊNH TUYẾN MẠNG CẢM BIẾN ZIGBEE TRONG THUẬT TOÁN TỐI ƯU NĂNG LƯỢNG (Trang 32)

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

(69 trang)