Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

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 antar-perangkat dan cloud-ke-perangkat 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 jaringan Thread simulasi.

Yang akan Anda pelajari

  • Menginstal OTNS dan dependensinya
  • Membuat OpenThread untuk OTNS
  • Cara menambahkan/memindahkan/menghapus node di OTNS-Web
  • Menggunakan fitur OTNS-Web lainnya yang berguna untuk mengoperasikan simulasi jaringan
  • Memverifikasi no-point-of-Failure 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.
  • Lakukan Git.
  • Buka 1.11+.
  • Browser web. OTNS-Web menggunakan browser web untuk menampilkan simulasi.
  • Thread Primer. Anda perlu mengetahui konsep dasar Thread untuk memahami apa yang diajarkan dalam Codelab ini.

2. Penginstalan

Instal Go

OTNS memerlukan Go 1.11+ 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

Instal Dependensi

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

Anda mungkin diminta memasukkan sandi untuk sudo.

Menginstal OTP

Instal otns ke $GOPATH/bin:

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

Mari kita periksa apakah otns 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/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

Anda dapat menemukan file executable OpenThread di direktori output:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

macOS

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Sekarang saatnya menjalankan OTNS...

4. Jalankan OTNS

Jalankan otns:

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

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

a0e05178d66929b1.png

Jika Anda hanya dapat melihat halaman kosong untuk OTNS-Web, kemungkinan WebGL tidak diaktifkan di browser. 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. Mengenal OTNS-CLI & OTNS-Web

OTNS-CLI

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

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Anda dapat mengetik perintah melalui OTNS-CLI. Lihat 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 pengelolaan dan visualisasi jaringan OTNS. Ini memberikan representasi visual dari node, pesan, dan link dari jaringan Thread simulasi. Perhatikan berbagai elemen OTNS-Web:

4c5b43509a2ca0d0.png

6. Tambahkan 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 pada OTNS-Web

Anda juga dapat menambahkan node melalui OTNS-Web. Klik tombol New Router dari Action Bar. Anda akan melihat node yang dibuat tepat di atas tombol New Router. Tarik node ke dekat Leader yang Anda buat melalui OTNS-CLI. Semua node pada akhirnya harus digabungkan ke dalam satu partisi:

420258bb92561146.png

Klik juga tombol FED, MED, dan SED pada Panel Tindakan untuk membuat jenis node lain. Tarik ke posisi dekat node yang ada untuk melampirkannya 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 untuk membuat simulasi berjalan lebih cepat.

7. Sesuaikan Kecepatan

Saat ini, simulasi harus berjalan pada kecepatan 1X, yang berarti bahwa waktu simulasi yang dilalui sejauh ini sama dengan waktu sebenarnya sejak kami membuat node pertama.

Sesuaikan kecepatan sampai OTNS-CLI

Anda dapat menyesuaikan kecepatan simulasi melalui OTNS-CLI.

Tetapkan kecepatan simulasi ke 100X

> speed 100
Done

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

Tetapkan kecepatan simulasi ke MAX

> speed max
Done

Sekarang, OTNS mencoba melakukan yang terbaik untuk menyimulasikannya secepat mungkin, jadi Anda akan melihat node yang 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

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

Sesuaikan kecepatan sampai OTNS-Web

Tombol kontrol kecepatan

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

Mempercepat simulasi

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

Simulasi melambat

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

Jeda simulasi

Klik tombol 46cc2088c9aa7ab6.png 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 menjadi 46cc2088c9aa7ab6.png.

Tetapkan kecepatan simulasi ke 10X

Untuk menghemat waktu, gunakan

OTNS-CLI untuk menyesuaikan kecepatan simulasi menjadi

10X sehingga kami dapat mengamati perubahan topologi di jaringan dengan lebih cepat.

> speed 10
Done

8 Aktifkan/Nonaktifkan Radio

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

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

8c6a2e191cdae0c7.png

Matikan radio

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

a3bf58d9d125f95f.png

Pimpinan tidak dapat mengirim atau menerima pesan dengan radio dinonaktifkan.

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

e3d32f85c4a1b990.png

Jaringan Thread dipulihkan dari kegagalan Leader secara otomatis dengan membentuk partisi baru dengan Leader baru. Partisi baru juga memiliki warna partisi baru.

Hidupkan radio

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

7370a7841861aa3a.png

Pemimpin harus memasang 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 lain, mereka harus kehilangan konektivitas satu sama lain, dan setelah sekitar 12s (120s dalam waktu simulasi) keduanya menjadi Pemimpin partisi mereka sendiri:

c06b4d0a4f183299.png

Memindahkan node melalui OTNS-Web

Pindahkan node 5 kembali ke lokasi asli dengan menarik Kedua partisi ini harus digabungkan kembali ke dalam satu partisi:

9ba305c4c5a5f892.png

10. Hapus 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, lalu klik tombol 7ff6afd565f4eafc.png di Action Bar untuk menghapus node 5:

d4079cceea0105f0.png

Node 1 harus menjadi Leader dan Node 7 harus dilepas karena tidak dapat menjangkau Router apa pun.

Hapus simulasi (menghapus semua node)

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

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

Sebelum melanjutkan...

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

11. Konteks Node OTNS-CLI

OTNS-CLI menyediakan mode konteks node untuk interaksi yang mudah 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 OpenThread CLI 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 telah 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 OpenThread simulasi instance. 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