1. Pengantar
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.
- Instal Go dari https://golang.org/dl/
- 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
- Jalankan
which otns
untuk memeriksa apakah fileotns
yang dapat dieksekusi dapat ditelusuri di$PATH.
- 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
):
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
:
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:
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
:
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:
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:
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 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 hingga kecepatan mencapai MAX
: .
Simulasi perlambat
Anda dapat memperlambat simulasi dengan mengklik tombol .
Jeda simulasi
Klik tombol untuk menjeda simulasi saat berjalan. Tombol akan diubah menjadi .
Lanjutkan simulasi
Klik tombol untuk melanjutkan simulasi saat dijeda. Tombol akan diubah kembali ke .
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:
Matikan radio
Klik tombol di Panel Tindakan untuk menonaktifkan radio node Leader:
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:
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 di Action Bar
untuk memulihkan konektivitas radio:
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:
Memindahkan node melalui OTNS-Web
Pindahkan node 5 kembali ke lokasi awal dengan menariknya. Kedua partisi akan bergabung kembali menjadi satu partisi:
10. Menghapus Node
Hapus node melalui OTNS-CLI
Hapus node 8:
> del 8 Done
Node 8 akan menghilang dari simulasi:
Hapus node melalui OTNS-Web
Pilih node 5, lalu klik tombol pada Action Bar
untuk menghapus node 5:
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 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...
- Menyimulasikan jaringan Thread dengan OpenThread
- Menyimulasikan jaringan Thread menggunakan OpenThread di Docker
- Membangun jaringan Thread dengan board nRF52840 dan OpenThread