Một số tính năng nâng cao là không bắt buộc, tùy thuộc vào việc các tính năng đó có được hỗ trợ trên nền tảng phần cứng mục tiêu hay không.
Khung tự động đang chờ xử lý
IEEE 802.15.4 xác định hai loại phương thức truyền dữ liệu giữa cha mẹ và con: truyền trực tiếp và truyền gián tiếp. Tính năng sau này được thiết kế chủ yếu dành cho các thiết bị kết thúc buồn ngủ (SED) ngủ hầu hết thời gian, định kỳ thức dậy để thăm dò ý kiến của cha mẹ đối với dữ liệu được đưa vào hàng đợi.
Truyền trực tiếp — cha mẹ gửi trực tiếp khung dữ liệu đến thiết bị cuối
Phương thức truyền gián tiếp – cha mẹ lưu giữ dữ liệu cho đến khi thiết bị kết thúc dự định của ứng dụng yêu cầu
Trong trường hợp gián tiếp, trước tiên, thiết bị kết thúc trẻ em phải thăm dò ý kiến của cha mẹ để xác định xem có dữ liệu nào về thiết bị đó hay không. Để thực hiện việc này, trẻ sẽ gửi một yêu cầu dữ liệu mà cha mẹ xác nhận. Sau đó, mạng gốc sẽ xác định xem có dữ liệu nào cho thiết bị con hay không; nếu có, thì tính năng này sẽ gửi một gói dữ liệu đến thiết bị con. Công cụ này chấp nhận việc nhận dữ liệu.
Nếu radio hỗ trợ tự động đặt bit Đang chờ xử lý khung trong các thông báo xác nhận gửi đi tới SED, thì các trình điều khiển phải triển khai khớp địa chỉ nguồn để bật chức năng này. Openthread sử dụng API này để cho radio biết SED cần đặt Khung đang chờ xử lý của khung.
Nếu radio không hỗ trợ việc thiết lập linh động Khung đang chờ xử lý, thì
hệ thống radio có thể trì hoãn 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 phát thanh
Tính năng Quét/Phát hiện năng lượng yêu cầu chip radio lấy mẫu năng lượng hiển thị 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 radio hỗ trợ tính năng Quét năng lượng/Phát hiện năng lượng, hãy nhớ tắt logic quét năng lượng 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 biện pháp 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ẻ cho mật mã đường cong elip (ECC) qua mô-đun GF(p). Hãy xem
tính năng tăng tốc phần cứng của TLS để biết thêm thông tin.
OpenThread không bật các macro đó, do đó, các thuật toán mã hóa đối xứng, hàm thuật toán băm và hàm ECC đều sử dụng cách triển khai phần mềm theo mặc định. Những phương pháp triển khai này yêu cầu bộ nhớ đáng kể và các tài nguyên điện toán. Để 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, bạn phải thêm các tệp tiêu đề cấu hình mbedTLS sau đây vào định nghĩa 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 dùng trong OpenThread:
/openthread/third-party/mbedtls/mbedtls-config.h
- Cấu hình dành riêng cho người dùng, giúp xác định 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 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.
Để xem ví dụ đầy đủ về một cấu hình dành riêng cho người dùng, hãy xem tệp
mbedtls_config_autogen.h
trong ot-efr32
.
Mô-đun AES
OpenThread Security áp dụng mật mã AES CCM (Bộ đếm với CBC- MAC) để mã hóa/giải mã 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 phần cứng ít nhất phải hỗ trợ chế độ AES ECB (Sách mã đ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ế:
- Xác định macro
MBEDTLS_AES_ALT
trong tệp tiêu đề cấu hình mbedTLS riêng cho người dùng - Cho biết đường dẫn của tệp
aes_alt.h
bằng cách sử dụng biếnMBEDTLS_CPPFLAGS
Mô-đun SHA256
OpenThread Security áp dụng thuật toán băm HMAC và SHA256 để tính toán giá trị băm cho việc quản lý khóa mạng và tạo PSKc theo Đặc tả chuỗi.
Cách sử dụng phương thức triển khai mô-đun SHA256 cơ bản thay thế:
- Xác định macro
MBEDTLS_SHA256_ALT
trong tệp tiêu đề cấu hình mbedTLS riêng cho người dùng - Cho biết đường dẫn của tệp
sha256_alt.h
bằng cách sử dụng biếnMBEDTLS_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 chức năng 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
tính năng nhân ECC.
Đường cong secp256r1 được dùng trong thuật toán trao đổi khóa của bản nháp ECJPAKE. Do đó, tính năng tăng tốc phần cứng ít nhất phải hỗ trợ hoạt động đường cong ngắn của secp256r1. Xem SiLabs CRYPTO hardware Acceleration dành cho mbedTLS để xem ví dụ.