การทดสอบเครือข่ายเทรดด้วยการแสดงภาพ

1. บทนำ

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS และ Silk คืออะไร

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

OpenThread ที่ Google เปิดตัวเป็นการใช้งาน Thread แบบโอเพนซอร์ส แม้ว่าโค้ดและหน่วยความจำของ OpenThread จะเล็ก แต่ OpenThread ก็รองรับฟีเจอร์ทั้งหมดที่ระบุไว้ในข้อกำหนดของเทรด

OpenThread Network Simulator (OTNS) สามารถใช้เพื่อจำลองเครือข่าย Thread โดยการเรียกใช้โหนด OpenThread ที่จำลองบนแพลตฟอร์ม Posix OTNS มีเว็บอินเทอร์เฟซ (OTNS-Web) ที่ใช้งานง่ายสำหรับการแสดงและใช้งานเครือข่ายเทรดจำลอง

Silk เป็นแพลตฟอร์มทดสอบแบบอัตโนมัติโดยสมบูรณ์สําหรับการตรวจสอบฟังก์ชัน ฟีเจอร์ และประสิทธิภาพของระบบ OpenThread กับอุปกรณ์จริง

สิ่งที่คุณจะได้เรียนรู้

  • เฟรมเวิร์กการยืนยันฟังก์ชันการทำงานของ OpenThread: Silk
  • สร้าง OpenThread สำหรับอุปกรณ์จริงที่เปิดใช้ฟีเจอร์ OTNS
  • ใช้อินเทอร์เฟซ OTNS-Web เพื่อตรวจสอบสถานะของเครือข่ายเทรดที่เกิดจากการเรียกใช้ Use Case ไหม

Codelab นี้มุ่งเน้นไปที่การใช้ Silk กับ OTNS แต่ไม่ครอบคลุมฟีเจอร์อื่นๆ ของ Silk และ OTNS

สิ่งที่ต้องมี

ฮาร์ดแวร์:

  • Nordic เซมิคอนดักเตอร์ nRF52840 Dev 6 แผง
  • สายเชื่อม USB กับไมโคร USB 6 สายสำหรับเชื่อมต่อบอร์ด
  • ฮับ USB

ซอฟต์แวร์:

สิ่งที่ต้องมีก่อน

2. ข้อกำหนดเบื้องต้น

ทำ Codelab พื้นฐานก่อนหน้าให้เสร็จสมบูรณ์

การตรวจสอบข้อกำหนดเบื้องต้นของแพ็กเกจ

ตรวจสอบให้มั่นใจว่าเป็นไปตามข้อกำหนดเบื้องต้นทั้งหมด

  1. เรียกใช้ which otns เพื่อตรวจสอบว่าไฟล์ปฏิบัติการ otns สามารถค้นหาได้ใน $PATH หรือไม่
  2. เรียกใช้ which wpantund เพื่อตรวจสอบว่า wpantund พร้อมใช้งาน
  3. ตรวจสอบว่าแพ็กเกจเครื่องมือ ARM GNU, J-Link และ nrfjprog พร้อมใช้งาน

หมายเหตุ: โปรดดูคำแนะนำในการตั้งค่าในเอกสารประกอบที่ลิงก์ ข้อกำหนดเบื้องต้นข้อที่ 1 มาจากการจำลองเครือข่ายเทรดโดยใช้ OTNS และคำถามอื่นๆ มาจากสร้างเครือข่ายเทรดด้วยบอร์ด nRF52840 และ OpenThread

3. การตั้งค่าผ้าไหม

หากต้องการโคลน Silk และตั้งค่าสภาพแวดล้อม ให้เรียกใช้คำสั่งต่อไปนี้ในไดเรกทอรีต้นทาง

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

กำหนดไฟล์การกำหนดค่าฮาร์ดแวร์

หากต้องการอนุญาตให้ Silk รวบรวมทรัพยากรฮาร์ดแวร์ทดสอบที่มีอยู่ซึ่งเชื่อมต่อกับเครื่อง ให้กำหนดไฟล์ hwconfig.ini ในรูปแบบต่อไปนี้

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

เครื่องมือชื่อ usbinfo ได้รับการติดตั้งเป็นส่วนหนึ่งของ Silk ที่ใช้ค้นหาหมายเลขซีเรียลของอินเทอร์เฟซและหมายเลขอินเทอร์เฟซ USB ได้ DutSerial คือหมายเลข SN ที่พิมพ์บนชิปหรือแสดงโดย usbinfo สำหรับผลิตภัณฑ์ J-Link

ช่อง LayoutCenter และ LayoutRadius ในส่วน [DEFAULT] จะกำหนดรูปร่างของเลย์เอาต์เมื่อแสดงภาพอุปกรณ์ใน UI บนเว็บ การตั้งค่าพารามิเตอร์ตามค่าที่แสดงที่นี่อาจเป็นจุดเริ่มต้นที่ดี

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

4. คอมไพล์ OpenThread ที่เปิดใช้ OTNS

ภาพสิ่งปลูกสร้างและการกะพริบ

โดยค่าเริ่มต้น อุปกรณ์ OpenThread จะไม่ส่งข้อความที่เกี่ยวข้องกับ OTNS หากต้องการให้บอร์ดนักพัฒนาซอฟต์แวร์ปล่อยข้อความสถานะเพื่อบันทึกอินเทอร์เฟซที่จำเป็นสำหรับการแสดงข้อมูลผ่านภาพ OTNS ให้เรียกใช้คำสั่งต่อไปนี้ใต้ไดเรกทอรีต้นทางของ OpenThread เพื่อสร้างอิมเมจ FTD และแปลงเป็นรูปแบบเลขฐาน 16

