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

Mô hình dữ liệu (DM) của một Nút không liên quan nếu chúng ta không thể thực hiện các thao tác trên đó. Mô hình tương tác (IM) xác định mối quan hệ DM của 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 chuỗi giao tiếp được mã hoá với một Nút khác, chúng sẽ tạo thành mối quan hệ Tương tác. Các lượt 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 mà có thể hiểu là thông báo ở cấp IM giữa các Nút.

Hệ thống 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 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út đó, Hành động báo cáo dữ liệu, chuyển thông tin từ máy chủ trở lại máy khách.

Bên khởi tạo và Mục tiêu

Nút khởi tạo Giao dịch là Bên khởi tạo, trong khi Nút phản hồi là Mục tiêu. Thông thường, Bên khởi tạo là Cụm máy khách và Mục tiêu là Cụm máy chủ. Tuy nhiê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 Tương tác đăng ký được phân tích thêm ở phần sau trong 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ế để giải quyết 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 dùng chung Mã nhóm, một số nguyên 16 bit.

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

Đường dẫn

Bất cứ khi nào bạn muốn tương tác với một Thuộc tính, Sự kiện hoặc Lệnh, bạn phải chỉ định Đường dẫn cho lượt tương tác này: vị trí của 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à đường dẫn cũng có thể sử dụng Nhóm hoặc Toán tử ký tự đại diện để giải quyết đồng thời 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 đó giảm số lượng hành động.

Cơ chế này rất quan trọng để nâng cao khả năng phản hồi của giao tiếp. Ví dụ: khi người dùng muốn tắt tất cả đèn, trợ lý giọng nói có thể thiết lập một lượt tương tác duy nhất với một số đèn trong một Nhóm thay vì một chuỗi Lượt tương tác riêng lẻ. Nếu Bên khởi tạo tạo các Lượt tương tác riêng lẻ với từng đèn, thì lượt tương tác đó 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ệt giữa các thiết bị. Hiệu ứng này thường được gọi là "hiệu ứng bỏng ngô".

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

<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.

Đã hẹn giờ và Chưa hẹn giờ

Có hai cách để thực hiện Giao dịch ghi hoặc gọi: Đã hẹn giờChưa hẹn giờ. Giao dịch đã hẹn giờ 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. Thời gian chờ này đặc biệt hữu ích cho các Thiết bị kiểm soát quyền truy cập vào tài sản, chẳng hạn như thiết bị mở và khoá cửa gara.

Để hiểu về Giao dịch đã hẹn giờ, bạn nên hiểu cách Tấn công chặn có thể xảy ra và lý do Giao dịch đã hẹn giờ rất 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 người trung gian, 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 gây nhiễu sóng vô tuyến.
  3. Alice không nhận được phản hồi từ Bob nên đã gửi thông báo thứ hai.
  4. Eve chặn lại và ngăn Bob nhận thông báo đó.
  5. Eve gửi thông báo bị chặn đầu tiên cho Bob, như thể thông báo đó đến từ Alice.
  6. Bob gửi phản hồi cho Alice (và Eve).
  7. Eve giữ thông báo bị chặn thứ hai để phát lại sau. Vì Bob chưa bao giờ nhận được thông báo bị chặn thứ hai ban đầu từ Alice, nên Bob sẽ chấp nhận thông báo đó. Thông báo này thể hiện một vi phạm bảo mật khi thông báo mã hoá một lệnh như "mở khoá".

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

Giao dịch đã hẹn giờ 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 giao dịch 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 Thiết bị kiểm soát tài sản bảo mật và quyền riêng tư vật lý hoặc ảo.

Trừu tượng hoá SDK

Các phần Giao dịch đọc, Giao dịch ghi, và Giao dịch gọi cung cấp thông tin tổng quan ở cấp cao về các Hành động của 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 Matter SDK thường không thực hiện các lệnh gọi để thực thi trực tiếp Hành động; các 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 Lượt tương tác. Tuy nhiên, việc hiểu các Hành động của IM là rất quan trọng để giúp kỹ sư có trình độ tốt về các chức năng của Matter, cũng như kiểm soát tốt việc triển khai SDK.