ฟีเจอร์ขั้นสูงบางรายการจะมีหรือไม่ก็ได้ ขึ้นอยู่กับว่ารองรับในแพลตฟอร์มฮาร์ดแวร์เป้าหมายหรือไม่
เฟรมอัตโนมัติรอดําเนินการ
IEEE 802.15.4 กําหนดวิธีส่งข้อมูล 2 ประเภทระหว่างแม่และเด็ก ได้แก่ การส่งโดยตรงและการส่งโดยอ้อม อันหลังนี้มักมีอุปกรณ์สําหรับคนที่ง่วงนอน (SED) ซึ่งนอนหลับเป็นส่วนใหญ่ ซึ่งตื่นมาเป็นระยะเพื่อส่งแบบสํารวจให้ผู้ปกครองทราบเกี่ยวกับข้อมูลที่อยู่ในคิว
การส่งโดยตรง - ผู้ปกครองส่งเฟรมข้อมูลไปยังอุปกรณ์ปลายทางโดยตรง
การส่งโดยอ้อม - ผู้เผยแพร่โฆษณาหลักจะเก็บรักษาข้อมูลไว้จนกว่าจะส่งคําขอไปยังอุปกรณ์ปลายทางที่ต้องการ
ในกรณีโดยอ้อม อุปกรณ์ของบุตรหลานปลายทางจะต้องตรวจสอบแบบสํารวจระดับบนสุดก่อนเพื่อตรวจดูว่ามีข้อมูลใดพร้อมใช้งานหรือไม่ ซึ่งบุตรหลานจะส่งคําขอข้อมูลได้ซึ่งผู้ปกครองรับทราบ จากนั้นระดับบนสุดจะตรวจสอบว่าอุปกรณ์มีข้อมูลใดหรือไม่สําหรับอุปกรณ์ย่อย ในกรณีนี้ ก็จะส่งแพ็กเก็ตข้อมูลไปยังอุปกรณ์ย่อยซึ่งรับรู้ว่าได้ข้อมูลแล้ว
หากวิทยุรองรับการตั้งค่าบิตของเฟรมที่รอการตอบรับในการตอบรับไปยัง SED ไดรเวอร์จะต้องใช้ API การจับคู่ที่อยู่ต้นทาง เพื่อเปิดใช้ความสามารถนี้ OpenThread ใช้ API นี้เพื่อบอกวิทยุว่าจะใช้ SED เพื่อตั้งค่าบิตที่รอดําเนินการของ Frame อย่างไร
หากวิทยุไม่รองรับการตั้งค่าบิตที่รอดําเนินการของเฟรมแบบไดนามิก วิทยุอาจดึง 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 และโมดูลอื่นๆ รวมถึงฟังก์ชันแต่ละรายการสําหรับการเข้ารหัสลับแบบเส้นโค้งของ Eliptic (ECC) ผ่านโมดูล GF(p) ดูข้อมูลเพิ่มเติมได้ที่การเร่งฮาร์ดแวร์ mbedTLS
OpenThread ไม่ได้เปิดใช้มาโครเหล่านั้น ดังนั้นอัลกอริทึมคริปโตสมมาตร อัลกอริทึมแฮช และฟังก์ชัน 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 แบบพื้นฐาน (หนังสือมอบรหัสอิเล็กทรอนิกส์แบบอิเล็กทรอนิกส์) สําหรับการเรียกฟังก์ชันการทํางานพื้นฐาน 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 Curve ดูตัวอย่าง SiLabs CRYPTO Hardware Acceleration สําหรับ mbedTLS