Menyimulasikan Jaringan Thread menggunakan OTNS

1. Pengantar

5abd22afa2f2ee9a.png

Apa itu Thread & OTNS

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

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

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

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
  • Verifikasi no-single-point-of-failure OpenThread

Codelab ini berfokus pada OTNS-CLI dan OTNS-Web. Fitur lain OTNS, seperti skrip Python, tidak dibahas.

Yang Anda butuhkan

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

2. Penginstalan

Instal Go

OTNS membutuhkan Go 1.13+ untuk mem-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 untuk memasukkan sandi untuk sudo.

Menginstal otn

Instal otns ke $GOPATH/bin:

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

Mari kita periksa apakah otns sudah diinstal 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 yang dapat dieksekusi OpenThread 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

Jika 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 cara mengaktifkan WebGL.

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

5. Kenali 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 mengetik perintah melalui OTNS-CLI. Baca referensi CLI OTNS untuk mengetahui daftar lengkap perintah. Jangan khawatir, Anda hanya akan menggunakan beberapa perintah ini di Codelab ini.

OTNS-Web

OTNS-Web adalah alat visualisasi dan pengelolaan jaringan OTNS. Ini menyediakan representasi visual dari node, pesan, dan link dari jaringan Thread yang disimulasikan. Perhatikan berbagai elemen OTNS-Web:

4c5b43509a2ca0d0.png

6. Menambahkan Node

Menambahkan node melalui OTNS-CLI

Tambahkan Router pada 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 Leader dalam beberapa detik:

6ca8c2e63ed9818d.png

Tambahkan node lainnya 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 digabungkan menjadi satu partisi. Anda akan melihat node di OTNS-WEB:

3ee67903c01aa612.png

Tambahkan node paling lambat tanggal OTNS-Web

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

420258bb92561146.png

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

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 dapat berjalan lebih cepat.

7. Sesuaikan Kecepatan

Saat ini, simulasi harus berjalan dengan kecepatan 1X, artinya waktu simulasi yang 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 tersebut lebih sering mengirim pesan daripada sebelumnya.

Setel kecepatan simulasi ke MAX

> speed max
Done

Sekarang OTNS berusaha sebaik mungkin untuk menyimulasikannya secepat mungkin, sehingga Anda akan melihat node yang mengirim pesan dalam jumlah besar.

Jeda simulasi

> speed 0
Done

Menyetel kecepatan simulasi ke 0 akan menjeda simulasi.

Pulihkan 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.png di Action Bar. Tombol-tombol akan menampilkan kecepatan simulasi saat ini dan dapat digunakan untuk menyesuaikan kecepatan simulasi dan menjeda/melanjutkan simulasi.

Percepat simulasi

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

Memperlambat simulasi

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

Jeda simulasi

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

Lanjutkan simulasi

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

Setel kecepatan simulasi ke 10X

Untuk menghemat waktu, gunakan

OTNS-CLI untuk menyesuaikan kecepatan simulasi ke

10X sehingga kita dapat mengamati perubahan topologi dalam jaringan dengan 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 Pemimpin saat ini (batas merah) 2 Router, klik sekali untuk memilihnya:

8c6a2e191cdae0c7.png

Matikan radio

Klik tombol 7ca085f470491dd4.png di Panel Tindakan untuk menonaktifkan radio node Pemimpin:

a3bf58d9d125f95f.png

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

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

e3d32f85c4a1b990.png

Jaringan Thread otomatis pulih dari kegagalan Leader dengan membentuk partisi baru dengan Leader baru. Partisi baru ini juga memiliki warna partisi baru.

Hidupkan radio

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

7370a7841861aa3a.png

Pemimpin harus terhubung kembali ke jaringan setelah konektivitas radio dipulihkan.

9. Memindahkan Node

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

Pindahkan node melalui OTNS-CLI

Pindahkan node 5 ke lokasi baru:

> move 5 600 300
Done

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

c06b4d0a4f183299.png

Memindahkan node melalui OTNS-Web

Pindahkan node 5 kembali ke lokasi awal dengan menariknya. Kedua partisi harus digabungkan kembali menjadi satu partisi:

9ba305c4c5a5f892.png

10. Menghapus Node

Hapus node melalui OTNS-CLI

Hapus node 8:

> del 8
Done

Node 8 akan hilang dari simulasi:

18156770d9f8bf83.png

Hapus node melalui OTNS-Web

Pilih node 5 dan klik tombol 7ff6afd565f4eafc.png di Action Bar untuk menghapus node 5:

d4079cceea0105f0.png

Node 1 harus menjadi Pemimpin dan Node 7 harus terlepas karena tidak dapat menjangkau Router apa 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 agar 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 node 1:

> node 1
Done
node 1>

Perintah CLI diubah menjadi node 1> , yang menunjukkan konteks node saat ini. Anda dapat mengetik perintah CLI OpenThread untuk dijalankan di 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 berhasil menjalankan simulasi OTNS pertama Anda.

Anda telah mempelajari cara menginstal OTNS dan dependensinya. Anda telah membuat 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 bagaimana Anda dapat menggunakan OTNS untuk menyimulasikan jaringan OpenThread.

Apa selanjutnya?

Lihat beberapa codelab ini...

Dokumen referensi