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

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

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

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

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 ทางเลือก

  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 ที่สั้นเป็นอย่างน้อย การดำเนินการกับเส้นโค้ง โปรดดูการเร่งฮาร์ดแวร์ SiLabs CRYPTO สำหรับ mbedTLS