Các bản tin điều khiể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 44 - 53)

Cách tốt nhất để hiểu sâu về giao thức RPL đó là xem xét định dạng các gói tin của giao thức. RPL sử dụng ba loại bản tin là: Bản tin đối tượng thông tin

DODAG (DIO), bản tin đối tượng thông báo đích đến (DAO) và bản tin yêu cầu thông tin DODAG (DIS).

Bản tin điều khiển RPL chứa một tiêu đề ICMPv6 và theo sau là nội dung bản tin (message body). Nội dung bản tin bao gồm phần cơ sở bản tin (Base) và có thể có một số tùy chọn khác như được minh họa ở hình 2.9.

Hình 2.9: Cấu trúc chung của một bản tin điều khiển RPL. Phần tiêu đề của bản tin điều khiển RPL bao gồm các trường:

Trường kiểu (Type) - 1 byte: Được quy định bằng 155 để phân biệt bản tin điều khiển RPL với các bản tin điều khiển của các giao thức khác.

Trường mã (Code) - 1 byte: Được sử dụng để phân biệt các bản tin điều khiển RPL với nhau:

- Code = 0x00: Bản tin DIS. - Code = 0x01: Bản tin DIO. - Code = 0x02: Bản tin DAO.

Trường tổng kiểm tra (Checksum) - 2 bytes.

Giao thức RPL sử dụng các bộ định thời để quản lý tốc độ gửi và số lượng bản tin ICMPv6 trong mạng. Những bộ định thời này hoạt động kết hợp giữa chế độ định thời và chế độ sự kiện. Do đó, không những làm giảm số lượng những bản tin ICMPv6 mà vẫn đảm bảo tính linh động của mạng.

2.2.3.1. Bản tin DIS

Bản tin yêu cầu thông tin DODAG (DIS) được sử dụng để yêu cầu một đối tượng thông tin DODAG. Một nút mạng có thể sử dụng bản tin DIS nhằm thăm dò

các nút xung quanh nó để có được thông tin về DODAG lân cận. Bản tin DIS còn được sử dụng để yêu cầu bản tin DIO từ các nút lân cận.

Hình 2.10: Định dạng phần cơ sở (Base) của bản tin DIS.

Hình 2.10 minh họa định dạng phần cơ sở của bản tin DIS. Các trường được mô tả như sau:

Các cờ (Flags): Đây là trường 8 bit dành riêng cho các cờ chưa được sử dụng. Trường này phải được thiết lập bằng 0 bởi phía gửi và phải được loại bỏ bởi phía nhận.

Trường dự trữ (Reserved): Đây là trường 8 bit chưa được sử dụng.

Các tùy chọn (Options): Bản tin DIS có thể mang các tùy chọn sau: - 0x00: Pad1.

- 0x01: PadN.

- 0x07: Thông tin được yêu cầu.

2.2.3.2. Bản tin DIO

Bản tin DIO mang thông tin cho phép nút mạng phát hiện ra một RPL Instance, tìm hiểu các thông số cấu hình của nó, lựa chọn các nút parent và duy trì DODAG. Hình 2.11 minh họa định dạng đối tượng cơ sở của bản tin DIO. Các trường được mô tả như sau:

Cờ G (Grounded): Cờ G cho biết khi nào DODAG được thông báo có thể đáp ứng được mục tiêu được xác định bởi ứng dụng. Nếu cờ này được thiết lập thì DODAG được gọi là grounded. Ngược lại, nếu cờ này được xóa thì DODAG được gọi là floating.

Chế độ hoạt động MOP (Mode of Operation): Trường MOP xác định chế độ hoạt động của RPL Instance. Tất cả các nút khi tham gia vào DODAG cần phải có khả năng tuân theo chế độ hoạt động để có thể tham gia đầy đủ như một bộ định tuyến nếu không chúng cần phải tham gia như một nút lá.

Trường DODAGPreference (Prf): Đây là một số không dấu 3 bit để xác định nút gốc của DODAG này được ưu tiên hơn khi được so sánh với các nút gốc của các DODAG khác trong cùng một RPL Instance. Trường này có phạm vi từ 0x00 (độ ưu tiên thấp nhất) đến 0x07 (được ưu tiên nhất).

Trường số phiên bản (Version number): Là một số nguyên không dấu 8 bit được thiết lập bởi nút gốc để xác định số phiên bản DODAG.

Trường thứ bậc (Rank): Là một số nguyên không dấu 16 bit để xác định Rank của một nút trong DODAG gửi bản tin DIO.

Trường RPLInstanceID: Là trường 8 bit được thiết lập bởi nút gốc để xác định DODAG là một phần của RPLInstance nào.

Trường số thứ tự kích hoạt thông báo đích đến DTSN (Destination Advertisement Trigger Sequence Number): Là một số nguyên không dấu 8 bit được thiết lập bởi nút gửi đi bản tin DIO. Trường này được sử dụng như là một phần của thủ tục duy trì các tuyến đường hướng xuống.

