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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

1. บทนำ

5abd22afa2f2ee9a.png

ชุดข้อความและ 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+ ในการสร้าง

  1. ติดตั้ง Go จาก https://golang.org/dl/
  2. เพิ่ม $(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 อย่างถูกต้องแล้วหรือไม่

  1. เรียกใช้ which otns เพื่อตรวจสอบว่าไฟล์ปฏิบัติการของ otns นั้นค้นหาได้ใน $PATH. หรือไม่
  2. หากไม่พบคําสั่ง 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)

a0e05178d66929b1.png

หากคุณเห็นหน้าว่างสําหรับ 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&#39 โดยจะแสดงภาพโหนด ข้อความ และลิงก์ของเครือข่ายเทรดจําลอง บันทึกองค์ประกอบต่างๆ ของ OTNS-Web

รูปภาพ

6. เพิ่มโหนด

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

เพิ่มเราเตอร์ที่ตําแหน่ง (300, 100)

> add router x 300 y 100
1
Done

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

6ca8c2e63ed9818d.png

เพิ่มโหนดผ่าน 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 ดังนี้

3ee67903c01aa612.png

เพิ่มโหนดภายในวันที่ OTNS-Web

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

420258bb92561146.png

หรือคลิกปุ่ม FED, MED และ SED ในแถบการทํางานเพื่อสร้างโหนดประเภทอื่นๆ ลากโหนดเหล่านั้นไปยังตําแหน่งใกล้กับโหนดที่มีอยู่เพื่อแนบไปกับเครือข่ายเทรดนั้น:

fe15d6f9726a099e.png

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

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

ปุ่มควบคุมความเร็ว

ค้นหาปุ่มควบคุมความเร็ว 9329157c1bd12672.png บน Action Bar ปุ่มจะแสดงความเร็วในการจําลองในปัจจุบัน และสามารถนํามาใช้ในการปรับความเร็วในการจําลองและหยุดการจําลองชั่วคราวหรือเล่นต่อได้

จําลองความเร็ว

คุณสามารถเร่งการจําลองได้โดยคลิกปุ่ม 39b88331779277ad.png จนกว่าความเร็วจะถึง MAX: f5f460b2586d299b.png

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

คุณทําให้การจําลองช้าลงได้โดยคลิกปุ่ม 31cca8d5b52fa900.png

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

คลิกปุ่ม ขนาด 46cc2088c9aa7ab6.png เพื่อหยุดการจําลองชั่วคราวเมื่อการจําลองทํางานอยู่ ปุ่มจะเปลี่ยนเป็น ce25eda3496ffcd4.png

เล่นการจําลองต่อ

คลิกปุ่ม ce25eda3496ffcd4.png เพื่อจําลองการจําลองเมื่อหยุดชั่วคราว ปุ่มนี้จะเปลี่ยนกลับเป็น ขนาด 46cc2088c9aa7ab6.png

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

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

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

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

> speed 10
Done

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

ตอนนี้การจําลองควรมีเราเตอร์ 2 รายการ (รูปร่างหกเหลี่ยม) และเด็กจํานวนมาก และทํางานด้วยความเร็ว 10 เท่า

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

8c6a2e191cdae0c7.png

ปิดวิทยุ

คลิกปุ่ม 7ca085f470491dd4.png ในแถบการดําเนินการเพื่อปิดวิทยุของโหนดผู้นํา

a3bf58d9d125f95f.png

ผู้นําจะรับหรือส่งข้อความโดยปิดวิทยุไม่ได้

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

e3d32f85c4a1b990.png

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

เปิดวิทยุ

เลือกผู้นําที่ปิดวิทยุไว้ คลิกที่ปุ่ม 2d9cecb8612b42aa.png บน Action Bar เพื่อคืนค่าการเชื่อมต่อวิทยุ:

7370a7841861aa3a.png

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

9. ย้ายโหนด

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

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

วิธีย้ายโหนด 5 ไปยังตําแหน่งใหม่

> move 5 600 300
Done

เนื่องจากตอนนี้โหนด 5 อยู่ห่างจากเราเตอร์อื่นมาก โหนดเหล่านั้นจึงควรขาดการเชื่อมต่อต่อกัน และหลังจากครบ 12 วินาที (120 วินาทีในการจําลองเวลา) ทั้งคู่จะกลายเป็นผู้นําของพาร์ติชันของตัวเอง

c06b4d0a4f183299.png

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

ย้ายโหนด 5 กลับไปยังตําแหน่งเดิมโดยลาก สองพาร์ติชันควรรวมกลับไปเป็นพาร์ติชันเดียว

9ba305c4c5a5f892.png

10. ลบโหนด

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

ลบโหนด 8:

> del 8
Done

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

18156770d9f8bf83.png

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

เลือกโหนด 5 แล้วคลิกปุ่ม 7ff6afd565f4eafc.png บน Action Bar เพื่อลบโหนด 5

d4079cceea0105f0.png

Node 1 ควรกลายเป็นผู้นํา และ Node 7 ควรถอดออกเพราะเข้าถึงเราเตอร์ไม่ได้

ล้างการจําลอง (ลบโหนดทั้งหมด)

คุณล้างการจําลองได้โดยลบโหนดทั้งหมดผ่าน OTNS-Web

คลิกปุ่ม 89618191721e79a0.png ใน 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 เหล่านี้...

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