7. Bố cục của luận văn
2.1.5. Khám phá cụm liền kề (Adjacent Cluster Discovery)
CBRP sử dụng hai cấu trúc dữ liệu để hỗ trợ quá trình định tuyến: Cluster Adjacency Table (CAT) và cơ sở dữ liệu two-hop-topology. CAT lưu trữ thông tin về các cụm lân cận là liên kết hai chiều ho c liên kết một chiều. Điều đó có nghĩa, một cụm được gọi là
+ Có liên kết hai chiều, nếu có một liên kết hai chiều giữa hai nút của cụm, ho c nếu có ít nhất hai liên kết đơn hướng đối diện giữa hai nút (hình 2.18, cụm A và cụm C, cụm A và cụm B có liên kết hai chiều)
+ Có liên kết một chiều, nếu có chỉ là một liên kết đơn hướng giữa chúng (hình
2.18, cụm C và cụm D có liên kết một chiều). [9] L K F A C G E H B D N Hình 2.7. Cụm liền kề
Cơ sở dữ liệu two-hop-topology được xây dựng từ những thông tin nhận được qua tin nhắn HELLO. Nó chứa tất cả các nút có nhiều nhất là hai bước nhảy xa. Quá trình định tuyến hoạt động theo hai bước. Đầu tiên, nó phát hiện ra một con đường từ một nút nguồn đến nút đích, sau đó nó định tuyến các gói dữ liệu.
Trong hình 2.18, cụm C được cho là được liên kết một chiều đến cụm D. Cụm C được gọi là cụm ngược tuyến (upstream) liền kề liên kết một chiều của cụm D, và ngược lại cụm D là cụm xuôi tuyến (downstream).
Mục tiêu của Adjacent Cluster Discovery là giúp cụm có thể khám phá tất cả các cụm liền kề có liên kết hai chiều với nó. Với mục tiêu này, mỗi nút giữ một CAT ghi lại thông tin về tất cả các nút CH láng giềng. [9]
Lưu ý: Đối với các nút thành viên, nút CH láng giềng luôn luôn cách hai bước nhảy và có thể được phát hiện b ng cách kiểm tra các thông báo HELLO nhận được. Đối với một nút CH, nút CH láng giềng của nó có thể là cách 2 ho c 3 bước nhảy (hình 2.19). Khi sử dụng các thông báo HELLO, một nút CH chỉ có thể phát hiện nút CH láng giềng cách 2 bước nhảy. Tuy nhiên, nó có thể dựa vào CAT của các nút thành viên của nó để khám phá những nút CH láng giềng cách 3 bước nhảy.
5 6 11 9 1 3 2 4 8 7 10 12 Hình 2.8. Cụm liền kề cách 2, 3 bƣớc nhảy
Trường gateway trong CAT chứa ID của nút gateway, mà thông qua đó nút CH láng giềng có thể xác định được. Nút gateway là nút thành viên của cụm liền kề và do đó luôn luôn có một liên kết hai chiều với nút CH láng giềng. Trường link status chỉ rõ trạng thái của mối liên hệ giữa nút gateway của nút đó và chính nó. Các giá trị có thể là Link_bidirectional, Link_from, Link_to; trong đó Link_from có nghĩa là có một liên
kết đơn hướng từ nút gateway đến chính nó và Link_to có nghĩa là một liên kết đơn hướng từ nó đến nút gateway. Lưu ý r ng: Có thể có một số các nút gateway hàng đầu đối với một cụm liền kề cụ thể.
Bảng CAT được cập nhật đinh kỳ bởi các thông báo HELLO mà một nút nhận được. Một nút thành viên phát hiện ra nút CH chính xác là cách 2 bước nhảy và ghi lại trong CAT của nó. Giả sử, bất cứ khi nào một nút A nhận được một thông báo HELLO từ nút B, nó kiểm tra qua danh sách các mục của thông báo. Nếu có một nút CH C và trạng thái liên kết của nút là Link_bidirectional (tức là nút B là một nút thành viên của cụm C) và, hơn nữa, cụm C không phải là cụm máy chủ của nút A, thì nút A thêm một mục trong CAT cho cụm liền kề C với nút gateway B và trường link status
xác định trạng thái liên kết giữa nút A và nút B. [9]
Để giúp nút CH có thể có được thông tin về cụm liền kề mà cách 3 bước nhảy, mỗi nút thành viên phải phát sóng CAT tóm tắt như một Cluster Adjacency Extension
trong thông báo HELLO (Chỉ có nút thành viên mới gửi thông tin này, nút CH không thuộc trong trường hợp này). Các quy tắc được tóm tắt như sau:
- Quy tắc 1: Nếu có ít nhất một nút gateway mà nút đó có một liên kết hai chiều, thì nó sẽ quảng bá các cụm láng giềng mà có thể truy cập hai chiều.
- Quy tắc 2: Nếu chỉ có liên kết một chiều (Link_from), các cụm láng giềng sẽ được quảng bá là Link_from. (Lưu ý r ng, b ng thông báo HELLO, một nút là không thể phát hiện bất cứ liên kết Link_to đến nút gateway). [9]
Ngoài việc sử dụng thông báo HELLO để xây dựng CAT gồm các nút CH láng giềng cách 2 bước nhảy, một nút CH có thể kiểm tra Cluster Adjacency Extension của các nút thành viên để xác định các nút CH láng giềng cách 3 bước nhảy của mình để đưa thêm vào CAT. Cụ thể như sau, giả sử nút CH A nhận được thông báo HELLO của nút B. Sau khi cập nhật vào CAT của nó với mục neighbor table trong HELLO, nó kiểm tra Cluster Adjacency Extension của nút B trong HELLO, nếu nó tìm thấy nút CH C liền kề mà nó đã không thể truy cập trong vòng 2 bước nhảy khi đó nó tạo ra một mục mới trong CAT của nó với nút gateway là B và link status theo quy định tại phần mở rộng. [9]
Nếu một nút CH thấy r ng một số cụm liền kề chỉ có thể truy cập thông qua liên kết một chiều Link_from, nó sẽ lũ lụt đến các cụm láng giềng một tin nhắn của TTL3 tìm kiếm một liên kết "to" tương ứng với liên kết "from" này. Thông điệp này sẽ bao gồm các mục tương ứng cho các cụm liền kề. Khi một nút CH nhận được một thông điệp tìm kiếm được gửi đến, nó sẽ kiểm tra xem nó có chứa một mục Link_from
tương ứng với nút CH nguồn không. Nếu có, nó sẽ gửi một thông báo trả lời với các mục CAT tương ứng và cập nhật vào CAT của nó với mục Link_to mới theo quy định
trong thông báo. Kết quả là nút CH sẽ có thông tin đầy đủ của tất cả các cụm liền kề liên kết hai chiều thậm chí nếu không có liên kết hai chiều thực tế ở giữa.
8 5 7 6 1 2 3 9 4 Hình 2.9. Liên kết cụm
Ví dụ, trong hình 2.20, cụm 1 biết cụm 2 có thể tiếp cận với cụm 1 thông qua nút 5, nhưng cụm 1 không biết nó có thể tiếp cận cụm 2 thông qua nút 3. Trong CBRP, cụm đầu 1 và cụm 2 sẽ khám phá ra theo kịch bản này và phổ biến thông tin đến nút 3 và nút 5 tương ứng.