Các cờ (Flags): Trường chưa được sử dụng 8 bit dự trữ cho các cờ. Trường này cần phải thiết lập bằng 0 ở phía gửi và phải được loại bỏ bởi phía nhận.

Trường dự trữ (Reserved): Đây là trường chưa được sử dụng 8 bit. Trường này cần phải thiết lập bằng 0 ở phía gửi và phải được loại bỏ bởi phía nhận.

Trường DODAGID: Đây là trường địa chỉ IPv6 gồm 128 bit được thiết lập bởi nút gốc để xác định duy nhất một DODAG.

Các tùy chọn DIO bao gồm:

- 0x00: Pad1. - 0x01: PadN.

- 0x02: Tùy chọn mang thước đo DAG.

2.2.3.3. Bản tin DAO

Bản tin DAO được sử dụng để gửi thông tin đích đến hướng lên dọc theo DODAG. Ở chế độ lưu trữ, bản tin DAO được gửi unicast từ nút con đến nút cha được lựa chọn. Ở chế độ không lưu trữ, bản tin DAO được gửi unicast đến nút gốc. Bản tin DAO có thể được xác nhận bởi nút đích của nó bởi một bản tin xác nhận DAO-ACK. Định dạng của đối tượng cơ sở trong bản tin DAO được minh họa ở hình 2.12.

Hình 2.12: Định dạng đối tượng cơ sở của bản tin DAO. Các trường trong bản tin DAO được mô tả như sau:

Trường RPLInstanceID: Đây là trường 8 bit cho biết Instance của cấu trúc liên kết liên quan đến DODAG (như đã biết với bản tin DIO).

Cờ K: Cho biết rằng phía nhận sẽ gửi lại một bản tin xác nhận DAO-ACK.

Cờ D: Cho biết rằng trường DODAGID có mặt. Cờ này phải được thiết lập khi một RPLInstanceID cục bộ được sử dụng.

Các cờ: 6 bit dự trữ còn lại cho các cờ chưa được sử dụng. Trường này phải được thiết lập bằng 0 ở phía gửi và phải được loại bỏ ở phía nhận.

Trường thứ tự DAO (DAO Sequence): Trường này được tăng lên một sau mỗi lần bản tin DAO gửi đi từ một nút và được trả lời bằng một bản tin xác nhận DAO-ACK.

Trường DODAGID (tùy chọn): Đây là một số nguyên không dấu 128 bit được thiết lập bởi nút gốc để nhận diện một DODAG. Trường này chỉ xuất hiện khi cờ D được thiết lập. Trường này cũng chỉ xuất hiện khi một RPLInstanceID cục bộ được sử dụng để xác định DODAGID liên quan đến RPLInsstanceID. Khi một RPLInstanceID toàn cục được sử dụng thì trường này không cần thiết phải xuất hiện.

Các tùy chọn DAO bao gồm:

- 0x00: Pad 1. - 0x01 : PadN.

- 0x06: Thông tin chuyển tiếp.

2.2.3.4. Các tùy chọn trong bản tin điều khiển

2.2.3.4.1. Định dạng chung của các tùy chọn

Tất cả các tùy chọn trong bản tin điều khiển RPL thường có định dạng sau:

Hình 2.13: Định dạng chung của các tùy chọn trong bản tin điều khiển RPL.

Trường kiểu tùy chọn (Option Type): Là số nhận dạng kiểu tùy chọn có 8 bit.

Trường độ dài tùy chọn (Option Length): Số nguyên không dấu 8 bit biểu diễn độ dài phần tùy chọn theo đơn vị octet. Độ dài này không bao gồm các trường kiểu tùy chọn và độ dài tùy chọn.

Trường dữ liệu tùy chọn (Option Data): Đây là trường có độ dài thay đổi chứa dữ liệu quy định chi tiết phần tùy chọn trong bản tin điều khiển.

2.2.3.4.2. Pad1

Tùy chọn Pad1 có thể xuất hiện trong các bản tin DIS, DIO, DAO, DAO- ACK và định dạng của nó như sau:

Hình 2.14: Định dạng của tùy chọn Pad1.

Tùy chọn Pad1 được sử dụng để chèn một octet duy nhất của phần đệm vào bản tin để đảm bảo sắp xếp thẳng hàng các tùy chọn. Nếu yêu cầu nhiều hơn một octet của phần đệm thì tùy chọn PadN nên được sử dụng thay vì sử dụng nhiều tùy chọn Pad1.

Định dạng của tùy chọn Pad1 là một trường hợp đặc biệt khi nó không có cả trường độ dài tùy chọn và trường dữ liệu tùy chọn.

2.2.3.4.3. PadN

Tùy chọn PadN có thể xuất hiện trong các bản tin DIS, DIO, DAO, DAO- ACK và định dạng của nó được biểu diển ở hình 2.15.

Hình 2.15: Định dạng của tùy chọn PadN.

Tùy chọn PadN được sử dụng để chèn hai hoặc nhiều octet vào phần đệm trong một bản tin để đảm bảo sắp xếp thẳng hàng các tùy chọn. Dữ liệu tùy chọn PadN cần phải được bỏ qua bởi phía thu. Các trường được mô tả như sau:

