Menyimulasikan Jaringan Thread menggunakan OTNS

1. Pengantar

5abd22afa2f2ee9a.pngS

Apa itu Thread & OTNS

Thread adalah protokol jaringan mesh nirkabel berdaya rendah berbasis IP yang memungkinkan komunikasi antarperangkat dan perangkat ke cloud dengan aman. Jaringan Thread dapat beradaptasi dengan perubahan topologi untuk menghindari titik tunggal kegagalan.

OpenThread yang dirilis oleh Google merupakan implementasi open source Thread. Meskipun ukuran kode dan jejak memorinya kecil, OpenThread mendukung semua fitur yang ditentukan dalam Spesifikasi Thread.

Simulator Jaringan OpenThread (OTNS) dapat digunakan untuk menyimulasikan jaringan Thread dengan menjalankan simulasi node OpenThread di platform posix. OTNS menyediakan antarmuka Web (OTNS-Web) yang mudah digunakan untuk memvisualisasikan dan mengoperasikan jaringan Thread yang disimulasikan.

Yang akan Anda pelajari

  • Menginstal OTNS dan dependensinya
  • Membuat OpenThread untuk OTNS
  • Cara menambahkan/memindahkan/menghapus node di OTNS-Web
  • Menggunakan fitur berguna OTNS-Web lainnya untuk mengoperasikan simulasi jaringan
  • Memverifikasi bahwa tidak ada titik kegagalan tunggal di OpenThread

Codelab ini berfokus pada OTNS-CLI dan OTNS-Web. Fitur OTNS lainnya, seperti pembuatan skrip Python, tidak dicakup.

Yang Anda butuhkan

  • Linux x86_64 atau Mac OS.
  • Git.
  • Go 1.13+.
  • Browser web. OTNS-Web menggunakan browser web untuk menampilkan simulasi.
  • Pengantar Thread. Anda perlu mengetahui konsep dasar Thread untuk memahami apa yang diajarkan dalam Codelab ini.

2. Penginstalan

Instal Go

OTNS memerlukan Go 1.13+ untuk di-build.

  1. Instal Go dari https://golang.org/dl/
  2. Tambahkan $(go env GOPATH)/bin (biasanya $HOME/go/bin) ke $PATH:
$ export PATH=$PATH:$(go env GOPATH)/bin

Mendapatkan kode OTNS

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

Menginstal Dependensi

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Anda mungkin diminta memasukkan sandi untuk sudo.

Menginstal OAuth

Instal otns ke $GOPATH/bin:

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Mari periksa apakah otns terinstal dengan benar

  1. Jalankan which otns untuk memeriksa apakah file otns yang dapat dieksekusi dapat ditelusuri di $PATH.
  2. Jika perintah otns tidak ditemukan, pastikan Anda telah menambahkan $(go env GOPATH)/bin ke $PATH.

3. Membuat OpenThread untuk OTNS

Mendapatkan kode OpenThread dari GitHub

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

Membuat OpenThread dengan 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

Anda dapat menemukan file OpenThread yang dapat dieksekusi di direktori build:

$ ls ~/src/openthread/build/simulation/examples/apps/cli/
ot-cli-ftd        ot-cli-mtd        ot-cli-radio

Sekarang saatnya menjalankan OTNS...

4. Jalankan OTNS

Jalankan otns:

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Setelah berhasil dimulai, OTNS akan memasuki konsol CLI (OTNS-CLI) dan meluncurkan browser web untuk visualisasi dan pengelolaan jaringan (OTNS-Web):

a0e05178d66929b1.png

Jika Anda hanya dapat melihat halaman kosong untuk OTNS-Web, kemungkinan WebGL tidak diaktifkan di browser Anda. Lihathttps://superuser.com/a/836833 tentang cara mengaktifkan WebGL.

Di bagian berikut, Anda akan mempelajari cara mengelola simulasi OTNS melalui OTNS-CLI dan OTNS-Web.

5. Mengenal OTNS-CLI & OTNS-Web

OTNS-CLI

OTNS-CLI menyediakan Antarmuka Command Line (CLI) untuk mengelola simulasi OTNS.

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Anda dapat mengetikkan perintah melalui OTNS-CLI. Lihat referensi OTNS CLI untuk melihat daftar lengkap perintah. Jangan khawatir, Anda hanya akan menggunakan beberapa perintah ini dalam Codelab ini.

