Triển khai các tính năng nâng cao

Xem nguồn trên GitHub

Một số tính năng nâng cao là không bắt buộc, tuỳ thuộc vào việc chúng có được hỗ trợ trên nền tảng phần cứng đích hay không.

Đang tự động lấy khung hình

IEEE 802.15.4 xác định hai loại phương thức truyền dữ liệu giữa mẹ và con: truyền trực tiếp và truyền gián tiếp. Phần sau được thiết kế chủ yếu cho các thiết bị cuối ngủ (SED) thường ngủ, định kỳ đánh thức để thăm dò cha mẹ về dữ liệu trong hàng đợi.

  • Truyền trực tiếp – cha mẹ gửi khung dữ liệu trực tiếp đến thiết bị cuối Truyền trực tiếp

  • Truyền gián tiếp – cha mẹ giữ dữ liệu cho đến khi có thiết bị cuối dự kiến yêu cầu Truyền trực tiếp

Trong trường hợp gián tiếp, trước tiên, thiết bị cuối của trẻ phải thăm dò ý kiến của cha mẹ để xác định xem có dữ liệu nào cho thiết bị hay không. Để làm điều này, nhà xuất bản con gửi một yêu cầu dữ liệu mà cha mẹ xác nhận. Sau đó, phần tử mẹ sẽ xác định xem có dữ liệu nào cho thiết bị con hay không; nếu có, thì thiết bị sẽ gửi một gói dữ liệu đến thiết bị con để xác nhận việc nhận dữ liệu.

Nếu đài phát thanh hỗ trợ động cài đặt bit Đang chờ xử lý khung trong việc xác nhận gửi cho SED, trình điều khiển phải triển khai API khớp địa chỉ nguồn để bật tính năng này. OpenThread sử dụng API này để cho đài phát thanh biết rằng cần phải đặt bit Khung hình đang chờ xử lý.

Nếu đài phát thanh không hỗ trợ động cài đặt bit Đang chờ xử lý khung, thì đài có thể giả lập API so khớp địa chỉ nguồn để trả về OT_ERROR_NOT_IMPLEMENTED.

Quét/Phát hiện năng lượng bằng đài

Tính năng Quét/Phát hiện năng lượng yêu cầu khối vô tuyến lấy mẫu năng lượng có trên các kênh đã chọn và trả về giá trị năng lượng đã phát hiện cho lớp trên.

Nếu tính năng này không được triển khai, lớp MAC IEEE 802.15.4 sẽ gửi/nhận gói Yêu cầu/Phản hồi báo hiệu để đánh giá giá trị năng lượng hiện tại trên kênh.

Nếu chip chọn hỗ trợ tính năng Quét/Phát hiện năng lượng, hãy nhớ tắt logic quét năng lượng của phần mềm bằng cách đặt macro OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0.

Tăng tốc phần cứng cho mbedTLS

mbedTLS xác định một số macro trong tệp tiêu đề cấu hình chính, mbedtls-config.h, để cho phép người dùng bật các phương thức triển khai thay thế của AES, SHA1, SHA2 và các mô-đun khác, cũng như các hàm riêng lẻ của mô-đun mật mã đường cong hình elip (ECC) trên mô-đun GF(p). Xem phần tăng tốc phần cứng mbedTLS để biết thêm thông tin.

OpenThread không bật các macro đó, do đó, các thuật toán mật mã đối xứng, thuật toán băm và hàm ECC đều sử dụng phương thức triển khai phần mềm theo mặc định. Những cách triển khai này yêu cầu tài nguyên điện toán và bộ nhớ đáng kể. Để có hiệu suất tối ưu và trải nghiệm người dùng tốt hơn, bạn nên bật tính năng tăng tốc phần cứng thay vì phần mềm để triển khai các thao tác trên.

Để bật tính năng tăng tốc phần cứng trong OpenThread, các tệp tiêu đề cấu hình mbedTLS sau đây phải được thêm vào phần khai báo biên dịch ot-config trong các tệp CMake của nền tảng:

  • Cấu hình chính, xác định tất cả các macro cần thiết được sử dụng trong OpenThread: /openthread/third-party/mbedtls/mbedtls-config.h
  • Cấu hình dành riêng cho người dùng, xác định các cách triển khai thay thế cho các mô-đun và hàm: src/platform-name-mbedtls-config.h

Ví dụ từ nrf52811.cmake:

target_compile_definitions(ot-config INTERFACE
    "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\""
)

Các macro được nhận xét trong mbedtls-config.h là không bắt buộc và có thể bật trong tệp tiêu đề cấu hình dành riêng cho người dùng để tăng tốc phần cứng.

Để biết cấu hình mẫu cụ thể cho người dùng cụ thể, hãy xem tệp mbedtls_config_autogen.h trong ot-efr32.

Mô-đun AES

OpenThread Security áp dụng mã hóa AES CCM (Bộ đếm với CBC-MAC) để mã hóa/giải mã các thông báo IEEE 802.15.4 hoặc MLE và xác thực mã tích hợp thông báo. Tính năng tăng tốc bằng phần cứng ít nhất phải hỗ trợ chế độ AES ECB (Sách mã sách điện tử) cơ bản cho lệnh gọi chức năng cơ bản AES CCM.

Cách sử dụng phương thức triển khai mô-đun AES thay thế:

  1. Xác định macro MBEDTLS_AES_ALT trong tệp tiêu đề cấu hình mbedTLS cụ thể cho người dùng
  2. Cho biết đường dẫn của tệp aes_alt.h bằng cách sử dụng biến MBEDTLS_CPPFLAGS

Mô-đun SHA256

OpenThread Security áp dụng các thuật toán băm HMAC và SHA256 để tính toán giá trị băm cho việc quản lý khoá mạng và tạo PSKc theo thông số kỹ thuật của Thread.

Cách sử dụng phương thức triển khai mô-đun SHA256 cơ bản thay thế:

  1. Xác định macro MBEDTLS_SHA256_ALT trong tệp tiêu đề cấu hình mbedTLS cụ thể cho người dùng
  2. Cho biết đường dẫn của tệp sha256_alt.h bằng cách sử dụng biến MBEDTLS_CPPFLAGS

Hàm ECC

Vì mbedTLS hiện chỉ hỗ trợ tăng tốc phần cứng cho các phần của hàm ECC, thay vì toàn bộ mô-đun, nên bạn có thể chọn triển khai một số hàm được xác định trong path-to-mbedtls/library/ecp.c để tăng tốc độ nhân điểm ECC.

Curve secp256r1 được dùng trong thuật toán trao đổi khoá của bản nháp ECJPAKE. Do đó, tính năng tăng tốc phần cứng ít nhất sẽ hỗ trợ hoạt động cong đường cong ngắn hơn của secp256r1. Hãy xem bài viết Tăng tốc phần cứng SyLabs CRYPTO cho mbedTLS để xem ví dụ.