Trường kiểu tùy chọn (Type): 0x01.

Trường độ dài tùy chọn (Option Length): Đối với N octet được đệm vào bản tin (2 ≤ N ≤ 7) thì trường độ dài tùy chọn chứa giá trị N – 2. Độ dài tùy chọn bằng 0 cho biết tổng độ dài phần đệm là 2 octet. Độ dài tùy chọn có giá trị 5 cho biết tổng độ dài phần đệm là 7 octet và đó là kích thước phần đệm tối đa cho phép đối với tùy chọn PadN.

Dữ liệu tùy chọn (Option Data): Đối với phần đệm có N octet (N>1) thì dữ liệu tùy chọn bao gồm N – 2 octet có giá trị bằng 0.

2.2.3.4.4. Tùy chọn thông tin yêu cầu

Tùy chọn thông tin yêu cầu có thể xuất hiện trong các bản tin DIS và định dạng của nó được minh họa như hình 2.16.

Tùy chọn thông tin yêu cầu được sử dụng để một nút yêu cầu các bản tin DIO từ một tập hợp các nút lân cận. Tùy chọn thông tin yêu cầu có thể xác định một số thuộc tính cần đạt được bởi nút nhận. Các thuộc tính này ảnh hưởng đến quyết định khi nào một nút sẽ khởi động lại bộ định thời DIO Trickle của nó.

Hình 2.16: Định dạng của tùy chọn thông tin được yêu cầu.

Tùy chọn thông tin yêu cầu chứa các cờ. Các cờ này chỉ rõ những thuộc tính mà một nút sẽ kiểm tra trước khi quyết định khởi động lại bộ định thời của nó. Một nút sẽ khởi động lại bộ định thời của nó khi tất cả các thuộc tính đều đúng. Các trường trong tùy chọn thông tin yêu cầu được mô tả như sau:

Kiểu tùy chọn (Type): 0x07.

Độ dài tùy chọn (Option Length): 19.

Cờ V (Version): Cờ V là thuộc tính về phiên bản. Thuộc tính về phiên bản đúng khi DODAGVersionNumber của nút nhận phù hợp với trường Version Number yêu cầu. Nếu cờ V bị xóa thì trường Version không có hiệu lực, trường này phải thiết lập bằng 0 và cần được loại bỏ bởi bên nhận.

Cờ I (InstanceID): Cờ I là thuộc tính về InstanceID. Thuộc tính InstanceID đúng khi RPLInstanceID hiện tại của nút phù hợp với RPLInstanceID yêu cầu. Nếu cờ I bị xóa thì trường RPLInstanceID không có hiệu lực, trường RPLInstanceID phải thiết lập bằng 0 và cần được loại bỏ bởi phía nhận.

Cờ D (DODAGID): Cờ D là thuộc tính về DODAGID. Thuộc tính về DODAGID đúng khi các Parent của nút có cùng DODAGID với trường DODAGID. Nếu cờ D bị xóa thì trường DODAGID không có hiệu lực, trường này phải thiết lập bằng 0 và cần được loại bỏ bởi phía nhận.

Các cờ (Flags): Đây là trường 5 bit hiện chưa được sử dụng, được dành riêng cho các cờ. Trường này phải được thiết lập bằng 0 bởi phía gửi và phải được loại bỏ bởi phía nhận.

Trường số phiên bản (Version Number): Là số nguyên không dấu 8 bit chứa giá trị DODAGVersionNumber đang được yêu cầu khi có hiệu lực.

Trường RPLInstanceID: Là số nguyên không dấu 8 bit chứa RPLInstanceID đang được yêu cầu khi có hiệu lực.

Trường DODAGID: Là số nguyên không dấu 128 bit chứa DODAGID đang được yêu cầu khi có hiệu lực.

2.2.3.4.5. Tùy chọn mang thước đo định tuyến DAG

Tùy chọn mang thước đo định tuyến có thể xuất hiện trong các bản tin DIO, DAO và định dạng của nó được biểu diển ở hình 2.17.

Hình 2.17: Định dạng của tùy chọn mang thước đo DAG.

Tùy chọn mang thước đo định tuyến DAG thường được sử dụng để thông báo các thước đo định tuyến dọc theo DODAG. Tùy chọn này có thể mang thước đo định tuyến của một số nút, một số liên kết riêng biệt và có thể là tổng hợp các ràng buộc, các thước đo định tuyến của một tuyến đường. Tùy chọn mang thước đo định

tuyến có thể có thể xuất hiện nhiều hơn một lần trong cùng một bản tin điều khiển RPL.

Các trường trong tùy chọn này được mô tả như sau:

Trường kiểu tùy chọn (Type Option): 0x02.

Trường độ dài tùy chọn (Option Length): Trường này chứa độ dài của dữ liệu thước đo tính theo đơn vị octet.

Trường dữ liệu thước đo định tuyến: Thứ tự, nội dung và việc mã hóa dữ liệu mang thước đo định tuyến DAG được quy định trong tài liệu RFC6551.

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 44 - 53)

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

(87 trang)