OTNS-Web

OTNS-Web adalah alat pengelolaan dan visualisasi jaringan OTNS. Kode ini memberikan representasi visual node, pesan, dan link dari simulasi jaringan Thread. Perhatikan berbagai elemen OTNS-Web:

4c5b43509a2ca0d0.pngS

6. Tambahkan Node

Menambahkan node melalui OTNS-CLI

Tambahkan Router di posisi (300, 100)

> add router x 300 y 100
1
Done

Anda akan melihat node yang dibuat di OTNS-Web. Node dimulai sebagai Router dan menjadi Pemimpin dalam beberapa detik:

6ca8c2e63ed9818d.pngS

Tambahkan lebih banyak node melalui 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

Tunggu beberapa detik agar node bergabung menjadi satu partisi. Anda akan melihat node di OTNS-WEB:

3ee67903c01aa612.pngS

Tambahkan node paling lambat OTNS-Web

Anda juga dapat menambahkan node melalui OTNS-Web. Klik tombol New Router di Action Bar. Anda akan melihat node yang dibuat tepat di atas tombol New Router. Tarik node agar mendekati Pemimpin yang Anda buat melalui OTNS-CLI. Semua node pada akhirnya akan digabungkan menjadi satu partisi:

420258bb92561146.pngS

Klik juga tombol FED, MED, dan SED pada Panel Tindakan untuk membuat jenis node lain. Tarik ke posisi di dekat node yang ada untuk dipasang ke jaringan Thread:

fe15d6f9726a099e.png

Sekarang Anda telah membuat jaringan Thread dari satu partisi yang berisi banyak node. Di bagian berikutnya, kita akan menyesuaikan kecepatan simulasi agar simulasi berjalan lebih cepat.

7. Sesuaikan Kecepatan

Saat ini, simulasi seharusnya berjalan pada kecepatan 1X, yang berarti waktu simulasi yang telah berlalu sejauh ini sama dengan waktu sebenarnya sejak kita membuat node pertama.

Sesuaikan kecepatan hingga OTNS-CLI

Anda dapat menyesuaikan kecepatan simulasi melalui OTNS-CLI.

Setel kecepatan simulasi ke 100X

> speed 100
Done

Anda akan melihat node mengirim pesan jauh lebih sering daripada sebelumnya.

Setel kecepatan simulasi ke MAX

> speed max
Done

Sekarang, OTNS mencoba yang terbaik untuk melakukan simulasi secepat mungkin, sehingga Anda akan melihat node mengirimkan pesan dalam jumlah besar.

Jeda simulasi

> speed 0
Done

Menyetel kecepatan simulasi ke 0 akan menjeda simulasi.

Memulihkan simulasi dengan kecepatan normal

> speed 1
Done

Menyetel kecepatan simulasi ke nilai yang lebih besar dari 0 akan melanjutkan simulasi.

Sesuaikan kecepatan hingga OTNS-Web

Tombol kontrol kecepatan

Temukan tombol kontrol kecepatan 9329157c1bd12672.pngS di Action Bar. Tombol menunjukkan kecepatan simulasi saat ini dan dapat digunakan untuk menyesuaikan kecepatan simulasi serta menjeda/melanjutkan simulasi.

Percepat simulasi

Anda dapat mempercepat simulasi dengan mengklik tombol 39b88331779277ad.png hingga kecepatan mencapai MAX: f5f460b2586d299b.png.

Simulasi perlambat

Anda dapat memperlambat simulasi dengan mengklik tombol 31cca8d5b52fa900.pngS.

Jeda simulasi

Klik tombol 46cc2088c9aa7ab6.pngS untuk menjeda simulasi saat berjalan. Tombol akan diubah menjadi ce25eda3496ffcd4.png.

Lanjutkan simulasi

Klik tombol ce25eda3496ffcd4.png untuk melanjutkan simulasi saat dijeda. Tombol akan diubah kembali ke 46cc2088c9aa7ab6.pngS.

Setel kecepatan simulasi ke 10X

Untuk menghemat waktu, gunakan

OTNS-CLI untuk menyesuaikan kecepatan simulasi menjadi

10X agar kita dapat mengamati perubahan topologi dalam jaringan dengan jauh lebih cepat.

> speed 10
Done

8. Aktifkan/Nonaktifkan Radio

