Menguji Jaringan Thread dengan Visualisasi

1. Pengantar

5abd22afa2f2ee9a.pngS

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

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 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.

4dd5b41bf7e71334.pngS

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.

ee443b66e0a6620b.png

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.

5c38e2c72519e620.pngS

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.

Dokumen referensi