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

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 เมื่อเริ่มต้น

หากเห็นเฉพาะหน้าว่างสำหรับ 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 ดังนี้

คำอธิบายเกี่ยวกับองค์ประกอบ 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 ดังนี้

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

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

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

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

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

เพิ่มเราเตอร์แล้ว มีโหนดทั้งหมด 5 โหนด

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

เพิ่มโหนดใหม่หลายรายการ รวมเป็น 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: ตัวบ่งชี้ความเร็วการจำลอง MAX

ชะลอการจำลอง

คุณทำให้การจำลองช้าลงได้โดยคลิกปุ่ม ปุ่มลดความเร็ว

หยุดการจำลองชั่วคราว

คลิกปุ่ม ปุ่มหยุดชั่วคราว เพื่อหยุดการจำลองชั่วคราวขณะที่กำลังทำงาน ปุ่มจะเปลี่ยนเป็น ปุ่มเล่น

จำลองต่อ

คลิกปุ่ม ปุ่มเล่น เพื่อดำเนินการจำลองต่อเมื่อหยุดชั่วคราว ระบบจะเปลี่ยนปุ่มกลับเป็น ปุ่มหยุดชั่วคราว

ตั้งค่าความเร็วในการจำลองเป็น 10X

หากต้องการประหยัดเวลา ให้ใช้

OTNS-CLI เพื่อปรับความเร็วในการจำลองเป็น

10X เพื่อให้เราสังเกตการเปลี่ยนแปลงโทโพโลยีในเครือข่ายได้เร็วขึ้นมาก

> speed 10
Done

7. เปิด/ปิดวิทยุ

ตอนนี้การจำลองควรมีเราเตอร์อย่างน้อย 2 ตัว (รูปหกเหลี่ยม) อาจมี Border Router (รูปสี่เหลี่ยม) และอุปกรณ์ย่อยจำนวนมาก และทำงานที่ความเร็ว 10 เท่า

ค้นหาผู้นำปัจจุบัน (เส้นขอบสีแดง) ของเราเตอร์ 2 ตัว แล้วคลิกเพียงครั้งเดียวเพื่อเลือก

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

ปิดวิทยุ

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

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

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

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

เปิดวิทยุ

เลือกผู้นำที่ปิดวิทยุไว้ คลิกปุ่ม ปุ่มเปิดวิทยุ ใน 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

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

ดูภาพหน้าจอด้านล่างเพื่อดูตัวอย่างการตรวจสอบแพ็กเก็ต OpenThread ใน 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 เหล่านี้

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