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

1. ข้อมูลเบื้องต้น

5abd22afa2f2ee9a.png

เส้นด้าย, OpenThread, OTNS และ Silk คืออะไร

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

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

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

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

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

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

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

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

ฮาร์ดแวร์:

  • 6 โครงการ Nordic เซมิคอนดักเตอร์ nRF52840 dev board
  • สายเชื่อม USB กับไมโคร USB 6 เส้นสําหรับต่อกระดาน
  • ฮับ USB

ซอฟต์แวร์:

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

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

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

ช่อง 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 ของ Build a Thread network Codelab เพื่อใช้ nrfjprog หลังจากนั้น ให้เชื่อมต่อกระดานทั้งหมดผ่านพอร์ต USB nRF เข้ากับเครื่องโฮสต์ สาย USB แบบไมโคร USB ชุดเดียวกันสามารถถอดออกจากพอร์ต J-Link และเชื่อมต่อกับพอร์ต USB nRF ของบอร์ด 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. การเรียกใช้การทดสอบเคสผ้าไหมที่มีการรองรับ 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 ในอุปกรณ์ Thread ของจริงสําเร็จแล้ว และแสดงภาพโดยใช้ OTNS

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

ขั้นตอนต่อไป

ลองเรียกใช้กรอบการทดสอบ OpenThread อื่นๆ ที่มากับแพ็กเกจผ้าไหม

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

โปรดดู openthread.io และ Silk สําหรับทรัพยากร OpenThread ที่หลากหลาย

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