1. Pengantar
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.
- 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 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
- 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 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
):
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
:
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:
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
:
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:
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:
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 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 hingga kecepatan mencapai MAX
: .
Memperlambat simulasi
Anda dapat memperlambat simulasi dengan mengklik tombol .
Jeda simulasi
Klik tombol untuk menjeda simulasi saat simulasi berjalan. Tombol akan diubah menjadi .
Lanjutkan simulasi
Klik tombol untuk melanjutkan simulasi saat dijeda. Tombol akan diubah kembali menjadi .
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:
Matikan radio
Klik tombol di Panel Tindakan untuk menonaktifkan radio node Pemimpin:
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:
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 di Action Bar
untuk memulihkan konektivitas radio:
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:
Memindahkan node melalui OTNS-Web
Pindahkan node 5 kembali ke lokasi awal dengan menariknya. Kedua partisi harus digabungkan kembali menjadi satu partisi:
10. Menghapus Node
Hapus node melalui OTNS-CLI
Hapus node 8:
> del 8 Done
Node 8 akan hilang dari simulasi:
Hapus node melalui OTNS-Web
Pilih node 5 dan klik tombol di Action Bar
untuk menghapus node 5:
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 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...
- Menyimulasikan jaringan Thread dengan OpenThread
- Menyimulasikan jaringan Thread menggunakan OpenThread di Docker
- Membuat jaringan Thread dengan board nRF52840 dan OpenThread