Hoạt động của giao thức CTP

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu đánh giá giao thức thu thập dữ liệu cho mạng lưới đồng hồ nước thông minh (Trang 63 - 67)

Giao thức thu thập Contiki thực thi cơ chế thu thập dữ liệu tin cậy từng bước nhảy (hop-by-hop). Dữ liệu được gửi qua một cấu trúc cây đến nút Sink.

Hình 3.7 minh họa quá trình xử lý một số sự kiện: Sự kiện nhận bản tin dữ liệu, sự kiện nhận bản tin ACK hoặc timeout, sự kiện Timer 1 kết thúc, Timer 2 kết thúc và sự kiện gửi một bản tin từ lớp ứng dụng sử dụng giao thức Collect.

3.2.2.1. Khởi tạo

Khi giao thức thu thập được khởi tạo thì kết nối runicast được thiết lập, giá trị rtmetric của tất cả các nút được khởi tạo và việc khám phá các nút lân cận được bắt đầu (bởi việc đăng ký với mô đun phát bản tin điều khiển) trên một kênh riêng biệt. Một nút trong mạng được gán làm nút Sink bằng việc gọi hàm collect_set_sink

trên nút đó.

3.2.2.2. Gửi các bản tin

Thuật toán gửi bản tin dữ liệu hoạt động như sau (hình 3.7):

 Đầu tiên tất cả các thuộc tính của giao thức thu thập được thiết lập.

 Sau đó mỗi nút gửi bản tin dữ liệu đến nút cha sử dụng reliable unicast. Lớp reliable unicast sẽ gửi một bản tin dữ liệu đến nút lân cận, tức là nó sẽ cố gắng chuyển phát một bản tin đến nút lân cận thông qua việc cố gắng truyền lại một số lần lớn nhất có thể cho đến khi nhận được bản tin xác nhận ACK. Nếu thành công, nó sẽ thông báo cho lớp trên (trong trường hợp này là giao thức thu thập). Nếu không thành công (tức là gói tin không nhận được ACK sau một số lần truyền) tức là bản tin dữ liệu bị quá hạn và sự quá hạn này được thông báo cho lớp trên.

Nút cha được xác định để chuyển tiếp bản tin dữ liệu là nút lân cận tốt nhất trong bảng định tuyến. Nếu không tìm được nút lân cận nào tốt nhất (tức là bảng định tuyến rỗng) thì gói tin được loại bỏ và nút đó sẽ chủ động lắng nghe các bản tin điều khiển để phát hiện các nút lân cận tiềm năng.

Chức năng gửi sẽ không được thực hiện nếu nút đó là nút Sink và khi đó chức năng nhận của ứng dụng sử dụng giao thức Collect sẽ được gọi đến.

 Khi bản tin dữ liệu gửi đi nhận được bản tin xác nhận ACK bởi nút cha thì giá trị rtmetric của nút nhận và ETX của nút cha sẽ được cập nhật.

3.2.2.3. Nhận các bản tin

Có hai loại bản tin có thể nhận được đó là: Các bản tin dữ liệu và các bản tin điều khiển.

Khi một nút nhận được một bản tin dữ liệu (hình 3.7) thì:

 Đầu tiên thực hiện lọc bản tin trùng lặp: Bản tin được kiểm tra lại với các bản tin vừa mới được chuyển tiếp. Nếu ID (thuộc tính EPACKET_ID) và địa chỉ nút khởi nguồn (thuộc tính ESENDER) giống nhau thì bản tin sẽ bị loại bỏ. Nếu bản tin không bị trùng lặp thì ID và địa chỉ nút khởi nguồn sẽ được lưu vào trong bảng các bản tin mới được chuyển tiếp gần đây.

 Nếu nút nhận được bản tin là nút Sink thì ứng dụng sử dụng giao thức thu thập được thông báo về sự tiếp nhận một bản tin. Địa chỉ khởi nguồn, ID của bản tin và số bước nhảy đã qua của bản tin được cung cấp như các tham số. Nếu nút nhận bản tin không phải là nút Sink thì bản tin sẽ được chuyển tiếp. - Nếu trường TTL nhỏ hơn hoặc bằng 1 thì bản tin bị loại bỏ.

- Trường HOP count được tăng lên một và trường TTL giảm đi một.

- Bản tin được chuyển tiếp đến nút cha của nó sử dụng kiểu truyền thông reliable unicast. Việc lựa chọn nút cha giống như phần gửi các bản tin đã được mô tả ở trên.

Các bản tin điều khiển:

Khi một nút nhận được một bản tin điều khiển (hình 3.8) thì:

 Nút lân cận gửi bản tin điều khiển được kiểm tra lại trong bảng định tuyến. Nếu nút lân cận này chưa có trong bảng định tuyến thì nó sẽ được thêm vào bảng định tuyến. Nếu nút này đã có trong bảng định tuyến thì giá trị rtmetric của nó sẽ được cập nhật trong bảng định tuyến. Nếu bảng định tuyến đầy thì nút lân cận kém nhất trong bảng định tuyến bị loại bỏ và thay thế vào đó là một nút lân cận mới. Nút lân cận kém nhất được xác định là nút có thước đo định tuyến (rtmetric) đến sink là lớn nhất và lớn hơn rtmetric của nút mới thêm vào.

 Nút nhận được gói tin thông báo sẽ cập nhật giá trị rtmetric của nó.

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu đánh giá giao thức thu thập dữ liệu cho mạng lưới đồng hồ nước thông minh (Trang 63 - 67)

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

(87 trang)