จำลองเครือข่ายเทรดโดยใช้ OTNS

เกี่ยวกับ Codelab นี้
schedule30 นาที
subjectอัปเดตล่าสุดเมื่อ 15 พฤษภาคม 2568
account_circleเขียนโดย Simon Lin, Colin Tan, Esko Dijk

1. บทนำ

การแสดงผลของโทโพโลยีเครือข่ายที่ทำงานร่วมกันแบบเทรด

Thread และ OTNS คืออะไร

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

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

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

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

  • ติดตั้ง OTNS และทรัพยากร Dependency
  • ดูข้อมูลเบื้องต้นเกี่ยวกับ OTNS-CLI
  • วิธีเพิ่ม/ย้าย/ลบโหนด OpenThread ใน OTNS-Web
  • ใช้ฟีเจอร์อื่นๆ ที่มีประโยชน์ของ OTNS-Web เพื่อควบคุมการจําลองเครือข่าย
  • ยืนยันการไม่มีจุดที่ทำให้เกิดข้อผิดพลาดจุดเดียวของ OpenThread
  • ดูการรับส่งข้อมูลระหว่างโหนด OpenThread ใน Wireshark

โค้ดแล็บนี้มุ่งเน้นที่ OTNS-CLI และ OTNS-Web สำหรับการใช้งานแบบอินเทอร์แอกทีฟ ฟีเจอร์อื่นๆ ของ OTNS เช่น สคริปต์ Python จะไม่ครอบคลุม

สิ่งที่คุณต้องมี

  • แนะนำให้ใช้ Linux x86_64 หรือ Mac OS ที่มี Homebrew Ubuntu 22/24 ใน Windows WSL2 ก็น่าจะใช้งานได้เช่นกัน แต่อาจต้องมีการปรับการตั้งค่าด้วยตนเอง
  • Git
  • เว็บเบราว์เซอร์ OTNS-Web ใช้เว็บเบราว์เซอร์ในการแสดงการจําลอง
  • Thread Primer คุณจะต้องทราบแนวคิดพื้นฐานของเธรดเพื่อทำความเข้าใจสิ่งที่สอนใน Codelab นี้

คำศัพท์

คําว่า "เราเตอร์" ใช้เป็นตัวยึดตําแหน่งทางเทคนิคสําหรับอุปกรณ์ขยายระยะสัญญาณเทรด ซึ่งเดิมเรียกว่าเทรดเราเตอร์ "โหนด" หมายถึงอุปกรณ์ OpenThread ที่จำลองในการจําลอง OTNS

2. การติดตั้ง

รับรหัส OTNS

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

คำสั่งคอนโซลทั้งหมดที่ตามมาใน Codelab นี้จะเรียกใช้จากไดเรกทอรี otns

เตรียมพร้อมและติดตั้ง

สคริปต์ bootstrap จะติดตั้ง Dependency (รวมถึง Python3 และ Go/Golang หากจำเป็น) และติดตั้ง OTNS นอกจากนี้ยังสร้างโหนด 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 เมื่อเริ่มต้น

หากเห็นเฉพาะหน้าว่างสำหรับ OTNS-Web แสดงว่าเบราว์เซอร์อาจไม่ได้เปิดใช้ WebGL โปรดดูวิธีเปิดใช้ WebGL ที่ https://superuser.com/a/836833

ในส่วนต่อไปนี้ คุณจะได้เรียนรู้วิธีจัดการการจําลอง 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 ซึ่งแสดงภาพจุด ข้อความ และลิงก์ของเครือข่ายเทรดที่จำลอง โปรดสังเกตองค์ประกอบต่างๆ ของ OTNS-Web

OTNS-Web elements explained

5. เพิ่มโหนด

เพิ่มโหนดผ่าน OTNS-CLI

เพิ่มเราเตอร์เทรดในระบบจำลอง

> add router
1
Done

คุณควรเห็นโหนดที่สร้างใน OTNS-Web โหนดเริ่มต้นเป็นเราเตอร์และกลายเป็นผู้นำในไม่กี่วินาที โดยทำดังนี้

โหนด 1 โหนดในบทบาทผู้นำ

โหนด OpenThread ใหม่แต่ละโหนดจะได้รับการจัดเตรียมด้วยชุดพารามิเตอร์เครือข่ายมาตรฐานโดยค่าเริ่มต้น เพื่อให้เริ่มการจําลองแบบอินเทอร์แอกทีฟได้ง่าย

เพิ่มโหนดผ่าน OTNS-CLI

ตอนนี้เราจะเพิ่มโหนดประเภทต่างๆ

> add fed
2
Done
> add med
3
Done
> add sed
4
Done

รอ 2-3 วินาทีเพื่อให้โหนดผสานเป็นพาร์ติชันเดียว คุณควรเห็นโหนดใน OTNS-Web ดังนี้

เครือข่าย Thread ที่มี 4 โหนด

