การทดสอบเครือข่ายชุดข้อความด้วยภาพ

1. บทนำ

5abd22afa2f2ee9a.png

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

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

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

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

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

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

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

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

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

ฮาร์ดแวร์:

  • บอร์ด Nordic Semiconductor nRF52840 6 ตัว
  • 6 สายเคเบิล USB กับไมโคร USB เพื่อเชื่อมต่อบอร์ด
  • ฮับ 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 พร้อมใช้งานแล้ว
  4. ตรวจสอบว่าได้สร้างไบนารี OpenThread ได้ โดยให้เรียกใช้ make -f examples/Makefile-nrf52840 ภายใต้โฟลเดอร์ openthread

หมายเหตุ: โปรดดูคู่มือที่ลิงก์เพื่อตั้งค่า สิ่งที่ต้องมีก่อนข้อที่ 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 และเชื่อมต่อกับพอร์ต 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. ดําเนินการทดสอบผ้าไหมกับทีมสนับสนุน OTNS

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

ไฟล์ silk_run_test.py ที่ silk/unit_tests มีวิธีเริ่มต้น ผ้าไหมจะให้การสนับสนุน 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

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

แล้วต้องทำอะไรต่อไปล่ะ

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

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

โปรดดูแหล่งข้อมูล OpenThread.io และ Silk สําหรับทรัพยากรต่างๆ ของ OpenThread

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