Sekarang, simulasi harus berisi 2 Router (bentuk segi enam) dan banyak turunan, serta berjalan dengan kecepatan 10X.

Temukan Leader (batas merah) saat ini dari 2 Router, sekali klik untuk memilihnya:

8c6a2e191cdae0c7.pngS

Matikan radio

Klik tombol 7ca085f470491dd4.pngS di Panel Tindakan untuk menonaktifkan radio node Leader:

a3bf58d9d125f95f.png

Pemimpin tidak akan dapat mengirim atau menerima pesan jika radio dinonaktifkan.

Tunggu sekitar 12 dtk (120 detik dalam simulasi waktu) hingga Router lain menjadi Pemimpin baru:

e3d32f85c4a1b990.png

Jaringan Thread pulih dari kegagalan Pemimpin secara otomatis dengan membentuk partisi baru dengan Pemimpin baru. Partisi baru juga memiliki warna partisi baru.

Hidupkan radio

Pilih Pemimpin yang radionya dinonaktifkan. Klik tombol 2d9cecb8612b42aa.pngS di Action Bar untuk memulihkan konektivitas radio:

7370a7841861aa3a.png

Pemimpin harus dipasang kembali ke jaringan setelah konektivitas radio dipulihkan.

9. Memindahkan Node

OTNS memungkinkan pengguna memindahkan node dengan mudah melalui OTNS-CLI atau OTNS-Web.

Memindahkan node melalui OTNS-CLI

Pindahkan node 5 ke lokasi baru:

> move 5 600 300
Done

Karena sekarang node 5 jauh dari Router lain, mereka akan kehilangan konektivitas satu sama lain, dan setelah sekitar 12 detik (120 detik dalam simulasi waktu) keduanya menjadi Leader di partisi mereka sendiri:

c06b4d0a4f183299.png

Memindahkan node melalui OTNS-Web

Pindahkan node 5 kembali ke lokasi awal dengan menariknya. Kedua partisi akan bergabung kembali menjadi satu partisi:

9ba305c4c5a5f892.pngS

10. Menghapus Node

Hapus node melalui OTNS-CLI

Hapus node 8:

> del 8
Done

Node 8 akan menghilang dari simulasi:

18156770d9f8bf83.png

Hapus node melalui OTNS-Web

Pilih node 5, lalu klik tombol 7ff6afd565f4eafc.pngS pada Action Bar untuk menghapus node 5:

d4079cceea0105f0.png

Node 1 harus menjadi Pemimpin dan Node 7 harus dilepas karena tidak dapat menjangkau Router mana pun.

Hapus simulasi (hapus semua node)

Anda dapat menghapus simulasi dengan menghapus semua node melalui OTNS-Web.

Klik tombol 89618191721e79a0.png di Action Bar. Semua node akan hilang sekaligus.

Sebelum melanjutkan...

Tambahkan beberapa node ke simulasi sendiri sehingga Anda dapat melanjutkan tutorial ini.

11. Konteks Node OTNS-CLI

OTNS-CLI menyediakan mode konteks node untuk memudahkan interaksi dengan node guna membantu developer mendiagnosis status node.

Masuk ke mode konteks node

Masukkan konteks node dari node 1:

> node 1
Done
node 1>

Perintah CLI diubah menjadi node 1> , yang menunjukkan konteks node saat ini. Anda dapat mengetik perintah OpenThread CLI untuk dieksekusi pada node seolah-olah Anda berinteraksi dengan node secara langsung.

Menjalankan perintah dalam konteks node

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

Beralih ke konteks node lain

node 1> node 2
Done
node 2> 

Keluar dari konteks node

node 1> exit
Done
>

12. Selamat

Selamat, Anda telah berhasil menjalankan simulasi OTNS pertama Anda.

Anda telah mempelajari cara menginstal OTNS dan dependensinya. Anda telah membangun OpenThread untuk OTNS dan memulai simulasi OTNS dengan instance simulasi OpenThread. Anda telah mempelajari cara memanipulasi simulasi dengan berbagai cara melalui OTNS-CLI dan OTNS-Web.

Anda sekarang tahu apa itu OTNS dan cara menggunakan OTNS untuk menyimulasikan jaringan OpenThread.

Apa langkah selanjutnya?

Lihat beberapa codelab ini...

Dokumen referensi