นอกจากนี้ ใน OTNS-Web คุณยังเลือกโหนดใดก็ได้เพื่อดูแผงที่มีข้อมูลเพิ่มเติมเกี่ยวกับโหนดนั้น เช่น ในรูปภาพด้านล่าง มีการนําเลือกโหนด 1 รายการ "บทบาท" ในแผงยืนยันว่าเป็นผู้นำ

เครือข่ายเทรดที่มี 4 โหนด โดยเลือกโหนด 1

เพิ่มโหนดโดย OTNS-Web

นอกจากนี้ คุณยังเพิ่มโหนดผ่าน OTNS-Web ได้ด้วย คลิกปุ่ม New Router ของ Action Bar คุณควรเห็นการสร้างโหนดทางด้านขวาของโหนดที่เลือก เราเตอร์ใหม่ควรเข้าร่วมพาร์ติชันเทรดที่มีอยู่ โดยทำดังนี้

เพิ่มเราเตอร์แล้ว รวมเป็น 5 โหนด

นอกจากนี้ ให้คลิกปุ่ม FED, MED, SSED และ BR ในแถบการดำเนินการเพื่อสร้างโหนดประเภทอื่นๆ เหล่านี้ ตอนนี้ควรมีโหนดทั้งหมด 9 โหนด หากต้องการ ให้ลากโหนดบางโหนดไปยังตำแหน่งอื่นเพื่อสร้างโทโปโลยีเครือข่ายจริงแบบอื่น

เพิ่มโหนดใหม่หลายโหนด รวมเป็น 9 โหนด

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

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 ตัว แล้วคลิกเลือก

เครือข่ายเทรดที่มีการเลือกโหนดผู้นำ 1

ปิดวิทยุ

คลิกปุ่ม ปุ่มปิดวิทยุ ในแถบการดำเนินการเพื่อปิดสัญญาณของโหนดผู้นำ หัวหน้าจะส่งหรือรับข้อความไม่ได้เมื่อปิดวิทยุ

รอประมาณ 12 วินาที (120 วินาทีตามเวลาจำลอง) เพื่อให้เราเตอร์หรือ Border Router อีกตัวหนึ่งกลายเป็นผู้นำใหม่

ระบบจะสร้างพาร์ติชันใหม่โดยกำหนดให้โหนด 9 เป็นโหนดนำใหม่

เครือข่ายเทรดจะกู้คืนจากภาวะผู้นำไม่ทำงานโดยอัตโนมัติด้วยการสร้างพาร์ติชันใหม่ที่มีผู้นำใหม่ พาร์ติชันใหม่จะมีสีใหม่ด้วย

เปิดวิทยุ

เลือกหัวหน้าที่ปิดวิทยุอยู่ คลิกปุ่ม ปุ่มเปิดวิทยุ ใน Action Bar เพื่อคืนค่าการเชื่อมต่อวิทยุ

โหนด 1 เข้าร่วมพาร์ติชันหลังจากเปิดวิทยุอีกครั้ง

หัวหน้าควรเชื่อมต่อกับเครือข่ายอีกครั้งหลังจากการเชื่อมต่อวิทยุได้รับการคืนค่า

8. ย้ายโหนด

OTNS ช่วยให้ผู้ใช้ย้ายโหนดได้อย่างง่ายดายผ่าน OTNS-CLI หรือ OTNS-Web

ย้ายโหนดผ่าน OTNS-CLI

ย้ายโหนด Border Router 9 ไปยังตำแหน่งใหม่

> move 9 50 50
Done

ย้ายโหนดผ่าน OTNS-Web

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

ย้ายโหนด 5 ออกจากโหนดอื่นๆ และสร้างพาร์ติชันใหม่

โปรดทราบว่ายังคงมีเส้นสีเขียวเส้นเดียวที่ลากระหว่างโหนด 5 กับโหนด 9 ปัญหานี้มักเกิดจากข้อมูลเกี่ยวกับบุตรหลานที่ไม่ถูกต้อง ซึ่งยังคงอยู่ในตารางบุตรหลานของผู้ปกครองคนก่อน หรืออาจเป็นข้อมูลที่ล้าสมัยเกี่ยวกับลิงก์จากเราเตอร์ไปยังเราเตอร์เดิมระหว่างโหนด 9 กับโหนด 5 (หรือในกรณีนี้อาจเป็นข้อบกพร่องในการเรนเดอร์) ในที่สุด ระบบจะล้างข้อมูลเก่าในโหนดหลังจากหมดเวลาที่เหมาะสม

9. ลบโหนด

ลบโหนดผ่าน OTNS-CLI

ลบโหนด 5:

> del 5
Done

โหนด 5 ควรหายไปจากการจําลอง

ลบโหนด 5 ออกจากการจําลอง

ลบโหนดผ่าน OTNS-Web

