1. บทนำ
ชุดข้อความ, OpenThread, OTNS และ Silk คืออะไร
เทรดเป็นโปรโตคอลเครือข่ายที่ทํางานร่วมกันแบบไร้สายแบบ IP ที่ใช้พลังงานต่ํา ซึ่งช่วยให้ติดต่อสื่อสารระหว่างอุปกรณ์กับอุปกรณ์ได้อย่างปลอดภัยกับระบบคลาวด์ เครือข่ายเทรดอาจปรับตัวตามการเปลี่ยนแปลงโทโพโลยีเพื่อหลีกเลี่ยงจุดที่ไม่สําเร็จจุดเดียว
OpenThread ที่เผยแพร่โดย Google เป็นการใช้งาน Thread แบบโอเพนซอร์ส ถึงแม้ว่าโค้ดและรอยเท้าของหน่วยความจําจะมีขนาดเล็ก แต่ OpenThread สามารถรองรับฟีเจอร์ทั้งหมดที่กําหนดไว้ในข้อกําหนดชุดข้อความ
คุณใช้เครื่องจําลองเครือข่าย OpenThread (OTNS) เพื่อจําลองเครือข่ายเทรดได้โดยการเรียกใช้โหนด OpenThread จําลองในแพลตฟอร์ม Posix OTNS มีอินเทอร์เฟซเว็บที่ใช้งานง่าย (OTNS-Web) สําหรับการแสดงภาพและการทํางานของเครือข่ายเทรดจําลอง
Silk เป็นแพลตฟอร์มการทดสอบอัตโนมัติเต็มรูปแบบสําหรับตรวจสอบฟังก์ชัน OpenThread, ฟีเจอร์ และประสิทธิภาพของระบบด้วยอุปกรณ์จริง
สิ่งที่คุณจะได้เรียนรู้
- เฟรมเวิร์กการยืนยันฟังก์ชันการทํางานของ OpenThread': ไหม
- สร้าง 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 พื้นฐานก่อนหน้า
- ชุดข้อความ Primer คุณจะต้องทราบแนวคิดพื้นฐานของชุดข้อความเพื่อทําความเข้าใจสิ่งที่สอนใน Codelab นี้
- สร้างเครือข่ายเทรดด้วยกระดาน nRF52840 และ OpenThread Codelab นี้ถือว่าคุณได้สร้างเครือข่ายเทรดเรียบร้อยแล้ว
- จําลองเครือข่ายเทรดโดยใช้ OTNS Codelab นี้จะถือว่าคุณเรียกใช้เครื่องมือ OTNS เรียบร้อยแล้ว
การตรวจสอบข้อกําหนดเบื้องต้นของแพ็กเกจ
ก่อนดําเนินการตามข้อกําหนดทั้งหมด
- เรียกใช้
which otns
เพื่อตรวจสอบว่าไฟล์ปฏิบัติการของotns
นั้นค้นหาได้ใน$PATH
หรือไม่ - เรียกใช้
which wpantund
เพื่อตรวจสอบว่าwpantund
พร้อมใช้งาน - ตรวจสอบว่าแพ็กเกจเครื่องมือ 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 ที่ไม่มีข้อมูล
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
มุมซ้ายบนจะแสดงสถิติการแสดงภาพ เวอร์ชัน OT และชื่อการทดสอบ มุมซ้ายล่างมีตัวควบคุมของหน้าต่างบันทึกที่แสดงทางด้านขวา ในช่วงแรก ระบบจะเพิ่มโหนดแต่ไม่มีเครือข่ายเกิดขึ้น เมื่อการทดสอบดําเนินไป โหมดและบทบาทของแต่ละโหนดจะเปลี่ยนแปลงไปตามลิงก์
7. ขอแสดงความยินดี
ขอแสดงความยินดี คุณได้ทําการทดสอบ Silk บนอุปกรณ์ชุดข้อความจริงเรียบร้อยแล้ว และแสดงผลโดยใช้ OTNS
คุณทําการทดสอบ Silk โดยใช้บอร์ดการพัฒนาซึ่งแฟลชด้วยเฟิร์มแวร์ที่รองรับ OTNS คณะกรรมการจะรายงานสถานะของผู้ใช้ไปที่เซิร์ฟเวอร์ Silk ที่คอยตรวจสอบและรวบรวมข้อมูลทั้งหมด รวมถึงส่งไปยังบริการ OTNS และข้อมูลการทดสอบอื่นๆ OTNS ทํางานในโหมดจริงแสดงเครือข่ายเทรดบนอินเทอร์เฟซเว็บ
ขั้นตอนต่อไป
ลองเรียกใช้กรอบการทดสอบ OpenThread อื่นๆ ที่รวมอยู่ในแพ็กเกจ Silk
อ่านเพิ่มเติม
โปรดดูที่ openthread.io และ Silk เพื่อดูทรัพยากร OpenThread นานาชนิด