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

Menguji Jaringan Thread dengan Visualisasi

1. Pengantar

5abd22afa2f2ee9a.png

Apa itu Thread, OpenThread, OTNS, dan Silk?

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.

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 aktual dengan fitur OTNS yang diaktifkan
  • Gunakan antarmuka OTNS-Web untuk memantau status jaringan Thread yang dibentuk 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 Semikonduktor Nordik nRF52840
  • 6 kabel USB ke USB Mikro untuk menghubungkan board
  • hub USB

Perangkat lunak:

  • Linux x86_64.
  • Lakukan Git.
  • Buka 1.11+.
  • Browser web. OTNS-Web menggunakan browser web untuk menampilkan simulasi.

Prasyarat:

2. Prasyarat

Menyelesaikan Codelab dasar sebelumnya

Memeriksa prasyarat paket

Mari kita pastikan semua prasyarat terpenuhi.

  1. Jalankan which otns untuk memeriksa apakah otns yang dapat dieksekusi dapat ditelusuri di $PATH.
  2. Jalankan which wpantund untuk memastikan wpantund tersedia.
  3. Pastikan semua paket toolchain GNU, J-Link, dan nrfjprog dari ARM tersedia.
  4. Pastikan biner OpenThread dapat dibuat, menjalankan make -f examples/Makefile-nrf52840 di bawah folder openthread.

Catatan: Lihat dokumentasi tertaut untuk mendapatkan panduan penyiapan. Prasyarat #1 adalah dari Simulasikan Jaringan Thread menggunakan OTNS dan lainnya dari Membuat jaringan Thread dengan board nRF52840 dan OpenThread.

3 Penyiapan sutra

Untuk meng-clone Silk dan menyiapkan lingkungan, jalankan perintah berikut di bagian 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 komputer 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] mendefinisikan bentuk tata letak saat perangkat divisualisasikan di UI web. Menetapkan nilai-nilai tersebut di sini dapat menjadi titik awal yang baik.

Setelah itu, kode ini menentukan bagian untuk setiap perangkat uji dan memberikan informasi hardware yang relevan.

4. Mengompilasi OpenThread dengan OTNS diaktifkan

Membuat gambar dan berkedip

Secara default, perangkat OpenThread tidak memancarkan pesan terkait OTNS. Agar papan dev dapat menampilkan pesan status ke log antarmuka yang penting untuk visualisasi OTNS, jalankan perintah berikut di bawah direktori sumber OpenThread untuk membuat gambar FTD, dan konversikan ke format heksa.

$ 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 dari Membuat Codelab jaringan 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 dilepas dari port J-Link dan dihubungkan ke port USB nRF pada dev board nRF52840. Jadi, dengan hanya 6 eksekusi uji kabel ini dapat dilakukan. Untuk menghindari kerepotan, gunakan 12 kabel dan sambungkan ke kedua port.

5. Menjalankan server OTNS dengan mode asli

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 bagaimana jaringan Thread harus divisualisasikan, daripada menjalankan beberapa proses ot-cli untuk menyimulasikan jaringan. Browser Anda akan otomatis membuka halaman visualisasi dengan kanvas kosong.

4dd5b41bf7e71334.png

6. Menjalankan kasus pengujian Sutra dengan dukungan OTNS

Silk adalah platform pengujian yang sepenuhnya otomatis untuk memvalidasi fungsi, fitur, dan performa sistem OpenThread dengan perangkat sebenarnya. Petunjuk dalam project README membahas cara menggunakannya.

File silk_run_test.py yang terletak di silk/unit_tests memberi Anda awal. Silk memberikan dukungan OTNS saat menjalankan kasus pengujian. Karena layanan mode nyata OTNS sudah berjalan secara lokal, kita hanya perlu memodifikasi 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, Anda dapat menjalankan pengujian bernama ot_test_form_network.py menggunakan modifikasi berikut untuk 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

Pojok 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 berubah, dan link terbentuk.

5c38e2c72519e620.png

7. Selamat

Selamat, Anda telah berhasil menjalankan pengujian Silk di perangkat Thread fisik dan memvisualisasikannya menggunakan OTNS.

Anda menjalankan pengujian Silk menggunakan papan pengembangan yang di-flash dengan firmware yang memiliki dukungan OTNS. Dewan melaporkan statusnya ke server Silk, yang memantau dan mengumpulkan semuanya, dan mengirimkannya ke layanan OTNS beserta 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 berbagai resource OpenThread.

Dokumen referensi