เลือกโหนด Border Router 9 แล้วคลิกปุ่ม ปุ่มลบ บน Action Bar เพื่อลบโหนด 9

ลบโหนด Border Router 9 แล้ว

Node 1 ควรกลายเป็นโหนดหลักของพาร์ติชันใหม่ และโหนดที่เหลือทั้งหมดจะแนบเป็นโหนดย่อยกับโหนด 1

10. บริบทของโหนด OTNS-CLI

OTNS-CLI มีโหมดบริบทของโหนดสำหรับการโต้ตอบกับโหนดอย่างง่ายดายเพื่อช่วยนักพัฒนาซอฟต์แวร์ในการวินิจฉัยสถานะของโหนด นอกจากนี้ คุณยังเริ่มการดำเนินการของโหนดจากโหมดนี้ได้อีกด้วย

เข้าสู่โหมดบริบทของโหนด

ป้อนบริบทของโหนดของโหนด 1

> node 1
Done
node 1>

พรอมต์ CLI เปลี่ยนเป็น node 1> ซึ่งระบุบริบทของโหนดปัจจุบัน คุณสามารถพิมพ์คำสั่ง CLI ของ OpenThread เพื่อเรียกให้ดำเนินการบนโหนดได้ ราวกับว่าคุณกำลังโต้ตอบกับโหนดโดยตรง

เรียกใช้คําสั่งในบริบทของโหนด

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_.log ตัวอย่างข้อความที่ตัดตอนมาจากไฟล์บันทึกแสดงอยู่ด้านล่าง

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 ระหว่างหรือหลังการจําลอง เนื่องจากการเข้ารหัสเลเยอร์ลิงก์ของเทรด คุณจึงต้องดำเนินการกำหนดค่าแบบครั้งเดียวใน Wireshark เพื่อตั้งค่าคีย์การถอดรหัสสำหรับ OTNS อย่างถูกต้อง โดยค่าเริ่มต้น ระบบจะใช้คีย์เครือข่ายที่รู้จักกันดี 1 รายการเพื่อให้ Wireshark ถอดรหัสเฟรมได้ง่าย

ดูตัวอย่างการตรวจสอบแพ็กเก็ต OpenThread ใน Wireshark ได้จากภาพหน้าจอด้านล่าง

ภาพหน้าจอของการวิเคราะห์แพ็กเก็ต OpenThread ใน Wireshark

หากต้องการกำหนดค่าคีย์การถอดรหัส ให้เลือกในเมนูแก้ไข -> ค่ากำหนด จากนั้นในหน้าต่างค่ากําหนด ให้เลือกโปรโตคอล -> IEEE 802.15.4 คลิกปุ่มแก้ไข... ข้าง "คีย์การถอดรหัส" คลิก + เพื่อสร้างรายการใหม่ แล้วป้อนคีย์ 00112233445566778899aabbccddeeff (32 อักขระ) และเลือก "แฮชชุดข้อความ" ในช่อง "แฮชคีย์" ปล่อย "ดัชนีคีย์การถอดรหัส" เป็น 0 จากนั้นคลิก OK แล้วคลิก OK อีกครั้ง ตอนนี้ไฟล์ PCAP ของ OTNS ควรถอดรหัสอย่างถูกต้องเมื่อโหลด

การประทับเวลาซึ่งแสดงในคอลัมน์ "เวลา" (เป็นวินาที) สอดคล้องกับค่าเวลาการจําลองสัมบูรณ์ที่แสดงในบันทึกของโหนด OpenThread ซึ่งจะช่วยให้คุณเชื่อมโยงข้อความบันทึกกับเฟรมวิทยุที่ส่งหรือรับได้ง่ายขึ้น อย่างไรก็ตาม ค่าเหล่านี้มักจะไม่เหมือนกันจนถึงระดับความแม่นยำระดับไมโครวินาทีเดียว เนื่องจากฮาร์ดแวร์วิทยุ IEEE 802.15.4 ที่จำลองอาจเพิ่มการหน่วงเวลาเพิ่มเติมหลังจากที่สแต็ก OpenThread ส่งคําขอส่งเฟรมวิทยุ

12. ขอแสดงความยินดี

ยินดีด้วย คุณทำการจําลอง OTNS ครั้งแรกสําเร็จแล้ว

คุณได้เรียนรู้วิธีติดตั้ง OTNS และ Dependency ต่างๆ แล้ว คุณเริ่มการจําลอง OTNS ด้วยโหนดจําลอง OpenThread คุณได้เรียนรู้วิธีจัดการการจําลองด้วยวิธีต่างๆ ทั้งผ่าน OTNS-CLI และ OTNS-Web

ตอนนี้คุณทราบแล้วว่า OTNS คืออะไร และวิธีใช้ OTNS เพื่อจำลองเครือข่าย OpenThread

ขั้นตอนถัดไปคือ

ลองดู Codelab เหล่านี้...

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