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

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

1. บทนำ

5abd22afa2f2ee9a.png

ชุดข้อความ, OpenThread, OTNS และ Silk คืออะไร

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

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

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

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

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

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

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

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

ฮาร์ดแวร์:

  • 6 บอร์ดเกม Nordic Semiconductor nRF52840 dev
  • สายเชื่อม USB กับไมโคร USB 6 เส้นเพื่อเชื่อมต่อบอร์ด
  • ฮับ USB

ซอฟต์แวร์:

  • Linux x86_64
  • Git
  • เริ่มต้น 1.11+
  • เว็บเบราว์เซอร์ OTNS-Web ใช้เว็บเบราว์เซอร์ในการแสดงการจําลอง

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

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

Codelab พื้นฐานก่อนหน้า

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

ก่อนดําเนินการตามข้อกําหนดทั้งหมด

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

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

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

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

$ 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 และแปลงเป็นรูปแบบเลขฐานสิบหก

$ 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 กับไมโคร USB ชุดเดียวกันจะยกเลิกการเชื่อมต่อจากพอร์ต J-Link และเชื่อมต่อกับพอร์ต nRF USB ของบอร์ด nRF52840 dev เราจึงดําเนินการทดสอบได้เพียง 6 สายเท่านั้น เพื่อหลีกเลี่ยงความยุ่งยาก ให้ใช้สาย 12 สายและเชื่อมต่อกับพอร์ตทั้ง 2 พอร์ต

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

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

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

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

รูปภาพ 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

ตัวอย่างเช่น การทดสอบ 1 รายการสามารถเรียกใช้การทดสอบชื่อ 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.io และ Silk เพื่อดูทรัพยากร OpenThread นานาชนิด

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