1. บทนำ
ชุดข้อความและ OTNS คืออะไร
เทรดเป็นโปรโตคอลเครือข่ายที่ทํางานร่วมกันแบบไร้สายแบบ IP ที่ใช้พลังงานต่ํา ซึ่งช่วยให้ติดต่อสื่อสารระหว่างอุปกรณ์กับอุปกรณ์ได้อย่างปลอดภัยกับระบบคลาวด์ เครือข่ายเทรดอาจปรับตัวตามการเปลี่ยนแปลงโทโพโลยีเพื่อหลีกเลี่ยงจุดที่ไม่สําเร็จจุดเดียว
OpenThread ที่เผยแพร่โดย Google เป็นการใช้งาน Thread แบบโอเพนซอร์ส ถึงแม้ว่าโค้ดและรอยเท้าของหน่วยความจําจะมีขนาดเล็ก แต่ OpenThread สามารถรองรับฟีเจอร์ทั้งหมดที่กําหนดไว้ในข้อกําหนดชุดข้อความ
คุณใช้เครื่องจําลองเครือข่าย OpenThread (OTNS) เพื่อจําลองเครือข่ายเทรดได้โดยการเรียกใช้โหนด OpenThread จําลองในแพลตฟอร์ม Posix OTNS มีอินเทอร์เฟซเว็บที่ใช้งานง่าย (OTNS-Web) สําหรับการแสดงภาพและการทํางานของเครือข่ายเทรดจําลอง
สิ่งที่คุณจะได้เรียนรู้
- ติดตั้ง OTNS และทรัพยากร Dependency
- สร้าง OpenThread สําหรับ OTNS
- วิธีเพิ่ม/ย้าย/ลบโหนดใน OTNS-Web
- ใช้ฟีเจอร์ที่เป็นประโยชน์อื่นๆ ของ OTNS-Web' ในการจําลองเครือข่าย
- ยืนยัน OpenThread' no-point-of-failure
Codelab นี้มุ่งเน้นที่ OTNS-CLI และ OTNS-Web โดยจะไม่ครอบคลุมฟีเจอร์อื่นๆ ของ OTNS' เช่น การเขียนสคริปต์ Python
สิ่งที่ต้องมี
- Linux x86_64 หรือ Mac OS
- Git
- ใช้ 1.13+
- เว็บเบราว์เซอร์ OTNS-Web ใช้เว็บเบราว์เซอร์ในการแสดงการจําลอง
- ชุดข้อความ Primer คุณจะต้องทราบแนวคิดพื้นฐานของชุดข้อความเพื่อทําความเข้าใจสิ่งที่สอนใน Codelab นี้
2. การติดตั้ง
ติดตั้ง Go
OTNS จําเป็นต้องใช้ Go 1.13+ ในการสร้าง
- ติดตั้ง Go จาก https://golang.org/dl/
- เพิ่ม
$(go env GOPATH)/bin
(ปกติราคา$HOME/go/bin
) ไปยัง$PATH
:
$ export PATH=$PATH:$(go env GOPATH)/bin
รับรหัส OTNS
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
ทรัพยากร Dependency ของการติดตั้ง
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
ระบบอาจขอให้คุณป้อนรหัสผ่านสําหรับ sudo
ติดตั้ง otns
ติดตั้ง otns
ใน $GOPATH/bin
:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
มาตรวจสอบว่าติดตั้ง otns
อย่างถูกต้องแล้วหรือไม่
- เรียกใช้
which otns
เพื่อตรวจสอบว่าไฟล์ปฏิบัติการของotns
นั้นค้นหาได้ใน$PATH.
หรือไม่ - หากไม่พบคําสั่ง
otns
ให้ยืนยันว่าคุณเพิ่ม$(go env GOPATH)/bin
ใน$PATH.
แล้ว
3. สร้าง OpenThread สําหรับ OTNS
รับโค้ด OpenThread จาก GitHub
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
สร้าง OpenThread ด้วย OTNS=1
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
หาไฟล์ปฏิบัติการ OpenThread ได้จากไดเรกทอรี build
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
ได้เวลาเรียกใช้ OTNS แล้ว...
4. เรียกใช้ OTNS
การเรียกใช้ otns
:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
เมื่อเริ่มต้นเรียบร้อยแล้ว OTNS จะเข้าสู่คอนโซล CLI (OTNS-CLI
) และเปิดเว็บเบราว์เซอร์สําหรับการแสดงผลและจัดการเครือข่าย (OTNS-Web
)
หากคุณเห็นหน้าว่างสําหรับ OTNS-Web เพียงอย่างเดียว อาจเป็นเพราะไม่ได้เปิดใช้ WebGL ในเบราว์เซอร์ โปรดดูhttps://superuser.com/a/836833 วิธีเปิดใช้ WebGL
ในส่วนต่อไปนี้ คุณจะได้เรียนรู้วิธีจัดการการจําลอง OTNS ผ่าน OTNS-CLI
และ OTNS-Web
5. ทําความรู้จักกับ OTNS-CLI และ AMP OTNS-Web
OTNS-CLI
OTNS-CLI
มี Command Line Interface (CLI) สําหรับการจัดการการจําลอง OTNS
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
คุณพิมพ์คําสั่งผ่าน OTNS-CLI
ได้ ดูรายการคําสั่งทั้งหมดได้ในเอกสารอ้างอิง OTNS CLI ไม่ต้องกังวล คุณจะใช้คําสั่งเหล่านี้เพียงไม่กี่คําสั่งใน Codelab นี้
OTNS-เว็บ
OTNS-Web
คือเครื่องมือการจัดการภาพและเครือข่าย OTNS' โดยจะแสดงภาพโหนด ข้อความ และลิงก์ของเครือข่ายเทรดจําลอง บันทึกองค์ประกอบต่างๆ ของ OTNS-Web
6. เพิ่มโหนด
เพิ่มโหนดผ่าน OTNS-CLI
เพิ่มเราเตอร์ที่ตําแหน่ง (300, 100)
> add router x 300 y 100 1 Done
คุณควรเห็นโหนดที่สร้างใน OTNS-Web
โหนดจะเริ่มต้นเป็นเราเตอร์และกลายเป็นผู้นําในเวลาไม่กี่วินาที:
เพิ่มโหนดผ่าน OTNS-CLI
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
รอสักครู่เพื่อให้โหนดผสานเข้าเป็นพาร์ติชันเดียว คุณควรเห็นโหนดใน OTNS-WEB
ดังนี้
เพิ่มโหนดภายในวันที่ OTNS-Web
คุณเพิ่มโหนดผ่าน OTNS-Web
ได้ด้วย คลิกปุ่ม New Router
ของ Action Bar
คุณควรเห็นโหนดที่กําลังสร้างขึ้นเหนือปุ่ม New Router
ลากโหนดให้อยู่ใกล้ผู้นําที่สร้างผ่าน OTNS-CLI
สุดท้าย โหนดทั้งหมดควรรวมเป็นพาร์ติชันเดียว
หรือคลิกปุ่ม FED, MED และ SED ในแถบการทํางานเพื่อสร้างโหนดประเภทอื่นๆ ลากโหนดเหล่านั้นไปยังตําแหน่งใกล้กับโหนดที่มีอยู่เพื่อแนบไปกับเครือข่ายเทรดนั้น:
คุณได้สร้างเครือข่ายเทรดของพาร์ติชันหนึ่งที่มีโหนดจํานวนมากแล้ว ในส่วนถัดไป เราจะปรับความเร็วของการจําลองเพื่อทําให้การจําลองทํางานได้เร็วขึ้น
7. ปรับความเร็ว
ในตอนนี้ การจําลองควรทํางานด้วยความเร็ว 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
8. เปิด/ปิดวิทยุ
ตอนนี้การจําลองควรมีเราเตอร์ 2 รายการ (รูปร่างหกเหลี่ยม) และเด็กจํานวนมาก และทํางานด้วยความเร็ว 10 เท่า
ค้นหา Leader ปัจจุบัน (เส้นขอบสีแดง) ของเราเตอร์ 2 เครื่องด้วยการคลิกเพียงครั้งเดียวเพื่อเลือก
ปิดวิทยุ
คลิกปุ่ม ในแถบการดําเนินการเพื่อปิดวิทยุของโหนดผู้นํา
ผู้นําจะรับหรือส่งข้อความโดยปิดวิทยุไม่ได้
รอประมาณ 12 วินาที (120 วินาทีในการจําลองเวลา) เพื่อให้เราเตอร์อีกตัวเป็นผู้นําใหม่
เครือข่ายชุดข้อความจะฟื้นตัวจากความล้มเหลวของผู้นําโดยอัตโนมัติโดยการเกิดพาร์ติชันใหม่โดยมีผู้นําใหม่ พาร์ติชันใหม่มีสีพาร์ติชันใหม่เช่นกัน
เปิดวิทยุ
เลือกผู้นําที่ปิดวิทยุไว้ คลิกที่ปุ่ม บน
Action Bar
เพื่อคืนค่าการเชื่อมต่อวิทยุ:
ผู้นําควรเชื่อมต่อเครือข่ายอีกครั้งหลังจากการเชื่อมต่อวิทยุกลับมา
9. ย้ายโหนด
OTNS ช่วยให้ผู้ใช้ย้ายโหนดได้อย่างง่ายดายผ่าน OTNS-CLI
หรือ OTNS-Web
ย้ายโหนดผ่าน OTNS-CLI
วิธีย้ายโหนด 5 ไปยังตําแหน่งใหม่
> move 5 600 300 Done
เนื่องจากตอนนี้โหนด 5 อยู่ห่างจากเราเตอร์อื่นมาก โหนดเหล่านั้นจึงควรขาดการเชื่อมต่อต่อกัน และหลังจากครบ 12 วินาที (120 วินาทีในการจําลองเวลา) ทั้งคู่จะกลายเป็นผู้นําของพาร์ติชันของตัวเอง
ย้ายโหนดผ่าน OTNS-Web
ย้ายโหนด 5 กลับไปยังตําแหน่งเดิมโดยลาก สองพาร์ติชันควรรวมกลับไปเป็นพาร์ติชันเดียว
10. ลบโหนด
ลบโหนดผ่าน OTNS-CLI
ลบโหนด 8:
> del 8 Done
โหนด 8 ควรหายไปจากการจําลอง
ลบโหนดผ่าน OTNS-Web
เลือกโหนด 5 แล้วคลิกปุ่ม บน
Action Bar
เพื่อลบโหนด 5
Node 1
ควรกลายเป็นผู้นํา และ Node 7
ควรถอดออกเพราะเข้าถึงเราเตอร์ไม่ได้
ล้างการจําลอง (ลบโหนดทั้งหมด)
คุณล้างการจําลองได้โดยลบโหนดทั้งหมดผ่าน OTNS-Web
คลิกปุ่ม ใน
Action Bar.
โหนดทั้งหมดจะหายไปพร้อมกัน
ก่อนดําเนินการต่อ...
เพิ่มโหนดให้กับการจําลองด้วยตัวเอง เพื่อให้คุณสามารถดําเนินการต่อได้ในบทแนะนํานี้
11. บริบทของโหนด 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 OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
เปลี่ยนไปใช้บริบทโหนดอื่น
node 1> node 2 Done node 2>
ออกจากบริบทโหนด
node 1> exit Done >
12. ขอแสดงความยินดี
ขอแสดงความยินดี คุณเรียกใช้การจําลอง OTNS ครั้งแรกเรียบร้อยแล้ว
คุณได้เรียนรู้วิธีติดตั้ง OTNS และทรัพยากร Dependency แล้ว คุณสร้าง OpenThread สําหรับ OTNS และเริ่มต้นการจําลอง OTNS ด้วยอินสแตนซ์การจําลอง OpenOT คุณได้เรียนรู้วิธีจัดการกับการจําลองด้วยวิธีต่างๆ ผ่านทั้ง OTNS-CLI
และ OTNS-Web
ตอนนี้คุณทราบแล้วว่า OTNS คืออะไรและคุณจะใช้ OTNS เพื่อจําลองเครือข่าย OpenThread ได้อย่างไร
ขั้นตอนต่อไป
ลองดู Codelab เหล่านี้...
- การจําลองเครือข่ายเทรดด้วย OpenThread
- การจําลองเครือข่ายเทรดโดยใช้ OpenThread ใน Dock
- สร้างเครือข่ายเทรดด้วยกระดาน nRF52840 และ OpenThread