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