1. Pengantar
Apa yang dimaksud dengan Thread, OpenThread, OTNS, dan Silk?
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.
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 sungguhan dengan fitur OTNS yang diaktifkan
- Menggunakan antarmuka OTNS-Web untuk memantau status jaringan Thread yang dibentuk dengan menjalankan kasus uji Sutra
Codelab ini berfokus pada penggunaan Silk dengan OTNS. Fitur lain dari Silk dan OTNS tidak dibahas.
Yang Anda butuhkan
Perangkat keras:
- 6 board dev Nordic Semiconductor nRF52840
- 6 kabel USB ke Micro-USB untuk menghubungkan board
- hub USB
Software:
- Linux x86_64.
- Git.
- Buka 1.11+.
- Browser web. OTNS-Web menggunakan browser web untuk menampilkan simulasi.
Prasyarat:
2. Prasyarat
Menyelesaikan Codelab dasar sebelumnya
- Rangkaian Pesan Primer. Anda perlu mengetahui konsep dasar Thread untuk memahami apa yang diajarkan dalam Codelab ini.
- Membuat jaringan Thread dengan board nRF52840 dan OpenThread. Codelab ini mengasumsikan bahwa Anda telah berhasil mem-build 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 ARM GNU, J-Link, dan paket
nrfjprog
tersedia.
Catatan: Lihat dokumentasi tertaut untuk panduan penyiapan. Prasyarat #1 berasal dari Simulasikan Jaringan Thread menggunakan OTNS dan lainnya berasal dari Membuat jaringan Thread dengan papan nRF52840 dan OpenThread.
3. Penyiapan 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
Untuk memungkinkan Silk mengumpulkan resource hardware pengujian yang tersedia yang 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 Sutra 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 yang ditampilkan di sini bisa menjadi titik awal yang baik.
Setelah itu, bagian ini mendefinisikan bagian untuk setiap perangkat uji dan menyediakan informasi hardware yang relevan.
4. Kompilasi OpenThread dengan OTNS diaktifkan
Gambar bangunan dan berkedip
Secara default, perangkat OpenThread tidak memunculkan pesan terkait OTNS. Untuk memungkinkan board dev memunculkan pesan status ke dalam log antarmuka yang penting bagi visualisasi OTNS, jalankan perintah berikut di bawah direktori sumber OpenThread untuk mem-build image 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 pada langkah 4 di Codelab jaringan Build a Thread untuk menggunakan nrfjprog
. Setelah itu, hubungkan semua board melalui port USB nRF ke mesin host. Kumpulan kabel USB ke Micro-USB yang sama dapat terputus dari port J-Link dan terhubung ke port USB nRF pada board dev nRF52840. Dengan demikian, eksekusi uji hanya dapat dilakukan dengan 6 kabel ini. 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 jaringan Thread harus divisualisasikan, bukan menjalankan beberapa proses ot-cli
untuk menyimulasikan jaringan. Browser Anda akan otomatis membuka halaman visualisasi dengan kanvas kosong.
6. Menjalankan kasus uji Sutra dengan dukungan OTNS
Silk adalah platform pengujian yang sepenuhnya otomatis untuk memvalidasi fungsi, fitur, dan performa sistem OpenThread dengan perangkat sungguhan. Petunjuk dalam project README membahas cara menggunakannya.
File silk_run_test.py
yang berada di silk/unit_tests
memberikan 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 berikut pada file silk_run_test.py
. /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. Pojok 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 akan berubah dan link akan terbentuk.
7. Selamat
Selamat, Anda berhasil menjalankan pengujian Sutra pada perangkat Thread fisik dan memvisualisasikannya menggunakan OTNS.
Anda telah mengeksekusi pengujian Silk menggunakan board pengembangan yang di-flash dengan firmware yang memiliki dukungan OTNS. Boards melaporkan status mereka ke server Silk, yang memantau dan menggabungkan semuanya, dan mengirimkannya ke layanan OTNS bersama dengan informasi pengujian lainnya. OTNS yang berjalan dalam mode nyata memvisualisasikan jaringan Thread di antarmuka web.
Apa selanjutnya?
Coba jalankan kasus pengujian OpenThread lainnya yang disertakan dalam paket Silk.
Bacaan lebih lanjut
Lihat openthread.io dan Silk untuk mengetahui berbagai resource OpenThread.