$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive
$ cd ot-nrf528xx
$ ./script/bootstrap
$ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON
$ cd ./build/bin
$ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex

หากต้องการให้บอร์ดกะพริบ ให้ทำตามวิธีการในขั้นตอนที่ 4 ของ Codelab การสร้างเครือข่ายเทรดเพื่อใช้ nrfjprog หลังจากนั้น ให้เชื่อมต่อบอร์ดทั้งหมดเข้ากับเครื่องโฮสต์ผ่านพอร์ต nRF USB สายเชื่อม USB กับ Micro-USB ชุดเดียวกันนั้นสามารถถอดสายออกจากพอร์ต J-Link และเชื่อมต่อกับพอร์ต USB nRF ของบอร์ดการพัฒนา nRF52840 ได้ คุณจึงทำการทดสอบสาย 6 สายนี้ได้ ใช้สาย 12 เส้นแล้วเชื่อมต่อกับทั้ง 2 พอร์ตเพื่อหลีกเลี่ยงความยุ่งยาก

5. การเรียกใช้เซิร์ฟเวอร์ OTNS ด้วยโหมดจริง

การเรียกใช้ OTNS ด้วยพารามิเตอร์เริ่มต้นช่วยให้ผู้ใช้จำลองเครือข่ายเทรดได้ หากต้องการใช้เป็นเครื่องมือแสดงข้อมูลผ่านภาพสำหรับเครือข่ายจริง ให้เรียกใช้ด้วย

otns -raw -real -ot-cli otns-silk-proxy

อาร์กิวเมนต์เหล่านี้จะบอก OTNS ให้คาดหวังข้อความ gRPC และ UDP ที่อธิบายว่าควรแสดงภาพเครือข่ายเทรดอย่างไร แทนที่จะเรียกใช้กระบวนการ ot-cli หลายรายการเพื่อจำลองเครือข่าย เบราว์เซอร์ควรเปิดหน้าการแสดงภาพด้วยผืนผ้าใบที่ว่างเปล่าโดยอัตโนมัติ

4dd5b41bf7e71334.png

6. การเรียกใช้กรอบการทดสอบ Silk ที่มีการรองรับ OTNS

Silk เป็นแพลตฟอร์มทดสอบแบบอัตโนมัติโดยสมบูรณ์สำหรับการตรวจสอบฟังก์ชัน ฟีเจอร์ และประสิทธิภาพของระบบของ OpenThread กับอุปกรณ์จริง วิธีการในโปรเจ็กต์ README จะครอบคลุมวิธีใช้

ไฟล์ silk_run_test.py ที่ silk/unit_tests จะทำให้คุณมีข้อมูลเริ่มต้น Silk จะรองรับ OTNS เมื่อเรียกใช้กรอบการทดสอบ เนื่องจากบริการโหมดจริง OTNS ทำงานอยู่ในเครื่องอยู่แล้ว เราจึงเพียงแค่ต้องแก้ไขไฟล์ silk_run_test.py ด้วยตำแหน่งที่ต้องการสำหรับไฟล์บันทึกเอาต์พุต ป้อนสคริปต์ทดสอบ และไฟล์ hwconfig.ini อาร์กิวเมนต์ -s localhost จะบอก Silk ให้ส่งข้อความ OTNS ไปยัง localhost

เช่น ผู้ใช้อาจเรียกใช้การทดสอบชื่อ ot_test_form_network.py โดยใช้การแก้ไขต่อไปนี้ในไฟล์ silk_run_test.py /opt/openthread_test/ คือเส้นทางเริ่มต้นที่ Silk ใช้สำหรับเอาต์พุตบันทึกและไฟล์การกำหนดค่า แต่คุณจะใช้เส้นทางใดก็ได้

silk_run_test.py

import datetime
import os

from silk.tests import silk_run

RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
                  datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'

os.chdir('~/src/silk/silk/tests/')

timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')

run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'

argv = [
    'tests/silk_run.py',
    '-v2',
    '-c', CONFIG_PATH + 'hwconfig.ini',
    '-d', run_log_path,
    '-s', 'localhost',
    'ot_test_form_network.py'
]

silk_run.SilkRunner(argv=argv)

การแสดงภาพโทโพโลยีของเครือข่ายที่สร้างจะแสดงใน UI ของเว็บ OTNS

ee443b66e0a6620b.png

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

5c38e2c72519e620.png

7. ขอแสดงความยินดี

ยินดีด้วย คุณทำการทดสอบ Silk บนอุปกรณ์เทรดจริงสำเร็จแล้ว และแสดงภาพโดยใช้ OTNS

คุณได้ทำการทดสอบ Silk โดยใช้บอร์ดการพัฒนาที่กะพริบด้วยเฟิร์มแวร์ที่มีการรองรับ OTNS กระดานจะรายงานสถานะไปยังเซิร์ฟเวอร์ Silk ซึ่งจะตรวจสอบและรวบรวมข้อมูลทั้งหมด จากนั้นส่งไปยังบริการ OTNS พร้อมด้วยข้อมูลการทดสอบอื่นๆ OTNS ที่ทำงานในโหมดจริงแสดงภาพเครือข่ายเทรดบนเว็บอินเทอร์เฟซ

ขั้นตอนถัดไปคือ

ลองเรียกใช้กรอบการทดสอบ OpenThread อื่นๆ ที่รวมอยู่ในแพ็กเกจ Silk

อ่านเพิ่มเติม

ดูแหล่งข้อมูลต่างๆ ของ OpenThread ได้ที่ openthread.io และ Silk

เอกสารอ้างอิง