ใช้งานฟีเจอร์ขั้นสูง

ดูแหล่งข้อมูลใน GitHub

ฟีเจอร์ขั้นสูงบางอย่างจะมีหรือไม่ก็ได้ โดยขึ้นอยู่กับว่าแพลตฟอร์มฮาร์ดแวร์เป้าหมายรองรับฟีเจอร์เหล่านั้นหรือไม่

เฟรมอัตโนมัติรอดําเนินการ

IEEE 802.15.4 กําหนดวิธีการส่งข้อมูล 2 ประเภทระหว่างผู้เผยแพร่โฆษณาระดับบนสุดและรายย่อย ได้แก่ การส่งโดยตรงและการส่งโดยอ้อม แบบหลังออกแบบมาเป็นพิเศษสําหรับอุปกรณ์กินนอน (SED) ที่นอนหลับเป็นส่วนใหญ่ ซึ่งส่วนใหญ่แล้วจะเป็นการตื่นเพื่อทําแบบสํารวจสําหรับผู้ปกครองเพื่อรับข้อมูลที่อยู่ในคิว

  • การส่งโดยตรง - ผู้ปกครองจะส่งเฟรมข้อมูลไปยังอุปกรณ์ปลายทางโดยตรง ส่งสัญญาณโดยตรง

  • การส่งโดยอ้อม - ผู้ปกครองจะคงข้อมูลไว้ชั่วคราวจนกว่าอุปกรณ์ปลายทางจะขอ ส่งสัญญาณโดยตรง

ในกรณีที่เป็นโดยอ้อม อุปกรณ์ปลายทางของเด็กต้องสํารวจเครือข่ายระดับบนสุดก่อนเพื่อตรวจดูว่ามีข้อมูลที่ใช้ได้หรือไม่ โดยบุตรหลานจะส่งคําขอข้อมูลซึ่งผู้ปกครองรับทราบ ระดับบนสุดจะเป็นตัวกําหนดข้อมูลสําหรับอุปกรณ์ของบุตรหลาน หากใช่ จะมีการส่งแพ็กเกตข้อมูลไปยังอุปกรณ์ของบุตรหลาน ซึ่งจะตอบรับการตอบรับข้อมูล

หากวิทยุรองรับการตั้งค่าบิตรอดําเนินการตรวจจับเฟรมแบบไดนามิกในข้อความขาออกไปยัง SED ไดรเวอร์ต้องใช้ Match Address ที่ตรงกันกับ API เพื่อเปิดใช้ความสามารถนี้ OpenThread ใช้ API นี้เพื่อบอกวิทยุว่า SED ใดต้องการตั้งค่าบิตรอดําเนินการเฟรม

หากวิทยุไม่รองรับการตั้งค่าบิตของเฟรมที่รอดําเนินการแบบไดนามิก วิทยุอาจสลัก 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 ไม่ได้เปิดใช้มาโครเหล่านั้น ดังนั้นอัลกอริทึมการเข้ารหัสสมมาตร อัลกอริทึมของแฮช และฟังก์ชัน 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 Basic

หากต้องการติดตั้งใช้งานโมดูล AES ทางเลือก ให้ทําดังนี้

  1. กําหนดมาโคร MBEDTLS_AES_ALT ในไฟล์ส่วนหัวการกําหนดค่า mbedTLS ของผู้ใช้
  2. ระบุเส้นทางของไฟล์ aes_alt.h โดยใช้ตัวแปร MBEDTLS_CPPFLAGS

โมดูล SHA256

OpenThread Security ใช้อัลกอริทึมการแฮช HMAC และ SHA256 เพื่อคํานวณค่าแฮชสําหรับการจัดการคีย์เครือข่ายและการสร้าง PSKc ตามข้อกําหนดของชุดข้อความ

หากต้องการใช้โมดูลพื้นฐาน SHA256 พื้นฐานอื่นให้ทําดังนี้

  1. กําหนดมาโคร MBEDTLS_SHA256_ALT ในไฟล์ส่วนหัวการกําหนดค่า mbedTLS ของผู้ใช้
  2. ระบุเส้นทางของไฟล์ sha256_alt.h โดยใช้ตัวแปร MBEDTLS_CPPFLAGS

ฟังก์ชัน ECC

เนื่องจากตอนนี้ mbedTLS รองรับเฉพาะการเร่งฮาร์ดแวร์สําหรับส่วนต่างๆ ของฟังก์ชัน ECC เท่านั้น คุณจึงเลือกที่จะใช้ฟังก์ชันบางอย่างที่กําหนดไว้ใน path-to-mbedtls/library/ecp.c เพื่อเร่งการคูณ ECC ได้

ใช้ Curve secp256r1 ในอัลกอริทึมการแลกเปลี่ยนคีย์ของฉบับร่าง ECJPAKE ดังนั้น การเร่งฮาร์ดแวร์อย่างน้อยควรรองรับการใช้งาน Wepstrass สั้นๆ secp256r1 ดูตัวอย่างได้ที่ SiLabs CRYPTO Hardware Acceleration สําหรับ mbedTLS