1. Pengantar
Apa itu Thread, OpenThread, OTNS, dan Silk?
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.
Silk adalah platform pengujian yang sepenuhnya otomatis untuk memvalidasi fungsi, fitur, dan performa sistem OpenThread dengan perangkat sebenarnya.
Yang akan Anda pelajari
- Framework verifikasi fungsi OpenThread: Silk
- Membuat OpenThread untuk perangkat sebenarnya dengan fitur OTNS yang diaktifkan
- Gunakan antarmuka OTNS-Web untuk memantau status jaringan Thread yang terbentuk dengan menjalankan kasus pengujian Silk
Codelab ini berfokus pada penggunaan Silk dengan OTNS. Fitur lain dari Silk dan OTNS tidak dicakup.
Yang Anda butuhkan
Perangkat keras:
- 6 papan dev Nordic Semiconductor nRF52840
- 6 kabel USB ke USB Mikro untuk menyambungkan board
- hub USB
Software:
- Linux x86_64.
- Git.
- Go 1.11+.
- Browser web. OTNS-Web menggunakan browser web untuk menampilkan simulasi.
Prasyarat:
2. Prasyarat
Selesaikan Codelab dasar sebelumnya
- Pengantar Thread. Anda perlu mengetahui konsep dasar Thread untuk memahami apa yang diajarkan dalam Codelab ini.
- Membangun jaringan Thread dengan board nRF52840 dan OpenThread. Codelab ini mengasumsikan bahwa Anda telah berhasil membuat jaringan Thread.
- Menyimulasikan Jaringan Thread menggunakan OTNS. Codelab ini mengasumsikan bahwa Anda telah berhasil menjalankan alat OTNS.
Memeriksa prasyarat paket
Pastikan semua prasyarat terpenuhi.
- Jalankan
which otns
untuk memeriksa apakah fileotns
yang dapat dieksekusi dapat ditelusuri di$PATH
. - Jalankan
which wpantund
untuk memastikanwpantund
tersedia. - Pastikan paket toolchain ARM GNU, J-Link, dan
nrfjprog
tersedia semua.
Catatan: Lihat dokumentasi tertaut untuk mendapatkan panduan penyiapan. Prasyarat #1 adalah dari Simulasikan Jaringan Thread menggunakan OTNS dan lainnya berasal dari Membangun jaringan Thread dengan board nRF52840 dan OpenThread.
3. Setelan sutra
Untuk meng-clone Silk dan menyiapkan lingkungan, jalankan perintah berikut di direktori sumber:
$ git clone https://github.com/openthread/silk.git $ cd silk $ ./bootstrap.sh $ sudo make install-cluster
Menentukan file konfigurasi hardware
Agar Silk dapat mengumpulkan resource hardware pengujian yang tersedia dan terhubung ke mesin Anda, tentukan file hwconfig.ini
dalam format berikut:
[DEFAULT] ClusterID: 0 LayoutCenter: 300, 300 LayoutRadius: 100 [Dev-8A7D] HwModel: Nrf52840 HwRev: 1.0 InterfaceSerialNumber: E1A5012E8A7D USBInterfaceNumber: 1 DutSerial: 683536778
Alat bernama usbinfo
diinstal sebagai bagian dari Silk yang dapat digunakan untuk mengetahui Nomor Seri Antarmuka dan Nomor Antarmuka USB. DutSerial adalah nomor SN yang dicetak pada chip atau ditampilkan oleh usbinfo
untuk produk J-Link.
Kolom LayoutCenter
dan LayoutRadius
di bagian [DEFAULT]
menentukan bentuk tata letak saat perangkat divisualisasikan di UI web. Menetapkannya ke nilai-nilai yang disajikan di sini dapat menjadi titik awal yang baik.
Setelah itu, modul ini menentukan bagian untuk setiap perangkat pengujian dan memberikan informasi hardware yang relevan.
4. Mengompilasi OpenThread dengan OTNS diaktifkan
Membangun image dan melakukan flash
Secara default, perangkat OpenThread tidak memunculkan pesan terkait OTNS. Untuk mengizinkan board dev memunculkan pesan status untuk mencatat antarmuka yang penting bagi visualisasi OTNS, jalankan perintah berikut di direktori sumber OpenThread untuk membangun gambar FTD, dan konversikan ke format hex.
$ git clone https://github.com/openthread/ot-nrf528xx.git --recursive $ cd ot-nrf528xx $ ./script/bootstrap $ ./script/build nrf52840 USB_trans -DOT_COMMISSIONER=ON -DOT_JOINER=ON -DOT_OTNS=ON $ cd ./build/bin $ arm-none-eabi-objcopy -O ihex ot-ncp-ftd ot-ncp-ftd.hex
Untuk mem-flash board, ikuti petunjuk di langkah 4 Codelab Membuat jaringan Thread untuk menggunakan nrfjprog
. Setelah itu, hubungkan semua board melalui port USB nRF ke mesin host. Satu set kabel USB ke Micro-USB yang sama dapat diputus dari port J-Link dan dihubungkan ke port USB nRF pada board dev nRF52840. Dengan begitu, hanya dengan 6 kabel ini, eksekusi uji dapat dilakukan. Untuk menghindari kerepotan, gunakan 12 kabel dan hubungkan ke kedua port.
5. Menjalankan server OTNS dengan mode nyata
Menjalankan OTNS dengan parameter default memungkinkan pengguna menyimulasikan jaringan Thread. Untuk menggunakannya sebagai alat visualisasi untuk jaringan fisik yang sebenarnya, jalankan dengan:
otns -raw -real -ot-cli otns-silk-proxy
Argumen ini memberi tahu OTNS untuk mengharapkan pesan gRPC dan UDP yang menjelaskan cara memvisualisasikan jaringan Thread, bukan menjalankan beberapa proses ot-cli
untuk menyimulasikan jaringan. Browser Anda akan otomatis membuka halaman visualisasi dengan kanvas kosong.
6. Menjalankan kasus pengujian Silk dengan dukungan OTNS
Silk adalah platform pengujian yang sepenuhnya otomatis untuk memvalidasi fungsi, fitur, dan performa sistem OpenThread dengan perangkat sungguhan. Petunjuk dalam README project membahas cara menggunakannya.
File silk_run_test.py
yang terletak di silk/unit_tests
memberi Anda informasi awal. Silk memberikan dukungan OTNS saat menjalankan kasus pengujian. Karena layanan mode nyata OTNS sudah berjalan secara lokal, kita hanya perlu mengubah file silk_run_test.py
dengan lokasi yang diinginkan untuk file log output, skrip pengujian input, dan file hwconfig.ini
. Argumen -s localhost
memberi tahu Silk untuk mengirim pesan OTNS ke localhost
.
Misalnya, seseorang dapat menjalankan pengujian bernama ot_test_form_network.py
menggunakan modifikasi pada file silk_run_test.py
berikut. /opt/openthread_test/
adalah jalur default yang digunakan Silk untuk output log dan file konfigurasi, tetapi Anda dapat menggunakan jalur apa pun.
silk_run_test.py
import datetime
import os
from silk.tests import silk_run
RESULT_LOG_PATH = '/opt/openthread_test/results/' + 'silk_run_' + \
datetime.datetime.today().strftime('%m-%d') + '/'
CONFIG_PATH = '/opt/openthread_test/'
os.chdir('~/src/silk/silk/tests/')
timestamp = datetime.datetime.today().strftime('%m-%d-%H:%M')
run_log_path = RESULT_LOG_PATH + 'test_run_on_' + timestamp + '/'
argv = [
'tests/silk_run.py',
'-v2',
'-c', CONFIG_PATH + 'hwconfig.ini',
'-d', run_log_path,
'-s', 'localhost',
'ot_test_form_network.py'
]
silk_run.SilkRunner(argv=argv)
Visualisasi topologi jaringan yang terbentuk akan muncul di UI web OTNS.
Sudut kiri atas menunjukkan statistik visualisasi, versi OT, dan judul pengujian. Sudut kiri bawah memiliki kontrol jendela log, yang ditampilkan di sebelah kanan. Awalnya, node ditambahkan tetapi tidak ada jaringan yang terbentuk. Saat pengujian berlangsung, mode dan peran setiap node berubah, serta link akan dibuat.
7. Selamat
Selamat, Anda telah berhasil menjalankan pengujian Silk pada perangkat Thread fisik dan memvisualisasikannya menggunakan OTNS.
Anda menjalankan pengujian Silk menggunakan board pengembangan yang di-flash dengan firmware yang memiliki dukungan OTNS. Board melaporkan status mereka ke server Silk, yang memantau dan menggabungkan semuanya, lalu mengirimkannya ke layanan OTNS bersama dengan informasi pengujian lainnya. OTNS yang berjalan dalam mode nyata memvisualisasikan jaringan Thread di antarmuka web.
Apa langkah selanjutnya?
Coba jalankan kasus pengujian OpenThread lain yang disertakan dalam paket Silk.
Bacaan lebih lanjut
Lihat openthread.io dan Silk untuk berbagai resource OpenThread.