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

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

ดูแหล่งที่มาใน GitHub

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

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

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 สํารอง ให้ทําดังนี้

  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 ดังนั้น การเร่งความเร็วฮาร์ดแวร์ควรอย่างน้อยเพื่อรองรับ secp256r1 ระดับสั้นๆ ของ Weierstrass Curve ดูตัวอย่าง SiLabs CRYPTO Hardware Acceleration สําหรับ mbedTLS