Khái niệm mô hình tương tác

Mô hình dữ liệu (DM) của một Nút sẽ không liên quan nếu chúng ta không thể thực hiện các thao tác trên các nút đó. Mô hình tương tác (IM) xác định mối quan hệ DM của một Nút với DM của các Nút khác: một ngôn ngữ chung để giao tiếp giữa các DM.

Các nút tương tác với nhau bằng cách:

  • Đọc và đăng ký thuộc tính và sự kiện
  • Ghi vào thuộc tính
  • Gọi lệnh

Bất cứ khi nào một Nút thiết lập một trình tự giao tiếp được mã hoá với một Nút khác, thì chúng sẽ tạo thành mối quan hệ Tương tác. Hoạt động tương tác có thể bao gồm một hoặc nhiều Giao dịch và Giao dịch bao gồm một hoặc nhiều Hành động. Bạn có thể hiểu Hành động là thông báo cấp IM giữa các Nút.

Hệ phân cấp của mô hình tương tác
Hình 1: Hệ phân cấp của Mô hình tương tác

Một số Hành động được hỗ trợ trên Giao dịch, chẳng hạn như Hành động yêu cầu đọc yêu cầu một Thuộc tính hoặc Sự kiện từ một Nút khác hoặc phản hồi của nó, Hành động báo cáo dữ liệu sẽ chuyển thông tin từ máy chủ trở lại ứng dụng.

Trình khởi tạo và Mục tiêu

Nút bắt đầu một Giao dịch là Đầu mối khởi tạo, còn Nút phản hồi là Mục tiêu. Thông thường, thực thể khởi tạo là một cụm ứng dụng khách và mục tiêu là một cụm máy chủ. Tuy nhiên, vẫn có một số trường hợp ngoại lệ đối với mẫu này, chẳng hạn như trong Số lượt tương tác với gói thuê bao được phân tích ở phần dưới của mục này.

Nhóm

Các nút trong Matter có thể thuộc về một Nhóm. Nhóm thiết bị là một cơ chế để định địa chỉ và gửi thông báo đến một số Thiết bị trong cùng một Hành động cùng một lúc. Tất cả các Nút trong một Nhóm đều có cùng một Mã nhóm, một số nguyên 16 bit.

Để thực hiện giao tiếp ở cấp nhóm (Groupcast), Matter tận dụng các thông báo Multicast IPv6 và tất cả thành viên trong Nhóm đều có cùng một địa chỉ Multicast.

Đường dẫn

Bất cứ khi nào muốn tương tác với một Thuộc tính, Sự kiện hoặc Lệnh, chúng ta phải chỉ định Đường dẫn cho lượt tương tác này: vị trí của một Thuộc tính, Sự kiện hoặc Lệnh trong hệ phân cấp Mô hình dữ liệu của một Nút. Lưu ý là các đường dẫn cũng có thể sử dụng Nhóm hoặc Toán tử ký tự đại diện để cùng lúc xử lý một số Nút hoặc cụm, tổng hợp các lượt tương tác này và do đó làm giảm số lượng hành động.

Cơ chế này rất quan trọng để tăng khả năng phản hồi của thông tin liên lạc. Ví dụ: khi người dùng muốn tắt tất cả đèn, trợ lý thoại có thể thiết lập một lượt tương tác với một số đèn trong một Nhóm thay vì một chuỗi các Lượt tương tác riêng lẻ. Nếu Trình khởi tạo tạo ra các Hành động tương tác riêng lẻ với từng đèn, thì điều này có thể tạo ra độ trễ mà con người có thể nhận thấy trong khả năng phản hồi của Thiết bị. Hiệu ứng này khiến nhiều Thiết bị phản ứng với một lệnh có độ trễ rõ ràng giữa các thiết bị. Hiện tượng này thường được gọi là "hiệu ứng bỏng ngô".

Bạn có thể tập hợp một Đường dẫn trong Matter bằng một trong các tuỳ chọn sau:

<path> = <node> <endpoint> <cluster> <attribute | event | command>
<path> = <group ID>        <cluster> <attribute | event | command>

Và trong các khối xây dựng Đường dẫn này, endpointcluster cũng có thể bao gồm Toán tử ký tự đại diện để chọn nhiều thực thể Nút.

Có tính giờ và không tính giờ

Có hai cách để thực hiện Giao dịch ghi hoặc Gọi: Được tính giờKhông được tính giờ. Giao dịch có thời gian sẽ thiết lập thời gian chờ tối đa để gửi Hành động ghi/Gọi. Mục đích của thời gian chờ này là ngăn chặn Tấn công chặn trên Giao dịch. Điều này đặc biệt đúng đối với các Thiết bị kiểm soát quyền truy cập vào các tài sản, chẳng hạn như khoá và bộ mở cửa gara.

Để hiểu về Giao dịch có thời gian, bạn cần hiểu cách thức xảy ra Cuộc tấn công can thiệp và lý do Giao dịch có thời gian lại quan trọng.

Tấn công chặn

Tấn công chặn có mẫu sau:

  1. Alice gửi cho Bob một thông báo ban đầu, chẳng hạn như Hành động yêu cầu ghi.
  2. Eve, một kẻ trung gian, sẽ chặn thông báo và ngăn Bob nhận thông báo, chẳng hạn như thông qua một số loại thiết bị gây nhiễu sóng vô tuyến.
  3. Alice không nhận được phản hồi của Bob nên gửi tin nhắn thứ hai.
  4. Eve lại chặn và ngăn Bob nhận được thông báo.
  5. Eve gửi tin nhắn bị chặn đầu tiên đến Bob, như thể tin nhắn đó đến từ Alice.
  6. Bob gửi phản hồi cho Alice (và Eve).
  7. Eve giữ lại thông báo bị chặn thứ hai để phát lại sau. Vì Bob chưa bao giờ nhận được tin nhắn gốc thứ hai bị chặn từ Alice, nên Bob sẽ chấp nhận tin nhắn đó. Thông báo này cho biết một sự cố bảo mật khi thông báo mã hoá một lệnh như "mở khoá".

Để ngăn chặn những loại tấn công này, Hành động theo thời gian sẽ đặt thời gian chờ tối đa cho Giao dịch khi bắt đầu Giao dịch. Ngay cả khi Eve thực thi được 6 bước đầu tiên của vectơ tấn công, cô cũng sẽ không thể phát lại thông báo ở bước 7 do hết thời gian chờ trên Giao dịch.

Giao dịch có thời gian sẽ làm tăng độ phức tạp và số lượng Hành động. Do đó, bạn không nên sử dụng các quyền này cho mọi Giao dịch, mà chỉ nên sử dụng cho các thao tác quan trọng trên những Thiết bị có quyền kiểm soát đối với các tài sản bảo mật và quyền riêng tư thực hoặc ảo.

Khái niệm trừu tượng SDK

Các phần Đọc giao dịch, Ghi giao dịchGọi giao dịch cung cấp thông tin tổng quan cấp cao về Hành động mô hình tương tác do SDK thực hiện.

Nhà phát triển tạo một sản phẩm sử dụng SDK Matter thường không thực hiện các lệnh gọi để thực thi Hành động trực tiếp; Hành động được trừu tượng hoá bằng các hàm SDK sẽ đóng gói các hành động đó vào một Hành động tương tác. Tuy nhiên, việc hiểu rõ Hành động trong IM là rất quan trọng để giúp kỹ sư nắm vững các chức năng của Matter, cũng như kiểm soát tốt việc triển khai SDK.