1. บทนำ
Thread และ OTNS คืออะไร
Thread เป็นโปรโตคอลเครือข่าย Mesh ไร้สายที่ใช้ IP และใช้พลังงานต่ำ ซึ่งช่วยให้การสื่อสารระหว่างอุปกรณ์กับอุปกรณ์และอุปกรณ์กับระบบคลาวด์มีความปลอดภัย เครือข่าย Thread สามารถปรับให้เข้ากับการเปลี่ยนแปลงโทโพโลยีเพื่อหลีกเลี่ยงจุดเดียวที่ทำให้เกิดข้อผิดพลาด
OpenThread ที่ Google เปิดตัวเป็นการใช้งาน Thread แบบโอเพนซอร์ส แม้จะมีขนาดโค้ดและร่องรอยหน่วยความจำขนาดเล็ก แต่ OpenThread ก็รองรับฟีเจอร์ทั้งหมดที่กำหนดไว้ในข้อกำหนดของ Thread
เครื่องจำลองเครือข่าย OpenThread (OTNS) สามารถใช้เพื่อจำลองเครือข่าย Thread ได้โดยการเรียกใช้โหนด OpenThread ที่จำลองบนแพลตฟอร์ม POSIX OTNS มีอินเทอร์เฟซเว็บ (OTNS-Web) ที่ใช้งานง่ายสำหรับการแสดงภาพและการดำเนินการกับเครือข่าย Thread ที่จำลอง นอกจากนี้ยังสามารถจำลองสถานการณ์ที่เขียนสคริปต์ (ด้วย Python) ได้ด้วย
สิ่งที่คุณจะได้เรียนรู้
- ติดตั้ง OTNS และทรัพยากร Dependency
- ดูข้อมูลพื้นฐานของ OTNS-CLI
- วิธีเพิ่ม/ย้าย/ลบโหนด OpenThread ใน OTNS-Web
- ใช้ฟีเจอร์อื่นๆ ที่มีประโยชน์ของ OTNS-Web เพื่อควบคุมการจำลองเครือข่าย
- ยืนยันว่า OpenThread ไม่มีจุดเดียวที่ทำให้เกิดข้อผิดพลาด
- ดูการรับส่งข้อมูลระหว่างโหนด OpenThread ใน Wireshark
Codelab นี้มุ่งเน้นที่ OTNS-CLI และ OTNS-Web สำหรับการใช้งานแบบอินเทอร์แอกทีฟ ฟีเจอร์อื่นๆ ของ OTNS เช่น สคริปต์ Python จะไม่ครอบคลุม
สิ่งที่คุณต้องมี
- ข้อมูลเบื้องต้นเกี่ยวกับเธรด คุณจะต้องทราบแนวคิดพื้นฐานของ Thread เพื่อทำความเข้าใจสิ่งที่สอนใน Codelab นี้
- ขอแนะนำให้ใช้ Linux x86_64 หรือ Mac OS ที่มี Homebrew Ubuntu เวอร์ชัน 24 ขึ้นไปใน WSL2 ของ Windows ก็ควรใช้งานได้เช่นกัน แต่คุณอาจต้องปรับการตั้งค่าด้วยตนเอง
- Git
- เว็บเบราว์เซอร์ OTNS-Web ใช้เว็บเบราว์เซอร์เพื่อแสดงการจำลอง
- เครื่องมือวิเคราะห์โปรโตคอลเครือข่าย Wireshark (ไม่บังคับ)
- Go เวอร์ชัน 1.23 ขึ้นไป
- สคริปต์การติดตั้งจะตรวจสอบเวอร์ชัน Go ที่ติดตั้ง
- หากไม่ได้ติดตั้ง Go ไว้ ระบบจะติดตั้งเวอร์ชัน >= 1.23 หากมีจากตัวจัดการแพ็กเกจ
- หากไม่มีในตัวจัดการแพ็กเกจ คุณจะต้องติดตั้งด้วยตนเอง
- โปรดทราบว่า Ubuntu 24.04 หรือต่ำกว่าไม่รองรับ Go 1.23 โดยอัตโนมัติ ดูรายละเอียดได้ที่หน้าเวอร์ชัน Golang ที่พร้อมใช้งานในเอกสารประกอบของ Ubuntu คุณสามารถติดตั้งด้วยตนเองโดยใช้
snap
หรือขั้นตอนอื่นๆ ได้
- Python เวอร์ชัน 3.9 ขึ้นไป
- สคริปต์การติดตั้งจะตรวจสอบเวอร์ชัน Python ที่ติดตั้ง
- หากยังไม่ได้ติดตั้ง Python 3 ระบบจะติดตั้งเวอร์ชัน >= 3.9 หากมีจากตัวจัดการแพ็กเกจ
- หากไม่มีในตัวจัดการแพ็กเกจ คุณจะต้องติดตั้งด้วยตนเอง
คำศัพท์
คำว่า "เราเตอร์" ใช้เป็นคำศัพท์ทางเทคนิคสำหรับ Thread Mesh Extender ซึ่งเดิมเรียกว่า Thread Router "โหนด" หมายถึงอุปกรณ์ OpenThread ที่จำลองใน OTNS
2. การติดตั้ง
รับรหัส OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
คำสั่งคอนโซลทั้งหมดที่ตามมาใน Codelab นี้จะเรียกใช้จากไดเรกทอรี otns
เริ่มต้นใช้งานและติดตั้ง
bootstrap
สคริปต์จะติดตั้งทรัพยากร Dependency (รวมถึง Python 3 และ Go/Golang หากจำเป็น) และติดตั้ง OTNS โปรดทราบว่าสคริปต์อาจหยุดทำงานหากติดตั้งการขึ้นต่อกันบางอย่างโดยอัตโนมัติไม่ได้ เช่น Python เวอร์ชัน >= 3.9 หรือ Go เวอร์ชัน >= 1.23 การติดตั้งอัตโนมัติกำหนดให้ต้องค้นหาแพ็กเกจได้ในที่เก็บแพ็กเกจที่กำหนดค่าไว้ของระบบปฏิบัติการ
นอกจากนี้ สคริปต์ยังสร้างโหนด OT ประเภทต่างๆ ที่ใช้ในการจำลองได้โดยตรง และทำการทดสอบพื้นฐานบางอย่าง การสร้างโหนดเหล่านี้อาจใช้เวลาหลายนาที
$ ./script/bootstrap .... .... OTNS installed - use 'otns' to start it. $
ระบบอาจขอให้คุณป้อนรหัสผ่านสำหรับ sudo
ในระหว่างการดำเนินการสคริปต์
หากติดตั้ง otns
ไม่ถูกต้อง
สคริปต์อาจรายงานข้อผิดพลาด เช่น
.... OTNS installed - please add ~/go/bin to your PATH variable first, to use it. $
ในกรณีนี้ คุณต้องเพิ่ม $(go env GOPATH)/bin
ลงในตัวแปร $PATH
ในกรณีที่เกิดข้อผิดพลาดอื่นๆ คุณสามารถสร้างปัญหาใน GitHub ได้
3. เรียกใช้ OTNS เป็นครั้งแรก
เรียกใช้ otns
$ otns >_ ← OTNS-CLI prompt
เมื่อเริ่มต้นสำเร็จ OTNS จะเข้าสู่คอนโซล CLI (OTNS-CLI
) และเปิดเว็บเบราว์เซอร์เพื่อการแสดงภาพและการจัดการเครือข่าย (OTNS-Web
)
หากเห็นเฉพาะหน้าว่างสำหรับ OTNS-Web แสดงว่าอาจไม่ได้เปิดใช้ WebGL ในเบราว์เซอร์ โปรดดู https://superuser.com/a/836833 เกี่ยวกับวิธีเปิดใช้ WebGL
ในส่วนต่อไปนี้ คุณจะได้เรียนรู้วิธีจัดการการจำลอง OTNS ผ่าน OTNS-CLI
และ OTNS-Web
4. ทำความรู้จัก OTNS-CLI และ OTNS-Web
OTNS-CLI
OTNS-CLI
คืออินเทอร์เฟซบรรทัดคำสั่ง (CLI) สำหรับการจัดการการจำลอง OTNS
$ otns >_ ← OTNS-CLI prompt
คุณพิมพ์คำสั่งผ่าน OTNS-CLI
ได้ ดูรายการคำสั่งทั้งหมดได้ที่ข้อมูลอ้างอิง CLI ของ OTNS ไม่ต้องกังวล คุณจะใช้คำสั่งเหล่านี้เพียงไม่กี่คำสั่งใน Codelab นี้
พิมพ์คำสั่ง help
เพื่อดูภาพรวมของคำสั่ง CLI รายการนี้เหมือนกับข้อมูลอ้างอิง CLI
> help add Add a node to the simulation and get the node ID. .... .... Done >
หากต้องการความช่วยเหลือเพิ่มเติมเกี่ยวกับคำสั่งที่เฉพาะเจาะจง ให้ใช้ชื่อของคำสั่งนั้น เช่น
> help add add Add a node to the simulation and get the node ID. Definition: .... .... >
OTNS-Web
OTNS-Web
เป็นเครื่องมือแสดงภาพและการจัดการเครือข่ายของ OTNS ซึ่งแสดงภาพของโหนด ข้อความ และลิงก์ของเครือข่าย Thread ที่จำลอง โปรดทราบองค์ประกอบต่างๆ ของ OTNS-Web
ดังนี้
5. เพิ่มโหนด
เพิ่มโหนดผ่าน OTNS-CLI
เพิ่มเราเตอร์ Thread ลงในการจำลอง
> add router 1 Done
คุณควรเห็นโหนดที่สร้างใน OTNS-Web
โหนดจะเริ่มต้นเป็นเราเตอร์และกลายเป็นผู้นำในไม่กี่วินาที
เพื่อช่วยให้เริ่มต้นการจำลองแบบอินเทอร์แอกทีฟได้ง่ายขึ้น โหนด OpenThread ใหม่แต่ละโหนดจะได้รับการจัดสรรพารามิเตอร์เครือข่ายชุดมาตรฐานโดยค่าเริ่มต้น
เพิ่มโหนดผ่าน OTNS-CLI
ตอนนี้เราจะเพิ่มโหนดบางโหนดที่มีประเภทต่างๆ
> add fed 2 Done > add med 3 Done > add sed 4 Done
รอสักครู่เพื่อให้โหนดผสานรวมเป็นพาร์ติชันเดียว คุณควรเห็นโหนดใน OTNS-Web
ดังนี้
นอกจากนี้ ใน OTNS-Web
คุณยังเลือกโหนดใดก็ได้เพื่อดูแผงที่มีข้อมูลเพิ่มเติมเกี่ยวกับโหนด เช่น ในรูปภาพด้านล่าง โหนด 1 จะได้รับเลือก รายการ "บทบาท" ในแผงจะยืนยันว่าบุคคลนั้นเป็นผู้นำ
เพิ่มโหนดโดย OTNS-Web
นอกจากนี้ คุณยังเพิ่มโหนดผ่าน OTNS-Web
ได้ด้วย คลิกปุ่ม New Router
ของ Action Bar
คุณควรเห็นโหนดที่สร้างขึ้นทางด้านขวาของโหนดที่เลือก เราเตอร์ใหม่ควรเข้าร่วมพาร์ติชัน Thread ที่มีอยู่
นอกจากนี้ ให้คลิกปุ่ม FED, MED, SSED และ BR ในแถบการดำเนินการเพื่อสร้างโหนดประเภทอื่นๆ เหล่านี้ ตอนนี้ควรมีโหนดทั้งหมด 9 โหนด หากต้องการ ให้ลากโหนดบางโหนดไปยังตำแหน่งอื่นเพื่อสร้างโทโพโลยีเครือข่ายจริงที่แตกต่างกัน
ตอนนี้คุณได้สร้างเครือข่าย Thread ของพาร์ติชันเดียวที่มีโหนดจำนวนมากแล้ว ในส่วนถัดไป เราจะปรับความเร็วในการจำลองเพื่อให้การจำลองทำงานได้เร็วขึ้น
6. ปรับความเร็ว
ขณะนี้การจำลองควรทำงานที่ความเร็ว 1X
ซึ่งหมายความว่าเวลาจำลองที่ผ่านไปจนถึงตอนนี้จะเท่ากับเวลาจริงนับตั้งแต่ที่เราสร้างโหนดแรก
ปรับความเร็วผ่าน OTNS-CLI
คุณปรับความเร็วในการจำลองได้ผ่าน OTNS-CLI
ตั้งค่าความเร็วในการจำลองเป็น 100X
> speed 100 Done
คุณควรเห็นว่าโหนดส่งข้อความบ่อยกว่าเดิมมาก
ตั้งค่าความเร็วในการจำลองเป็น MAX
> speed max Done
ตอนนี้ OTNS พยายามจำลองให้เร็วที่สุดเท่าที่จะทำได้ ดังนั้นคุณควรเห็นโหนดส่งข้อความจำนวนมาก
หยุดการจำลองชั่วคราว
> speed 0 Done
การตั้งค่าความเร็วในการจำลองเป็น 0
จะหยุดการจำลองชั่วคราว
กู้คืนการจำลองที่ความเร็วปกติ
> speed 1 Done
การตั้งค่าความเร็วในการจำลองให้มีค่ามากกว่า 0
จะทำให้การจำลองกลับมาทำงานต่อ
ปรับความเร็วผ่าน OTNS-Web
ปุ่มควบคุมความเร็ว
ค้นหาปุ่มควบคุมความเร็ว ใน
Action Bar
ปุ่มจะแสดงความเร็วในการจำลองปัจจุบัน และใช้เพื่อปรับความเร็วในการจำลอง รวมถึงหยุดชั่วคราว/เล่นต่อได้
เร่งความเร็วการจำลอง
คุณเร่งความเร็วการจำลองได้โดยคลิกปุ่ม จนกว่าความเร็วจะถึง
MAX
:
ชะลอการจำลอง
คุณทำให้การจำลองช้าลงได้โดยคลิกปุ่ม
หยุดการจำลองชั่วคราว
คลิกปุ่ม เพื่อหยุดการจำลองชั่วคราวขณะที่กำลังทำงาน ปุ่มจะเปลี่ยนเป็น
จำลองต่อ
คลิกปุ่ม เพื่อดำเนินการจำลองต่อเมื่อหยุดชั่วคราว ระบบจะเปลี่ยนปุ่มกลับเป็น
ตั้งค่าความเร็วในการจำลองเป็น 10X
หากต้องการประหยัดเวลา ให้ใช้
OTNS-CLI
เพื่อปรับความเร็วในการจำลองเป็น
10X
เพื่อให้เราสังเกตการเปลี่ยนแปลงโทโพโลยีในเครือข่ายได้เร็วขึ้นมาก
> speed 10 Done
7. เปิด/ปิดวิทยุ
ตอนนี้การจำลองควรมีเราเตอร์อย่างน้อย 2 ตัว (รูปหกเหลี่ยม) อาจมี Border Router (รูปสี่เหลี่ยม) และอุปกรณ์ย่อยจำนวนมาก และทำงานที่ความเร็ว 10 เท่า
ค้นหาผู้นำปัจจุบัน (เส้นขอบสีแดง) ของเราเตอร์ 2 ตัว แล้วคลิกเพียงครั้งเดียวเพื่อเลือก
ปิดวิทยุ
คลิกปุ่ม ในแถบการดำเนินการเพื่อปิดวิทยุของโหนดผู้นำ โดยผู้นำจะส่งหรือรับข้อความไม่ได้หากปิดวิทยุ
รอประมาณ 12 วินาที (120 วินาทีในเวลาจำลอง) เพื่อให้เราเตอร์หรือ Border Router อื่นกลายเป็นลีดเดอร์ใหม่
เครือข่าย Thread จะกู้คืนจากการล้มเหลวของผู้นำโดยอัตโนมัติด้วยการสร้างพาร์ติชันใหม่ที่มีผู้นำใหม่ พาร์ติชันใหม่จะมีสีพาร์ติชันใหม่ด้วย
เปิดวิทยุ
เลือกผู้นำที่ปิดวิทยุไว้ คลิกปุ่ม ใน
Action Bar
เพื่อกู้คืนการเชื่อมต่อวิทยุ
ผู้นำควรเชื่อมต่อเครือข่ายอีกครั้งหลังจากที่การเชื่อมต่อวิทยุกลับมาเป็นปกติ
8. ย้ายโหนด
OTNS ช่วยให้ผู้ใช้ย้ายโหนดผ่าน OTNS-CLI
หรือ OTNS-Web
ได้อย่างง่ายดาย
ย้ายโหนดผ่าน OTNS-CLI
ย้ายโหนด Border Router 9 ไปยังตำแหน่งใหม่
> move 9 50 50 Done
ย้ายโหนดผ่าน OTNS-Web
ย้ายโหนด 5 ไปที่ด้านล่างขวาสุดโดยการลาก เนื่องจากตอนนี้โหนด 5 อยู่นอกขอบเขตการครอบคลุมของสัญญาณวิทยุของเราเตอร์อื่นๆ จึงสร้างพาร์ติชันของตัวเองด้วยรหัสพาร์ติชันใหม่ คุณตรวจสอบรหัสพาร์ติชันได้ในแผงข้อมูลโหนดโดยคลิกโหนด
โปรดทราบว่ายังคงมีเส้นสีเขียวเส้นเดียวที่วาดระหว่างโหนด 5 กับโหนด 9 ปัญหานี้มักเกิดจากข้อมูลเกี่ยวกับบุตรหลานที่ล้าสมัย ซึ่งยังคงอยู่ในตารางของบุตรหลานของผู้ปกครองเดิม หรืออาจเป็นข้อมูลที่ล้าสมัยเกี่ยวกับลิงก์เราเตอร์กับเราเตอร์ก่อนหน้าระหว่างโหนด 9 กับโหนด 5 (หรืออาจเป็นข้อบกพร่องในการแสดงผลในกรณีนี้) ในที่สุด ระบบจะล้างข้อมูลที่ล้าสมัยในโหนดหลังจากหมดเวลาที่เหมาะสม
9. ลบโหนด
ลบโหนดผ่าน OTNS-CLI
ลบโหนด 5:
> del 5 Done
โหนด 5 ควรหายไปจากการจำลอง
ลบโหนดผ่าน OTNS-Web
เลือกโหนด Border Router 9 แล้วคลิกปุ่ม ใน
Action Bar
เพื่อลบโหนด 9
Node 1
ควรกลายเป็นผู้นำของพาร์ติชันใหม่และโหนดที่เหลือทั้งหมดจะเชื่อมต่อเป็นโหนดย่อยกับโหนด 1
10. บริบทของโหนด OTNS-CLI
OTNS-CLI
มีโหมดบริบทของโหนดเพื่อให้โต้ตอบกับโหนดได้ง่าย ซึ่งจะช่วยให้นักพัฒนาแอปวินิจฉัยสถานะของโหนดได้ นอกจากนี้ คุณยังเริ่มการดำเนินการกับโหนดจากโหมดนี้ได้ด้วย
เข้าสู่โหมดบริบทของโหนด
ป้อนบริบทของโหนดของโหนด 1 ดังนี้
> node 1 Done node 1>
พรอมต์ CLI เปลี่ยนเป็น node 1>
ซึ่งระบุบริบทของโหนดปัจจุบัน คุณพิมพ์คำสั่ง OpenThread CLI เพื่อดำเนินการในโหนดได้ราวกับว่าคุณโต้ตอบกับโหนดโดยตรง
เรียกใช้คำสั่งในบริบทของโหนด
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname otns Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:b400 fd00:f00d:cafe:0:2505:8719:3685:ebfb fdde:ad00:beef:0:4fd9:b9ba:44e0:96cb fe80:0:0:0:e86a:e07:ec97:777 Done
เปลี่ยนไปใช้บริบทโหนดอื่น
node 1> node 2 Done node 2>
บริบทของโหนดทางออก
node 1> exit Done >
อีกวิธีหนึ่งในการออกจากบริบทของโหนดคือใช้คำสั่ง node 0
11. การดูบันทึกของโหนดและการดักจับแพ็กเก็ต
บันทึกของโหนด OpenThread
โดยค่าเริ่มต้น OTNS จะสร้างไฟล์บันทึกแบบละเอียดสำหรับโหนด OpenThread ที่จำลองทั้งหมด คุณดูข้อมูลเหล่านี้ได้ใน./tmp
ไดเรกทอรี ชื่อไฟล์คือ 0_
ตัวอย่างเช่น ข้อมูลบางส่วนของไฟล์บันทึกจะแสดงด้านล่าง
7616488 00:00:06.326 [I] MeshForwarder-: Received IPv6 UDP msg, len:90, chksum:5915, ecn:no, from:ca72650db7b856af, sec:no, prio:net, rss:-58.0
7616488 00:00:06.326 [I] MeshForwarder-: src:[fe80:0:0:0:c872:650d:b7b8:56af]:19788
7616488 00:00:06.326 [I] MeshForwarder-: dst:[ff02:0:0:0:0:0:0:1]:19788
7616488 00:00:06.326 [D] Mle-----------: Receive MLE message
7616488 00:00:06.326 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7657544 00:00:06.367 [D] Mac-----------: ==============================[RX len=063]==============================
7657544 00:00:06.367 [D] Mac-----------: | 41 D8 7F CE FA FF FF 46 | 74 5A 33 9E 76 51 4E 7F | A......FtZ3.vQN. |
7657544 00:00:06.367 [D] Mac-----------: | 3B 02 F0 4D 4C 4D 4C 81 | E6 00 15 03 00 00 00 00 | ;..MLML......... |
7657544 00:00:06.367 [D] Mac-----------: | 00 00 00 01 46 86 7D FE | 06 CC DB 94 86 9C 88 0B | ....F.}......... |
7657544 00:00:06.367 [D] Mac-----------: | 1C 1E 26 9B 8D 21 2E 65 | 53 5A 43 4E A2 59 D6 | ..&..!.eSZCN.Y. |
7657544 00:00:06.367 [D] Mac-----------: ------------------------------------------------------------------------
7657544 00:00:06.367 [I] MeshForwarder-: Received IPv6 UDP msg, len:84, chksum:81e6, ecn:no, from:4e51769e335a7446, sec:no, prio:net, rss:-48.0
7657544 00:00:06.367 [I] MeshForwarder-: src:[fe80:0:0:0:4c51:769e:335a:7446]:19788
7657544 00:00:06.367 [I] MeshForwarder-: dst:[ff02:0:0:0:0:0:0:2]:19788
7657544 00:00:06.367 [D] Mac-----------: Idle mode: Radio receiving on channel 11
7833912 00:00:06.543 [I] Mle-----------: AttachState ParentReq -> Idle
7833912 00:00:06.543 [N] RouterTable---: Allocate router id 12
7833912 00:00:06.543 [N] Mle-----------: RLOC16 fffe -> 3000
7833912 set node RLOC16: fffe -> 3000
7833912 00:00:06.543 [D] SubMac--------: RadioShortAddress: 0x3000
7833912 00:00:06.543 [N] Mle-----------: Role detached -> leader
7833912 00:00:06.543 [N] Mle-----------: Partition ID 0x24c35f10
7833912 00:00:06.543 [I] RouterTable---: Route table
7833912 00:00:06.543 [I] RouterTable---: 12 0x3000 - me - leader
เวลาจำลองแบบสัมบูรณ์เป็นไมโครวินาทีจะแสดงทางด้านซ้าย hh:mm:ss
การประทับเวลาจะแสดงการประทับเวลาของบันทึกของโหนด OpenThread เอง ซึ่งอาจแตกต่างจากเวลาจำลองที่แน่นอน
การบันทึกแพ็กเก็ต Wireshark
โดยค่าเริ่มต้น เฟรม IEEE 802.15.4 ที่ส่งทั้งหมดจะได้รับการบันทึกในไฟล์ PCAP current.pcap
Wireshark สามารถอ่านไฟล์นี้ได้ในระหว่างหรือหลังการจำลอง เนื่องจากการเข้ารหัสระดับลิงก์ของ Thread คุณจึงต้องดำเนินการกำหนดค่าแบบครั้งเดียวใน Wireshark เพื่อตั้งค่าคีย์การถอดรหัสสำหรับ OTNS อย่างถูกต้อง โดยค่าเริ่มต้น ระบบจะใช้คีย์เครือข่ายที่รู้จักกันดี 1 คีย์เพื่อให้ Wireshark ถอดรหัสเฟรมได้ง่าย
ดูภาพหน้าจอด้านล่างเพื่อดูตัวอย่างการตรวจสอบแพ็กเก็ต OpenThread ใน Wireshark
หากต้องการกำหนดค่าคีย์การถอดรหัส ให้เลือกแก้ไข -> ค่ากำหนดในเมนู จากนั้นในหน้าต่างค่ากำหนด ให้เลือก Protocols -> IEEE 802.15.4 คลิกปุ่มแก้ไข... ข้าง "คีย์การถอดรหัส" คลิก + เพื่อสร้างรายการใหม่ แล้วป้อนคีย์ 00112233445566778899aabbccddeeff
(32 อักขระ) และเลือก "แฮชเธรด" ในช่อง "แฮชคีย์" คุณปล่อยให้ "ดัชนีคีย์การถอดรหัส" เป็น 0
ได้ จากนั้นคลิก OK แล้วคลิก OK อีกครั้ง ตอนนี้ไฟล์ PCAP ของ OTNS ควรจะถอดรหัสได้อย่างถูกต้องเมื่อโหลด
การประทับเวลาที่แสดงในคอลัมน์ "เวลา" (เป็นวินาที) จะสอดคล้องกับค่าเวลาจำลองที่แน่นอนซึ่งแสดงในบันทึกของโหนด OpenThread ซึ่งจะช่วยให้คุณเชื่อมโยงข้อความบันทึกกับเฟรมวิทยุที่ส่งหรือรับได้ง่ายขึ้น อย่างไรก็ตาม โดยปกติแล้วค่าจะไม่เหมือนกันจนถึงระดับความแม่นยำระดับไมโครวินาทีเดียว เนื่องจากฮาร์ดแวร์วิทยุ IEEE 802.15.4 ที่จำลองอาจเพิ่มความล่าช้าเพิ่มเติมหลังจากที่สแต็ก OpenThread ขอให้ส่งเฟรมวิทยุ
12. ขอแสดงความยินดี
ยินดีด้วย คุณได้ทำการจำลอง OTNS ครั้งแรกสำเร็จแล้ว
คุณได้เรียนรู้วิธีติดตั้ง OTNS และทรัพยากร Dependency ของ OTNS แล้ว คุณเริ่มการจำลอง OTNS ด้วยโหนดจำลอง OpenThread คุณได้เรียนรู้วิธีจัดการการจำลองในรูปแบบต่างๆ ผ่านทั้ง OTNS-CLI
และ OTNS-Web
ตอนนี้คุณทราบแล้วว่า OTNS คืออะไรและจะใช้ OTNS เพื่อจำลองเครือข่าย OpenThread ได้อย่างไร
ขั้นตอนถัดไปคือ
ลองดู Codelab เหล่านี้
- จำลองเครือข่าย Thread ด้วย OpenThread
- การจำลองเครือข่าย Thread โดยใช้ OpenThread ใน Docker
- สร้างเครือข่าย Thread ด้วยบอร์ด nRF52840 และ OpenThread