7. Bố cục của luận văn
2.1.3. Cơ chế cảm biến trạng thái kết nối
Trong CBRP, mỗi nút biết liên kết hai chiều của nó đến các nút láng giềng cũng như liên kết một chiều từ các nút láng giềng đến chính nó. Với mục đích này, mỗi nút duy trì một neighbor table (Neighbor table) là một khái niệm cấu trúc dữ liệu mà ta sử dụng cho việc nhận biết trạng thái liên kết và hình thành cụm. Gồm các mục: ID của nút láng giềng mà nó có kết nối; Vai trò của nút láng giềng nút CH ho c nút thành viên cụm; Trạng thái của liên kết đó, hai chiều ho c một chiều). Mỗi nút định kỳ phát sóng thông tin neighbor table của nó trong một tin nhắn HELLO, định kỳ mỗi giây
hello_interval (tin nhắn HELLO của một nút chứa neighbor table của nó và cluster adjacency table - lưu giữ thông tin về các cụm liền kề và được duy trì bởi thủ tục khám phá cụm liền kề - Adjacent Cluster Discovery - của CBRP, gồm các mục: ID của nút CH lân cận; Nút gateway để tiếp cận với nút CH lân cận; Trạng thái của liên kết từ nút gateway của cụm lân cận đến nút CH đó. Một nút đôi khi có thể phát sóng một tin nhắn kích hoạt HELLO để đáp ứng với một số sự kiện cần hành động nhanh chóng). [6]
Khi nhận được thông báo HELLO từ nút B, hàng xóm của nó (nút A) thay đổi
neighbor table riêng của mình như sau:
Bước 1. Nó kiểm tra xem thông tin của nút B đã có trong neighbor table
chưa; nếu không, nó bổ sung thêm một mục nhập cho nút B nếu nó đã nghe từ B trong giây hello_interval trước (tức là nút A chỉ thực hiện việc bổ sung thêm thông tin nút B vào trong neighbor table của nó khi nút A đã nghe từ thông báo HELLO của nút B hai lần trong khoảng thời gian hello_interval).
+ Nếu neighbor table của nút B có chứa thông tin nút A, khi đó nút A đánh dấu liên kết đến B hai chiều trong các mục liên quan.
+ Ngược lại nó sẽ đánh dấu sự liên kết đến B là một chiều (một chiều từ B đến A). [6]
Bước 2. Nếu thông tin của nút B có trong neighbor table của nút A,
+ Nếu trường link_status của mục thông tin nút B đánh dấu hai chiều nhưng thông tin được ghi trong thông báo HELLO của nút B là không có liên kết, thì nó sẽ thay đổi đánh dấu thành một chiều;
+ Nếu trường link_status của mục thông tin nút B đánh dấu một chiều và được ghi trong thông báo HELLO của nút B, thì nó sẽ thay đổi đánh dấu thành hai chiều. [6]
Bước 3. Cập nhật vai trò của nút B trong trường Role của mục thông tin nút B.
Mỗi mục trong neighbor table được lưu giữ trong một khoảng thời gian. Một mục trong bảng sẽ được gỡ bỏ nếu không nhận được thông báo HELLO từ nút của mục đó trong một khoảng thời gian (Hello_loss + 1)* Hello_interval, cho phép chờ thông báo HELLO bị mất trong khoảng thời gian Hello_loss liên tiếp từ nút đó. [6]
Khi cấu trúc liên kết một khu vực láng giềng của nút ổn định, neighbor table
của một nút sẽ có thông tin đầy đủ của tất cả các nút láng giềng có một liên kết hai chiều ho c một chiều đến nó trong một thời gian giới hạn. Tuy nhiên, một nút sẽ không biết nút láng giềng mà nó có liên kết một chiều.
Ví dụ trong hình 2.15, neighbor table của nút 7 sẽ hiển thị 4 có một liên kết một chiều với nó, tuy nhiên nút 4 sẽ không biết sự tồn tại của liên kết đó.
7 4 6 2 1 8 5 3
Liên kết hai chiều Liên kết một chiều Nút trưởng cụm (HN)
1 2
Hình 2.4. Liên kết các cụm
Ngoài việc duy trì neighbor table tại mỗi nút, phát sóng định kỳ các thông báo HELLO cũng cho phép mỗi nút có được thông tin đầy đủ về tất cả các liên kết hai chiều trong vòng hai bước nhảy (two-hop). Những thông tin này được lưu giữ trong một cấu trúc dữ liệu gọi là cơ sở dữ liệu two-hop-topology (B ng cách kiểm tra
neighbor table từ các nút láng giềng, một nút là có thể hoàn thành việc thu thập thông tin về cấu trúc liên kết mạng nhiều nhất là hai bước nhảy bắt đầu từ chính nó. Thông tin về cấu trúc liên kết hai bước nhảy được lưu giữ trong cấu trúc dữ liệu của mỗi nút). Kiểm tra cơ sở dữ liệu two-hop-topology của nó, một nút có thể xác định nút láng giềng nào có liên kết two-hop và thông qua các nút trung gian nó có thể đến được. [6]