ฟีเจอร์ขั้นสูงบางอย่างเป็นตัวเลือกที่ไม่บังคับ โดยขึ้นอยู่กับว่าฟีเจอร์เหล่านั้นมีคุณสมบัติต่อไปนี้หรือไม่ ที่รองรับในแพลตฟอร์มฮาร์ดแวร์เป้าหมาย
รอดำเนินการจัดเฟรมอัตโนมัติ
IEEE 802.15.4 กำหนดวิธีส่งข้อมูล 2 ประเภทระหว่างเครือข่ายระดับบนสุดและ การแพร่เชื้อโดยตรงและการส่งโดยอ้อม ฟีเจอร์หลังออกแบบมาเพื่อ ใช้สำหรับอุปกรณ์ที่ง่วงนอน (SED) เป็นหลักซึ่งนอนหลับเป็นส่วนใหญ่ ปลุกระบบเป็นระยะๆ เพื่อสำรวจข้อมูลจากระดับบนสุดสำหรับข้อมูลที่อยู่ในคิว
การส่งข้อมูลโดยตรง — ผู้ปกครองส่งเฟรมข้อมูลไปยังอุปกรณ์ปลายทางโดยตรง
การส่งข้อมูลโดยอ้อม — ผู้ปกครองจะเก็บรักษาข้อมูลไว้จนกว่าอุปกรณ์ปลายทางที่ต้องการจะร้องขอ
ส่วนในกรณีทางอ้อม อุปกรณ์ย่อยจะต้องสร้างแบบสำรวจหลักก่อนเพื่อพิจารณา มีข้อมูลพร้อมใช้งานหรือไม่ โดยบุตรหลานจะส่งข้อมูล ซึ่งผู้ปกครองรับทราบ จากนั้นผู้ปกครองจะกำหนดว่า มีข้อมูลสำหรับอุปกรณ์ของบุตรหลาน หากใช่ จะส่งแพ็กเก็ตข้อมูลไปยังหน่วยย่อย ซึ่งยอมรับการรับข้อมูล
หากวิทยุสนับสนุนการตั้งค่าแบบไดนามิกสำหรับบิตเฟรมที่ค้างอยู่เป็นบิตขาออก กิตติกรรมประกาศต่อ SED ผู้ขับขี่จะต้องนำ การจับคู่ที่อยู่ต้นทาง API เพื่อเปิดใช้ความสามารถนี้ OpenThread ใช้ API นี้เพื่อบอกวิทยุว่า SED เพื่อตั้งค่าบิตที่รอการกำหนดเฟรม
หากวิทยุไม่สนับสนุนการตั้งค่าบิต Frame Pending แบบไดนามิก
วิทยุอาจดึง API การจับคู่ที่อยู่ต้นทางออกเพื่อให้แสดงผล
OT_ERROR_NOT_IMPLEMENTED
สแกน/ตรวจจับพลังงานด้วยวิทยุ
ฟีเจอร์การสแกน/ตรวจจับพลังงานต้องใช้ชิปวิทยุเพื่อสุ่มตัวอย่างพลังงาน นำเสนอในช่องทางที่เลือก และส่งค่าพลังงานที่ตรวจพบไปยัง เลเยอร์ด้านบน
หากไม่มีการติดตั้งฟีเจอร์นี้ เลเยอร์ MAC ของ IEEE 802.15.4 ส่ง/รับแพ็กเก็ตคำขอ/การตอบสนองของบีคอนเพื่อประเมินสถานการณ์ มูลค่าพลังงานในช่อง
หากชิปวิทยุรองรับการสแกน/ตรวจจับพลังงาน โปรดตรวจสอบว่าได้ปิดใช้ซอฟต์แวร์แล้ว
ตรรกะการสแกนพลังงานโดยการตั้งค่ามาโคร
OPENTHREAD_CONFIG_ENABLE_SOFTWARE_ENERGY_SCAN = 0
การเร่งฮาร์ดแวร์สำหรับ mbedTLS
mbedTLS จะกำหนดมาโครหลายรายการในไฟล์ส่วนหัวของการกำหนดค่าหลัก
mbedtls-config.h
เพื่ออนุญาตให้ผู้ใช้เปิดใช้ AES, SHA1, SHA2 และ
โมดูลอื่นๆ รวมถึงฟังก์ชันแต่ละรายการสำหรับกราฟวงรี
วิทยาการเข้ารหัส (ECC) ผ่านโมดูล GF(p) โปรดดู
การเร่งฮาร์ดแวร์ mbedTLS
เพื่อดูข้อมูลเพิ่มเติม
OpenThread ไม่ได้เปิดใช้มาโครเหล่านั้น ดังนั้น Crypto แบบสมมาตร อัลกอริทึม อัลกอริทึมแฮช และฟังก์ชัน ECC ต่างก็ใช้ซอฟต์แวร์ การติดตั้งใช้งานโดยค่าเริ่มต้น การติดตั้งใช้งานเหล่านี้ต้องใช้หน่วยความจำที่เพียงพอ และทรัพยากรด้านการประมวลผล เพื่อประสิทธิภาพสูงสุดและผู้ใช้ที่ดีขึ้น เราขอแนะนำให้เปิดใช้การเร่งฮาร์ดแวร์แทนซอฟต์แวร์ ดำเนินการข้างต้น
หากต้องการเปิดใช้การเร่งฮาร์ดแวร์ภายใน OpenThread ให้ใช้ mbedTLS ต่อไปนี้
ควรเพิ่มไฟล์ส่วนหัวของการกำหนดค่าลงในคอมไพล์ ot-config
ในไฟล์ CMake ของแพลตฟอร์มดังนี้
- การกำหนดค่าหลักซึ่งกำหนดมาโครที่จำเป็นทั้งหมดที่ใช้ใน OpenThread
/openthread/third-party/mbedtls/mbedtls-config.h
- การกำหนดค่าเฉพาะผู้ใช้ ซึ่งกำหนดการปรับใช้ทางเลือก
โมดูลและฟังก์ชัน:
src/platform-name-mbedtls-config.h
ตัวอย่างจาก nrf52811.cmake
:
target_compile_definitions(ot-config INTERFACE "MBEDTLS_USER_CONFIG_FILE=\"nrf52811-mbedtls-config.h\"" )
มาโครที่มีการแสดงความคิดเห็นใน mbedtls-config.h
เป็นการดำเนินการที่ไม่บังคับและเปิดใช้งานได้ใน
ไฟล์ส่วนหัวของการกำหนดค่าเฉพาะผู้ใช้สำหรับการเร่งฮาร์ดแวร์
สำหรับตัวอย่างการกำหนดค่าทั้งหมดเฉพาะผู้ใช้ โปรดดู
mbedtls_config_autogen.h
ไฟล์ใน ot-efr32
โมดูล AES
OpenThread Security ใช้ AES CCM (ตัวนับด้วย CBC-MAC) กับคริปโต เข้ารหัส/ถอดรหัสข้อความ IEEE 802.15.4 หรือ MLE และตรวจสอบความถูกต้องของข้อความ รหัสการผสานรวม การเร่งฮาร์ดแวร์ควรรองรับ AES ECB พื้นฐานเป็นอย่างน้อย โหมด (หนังสือ Codebook อิเล็กทรอนิกส์) สำหรับการเรียกฟังก์ชันพื้นฐาน AES CCM
วิธีใช้โมดูล AES ทางเลือก
- กำหนดมาโคร
MBEDTLS_AES_ALT
ใน mbedTLS เฉพาะผู้ใช้ ไฟล์ส่วนหัวของการกำหนดค่า - ระบุเส้นทางของไฟล์
aes_alt.h
โดยใช้MBEDTLS_CPPFLAGS
ตัวแปร
โมดูล SHA256
OpenThread Security ใช้อัลกอริทึมแฮช HMAC และ SHA256 เพื่อคำนวณ ค่าแฮชสำหรับการจัดการคีย์เครือข่ายและการสร้าง PSKc ตามเทรด ข้อมูลจำเพาะ
หากต้องการใช้ทางเลือกในการใช้งานโมดูล SHA256 พื้นฐานอื่นๆ ให้ทำดังนี้
- กำหนดมาโคร
MBEDTLS_SHA256_ALT
ใน mbedTLS เฉพาะผู้ใช้ ไฟล์ส่วนหัวของการกำหนดค่า - ระบุเส้นทางของไฟล์
sha256_alt.h
โดยใช้MBEDTLS_CPPFLAGS
ตัวแปร
ฟังก์ชัน ECC
เนื่องจากปัจจุบัน mbedTLS รองรับเฉพาะการเร่งฮาร์ดแวร์สำหรับบางส่วนของ ECC เท่านั้น
แทนโมดูลทั้งหมด คุณสามารถเลือกใช้
ฟังก์ชันที่กำหนดไว้ใน
path-to-mbedtls/library/ecp.c
เพื่อเร่ง ECC
คูณจุด
มีการใช้ Curve secp256r1 ในอัลกอริทึมการแลกเปลี่ยนคีย์ของ ฉบับร่าง ECJPAKE ดังนั้น การเร่งฮาร์ดแวร์ควรรองรับ secp256r1 ของ Weierstrass ที่สั้นเป็นอย่างน้อย การดำเนินการกับเส้นโค้ง โปรดดูการเร่งฮาร์ดแวร์ SiLabs CRYPTO สำหรับ mbedTLS