Menguji Jaringan Thread dengan Visualisasi

1. Pengantar

5abd22afa2f2ee9a.png

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

Memeriksa prasyarat paket

Pastikan semua prasyarat terpenuhi.

  1. Jalankan which otns untuk memeriksa apakah file otns yang dapat dieksekusi dapat ditelusuri di $PATH.
  2. Jalankan which wpantund untuk memastikan wpantund tersedia.
  3. 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.

4dd5b41bf7e71334.png

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.

ee443b66e0a6620b.png

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.

5c38e2c72519e620.png

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.

Dokumen referensi