İş Parçacık Ağını Görselleştirme ile Test Etme

1. Giriş

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS ve Silk nedir?

Thread, IP'ye dayalı ve düşük güçle çalışan kablosuz örgü ağ iletişimi protokolüdür. Bu şekilde, cihazlar arası ve cihazlar arası güvenli iletişimlere olanak tanır. İş parçacığı ağları, tek hata noktasını önlemek için topoloji değişikliklerine uyum sağlayabilir.

Google tarafından yayınlanan OpenThread, Thread'in açık kaynaklı bir uygulamasıdır. OpenThread, küçük kod boyutuna ve bellek ayak izine rağmen İleti Dizisi Spesifikasyonu'nda tanımlanan tüm özellikleri destekler.

OpenThread Network Simülatörü (OTNS), posix platformlarında simüle edilmiş OpenThread düğümleri çalıştırarak İş Parçacığının ağlarını simüle etmek için kullanılabilir. OTNS, simülasyonu yapılan İş Parçacık ağlarını görselleştirmek ve çalıştırmak için kullanımı kolay bir Web arayüzü (OTNS-Web) sunar.

Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için kullanılan tam otomatik bir test platformudur.

Neler öğreneceksiniz?

  • OpenThread işlevinin doğrulama çerçevesi: İpek
  • OTNS özelliği etkinleştirilmiş gerçek cihazlar için OpenThread oluşturma
  • İpek testi destek kayıtlarını çalıştırarak oluşturulan İş Parçacığının durumunu izlemek için OTNS-Web arayüzünü kullanın

Bu codelab, İpek'i OTNS ile kullanmaya odaklanmaktadır. İpek ve OTNS'nin diğer özellikleri kapsam dışıdır.

Gerekenler

Donanım:

  • 6 Nordic Semiconductor nRF52840 geliştirme kartları
  • Kartları bağlamak için 6 adet USB-Mikro USB kablosu
  • USB çoğaltıcı

Yazılım:

  • Linux x86_64 ile sınırlıdır.
  • Git.
  • Go 1.11 ve sonraki sürümler.
  • Web tarayıcısı. OTNS-Web, simülasyonları görüntülemek için bir web tarayıcısı kullanır.

Ön koşullar:

2. Ön koşullar

Önceki temel Codelab uygulamalarını tamamlayın

Paket ön koşullarını kontrol etme

Tüm ön koşulların karşılandığından emin olalım.

  1. otns yürütülebilir dosyasının $PATH içinde aranabilir olup olmadığını kontrol etmek için which otns komutunu çalıştırın.
  2. wpantund hizmetinin kullanılabilir olduğundan emin olmak için which wpantund aracını çalıştırın.
  3. ARM GNU araç zinciri, J-Link ve nrfjprog paketlerinin mevcut olduğundan emin olun.
  4. openthread klasörünün altında make -f examples/Makefile-nrf52840 çalıştırarak bir OpenThread ikili programının oluşturulabildiğinden emin olun.

Not: Kurulum konusunda rehberlik almak için lütfen bağlantılı dokümanlara bakın. 1. koşul, OTNS kullanarak ileti dizisi ağlarını simüle etme, diğerleri ise nRF52840 kartları ve OpenThread ile bir İş Parçacık ağı oluşturma kaynaklıdır.

3. İpek kurulumu

İpeği klonlamak ve ortamı ayarlamak için kaynak dizininizin altında aşağıdaki komutları çalıştırın:

$ git clone https://github.com/openthread/silk.git
$ cd silk
$ ./bootstrap.sh
$ sudo make install-cluster

Donanım yapılandırma dosyası tanımla

Silk'in makinenize bağlı mevcut test donanımı kaynaklarını toplamasına izin vermek için aşağıdaki biçimde bir hwconfig.ini dosyası tanımlayın:

[DEFAULT]
ClusterID: 0
LayoutCenter: 300, 300
LayoutRadius: 100

[Dev-8A7D]
HwModel: Nrf52840
HwRev: 1.0
InterfaceSerialNumber: E1A5012E8A7D
USBInterfaceNumber: 1
DutSerial: 683536778

İpek'in bir parçası olan ve Arayüz Seri Numarasını ve USB Arayüz Numarasını bulmak için kullanılabilecek usbinfo adlı bir araç yüklüdür. DutSerial, çipe basılan veya J-Link ürünleri için usbinfo tarafından görüntülenen SN numarasıdır.

[DEFAULT] bölümündeki LayoutCenter ve LayoutRadius alanları, cihazlar web kullanıcı arayüzünde görselleştirilirken düzenin şeklini tanımlar. Bunları burada sunulan değerlere ayarlamak iyi bir başlangıç noktası olabilir.

Ardından her test cihazı için bir bölüm tanımlayıp ilgili donanım bilgilerini sağlar.

4. OTNS etkin OpenThread derlemesi

Görüntü derleme ve yanıp sönme

Varsayılan olarak, OpenThread cihazları OTNS ile ilgili mesajları yayınlamaz. Geliştirici panolarının, OTNS görselleştirme için gerekli olan günlük arayüzlerine durum mesajları göndermesine izin vermek için FTD görüntüsü derlemek ve onaltılık biçime dönüştürmek için OpenThread kaynak dizininin altında aşağıdaki komutu çalıştırın.

$ 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

Kartları taşımak için nrfjprog kullanmak üzere İş Parçacık Kodu Codelab Oluşturma'nın 4. adımındaki talimatları uygulayın. Ardından, tüm panoları nRF USB bağlantı noktası üzerinden ana makineye bağlayın. Aynı USB-Mikro-USB kabloları, J-Link bağlantı noktalarından çıkarılabilir ve nRF52840 geliştirme kartlarına ait nRF USB bağlantı noktalarına bağlanabilir. Bu sayede, yalnızca bu 6 kabloyu kullanarak test yapılabilir. Zahmetten kaçınmak için 12 kablo kullanın ve her iki bağlantı noktasına da takın.

5. OTNS sunucusunu gerçek modla çalıştırma

OTNS'nin varsayılan parametrelerle çalıştırılması, kullanıcının bir İleti dizisi ağını simüle etmesine olanak tanır. Gerçek bir fiziksel ağ için görselleştirme aracı olarak kullanmak için aşağıdaki komutu çalıştırın:

otns -raw -real -ot-cli otns-silk-proxy

Bu bağımsız değişkenler, OTNS'ye gRPC ve UDP iletilerini, ağı simüle etmek için birden fazla ot-cli işlemi çalıştırmak yerine nasıl görselleştirmesi gerektiğini açıklayan talimat verir. Tarayıcınız görselleştirme sayfasını boş bir tuvalle otomatik olarak açmalıdır.

4dd5b41bf7e71334.png

6. OTNS desteğiyle İpek testi vakaları çalıştırma

Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için kullanılan tam otomatik bir test platformudur. README projesindeki talimatlar, projenin nasıl kullanılacağını kapsar.

silk/unit_tests konumunda bulunan silk_run_test.py dosyası size avantaj sağlar. İpek, test yazışması yürütülürken OTNS desteği sağlar. OTNS gerçek mod hizmeti yerel olarak zaten çalıştığından, silk_run_test.py dosyasını bir çıkış günlük dosyası, giriş test komut dosyaları ve hwconfig.ini dosyası için istenen konumlarla değiştirmemiz yeterlidir. -s localhost bağımsız değişkeni, İpek'e OTNS mesajlarını localhost adresine göndermesini bildirir.

Örneğin, bir kullanıcı silk_run_test.py dosyasındaki şu değişiklikleri kullanarak ot_test_form_network.py adlı testi çalıştırabilir. /opt/openthread_test/, İpek'in günlük çıkışı ve yapılandırma dosyası için kullandığı varsayılan yoldur ancak herhangi bir yolu kullanabilirsiniz.

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)

Oluşturulan ağın topoloji görselleştirmesi OTNS web kullanıcı arayüzünde gösterilir.

ee443b66e0a6620b.png

Sol üst köşede görselleştirme istatistikleri, OT sürümü ve test başlığı gösterilir. Sol alt köşede, sağda gösterilen günlük penceresinin kontrolleri vardır. Başlangıçta düğümler eklenir ancak ağ oluşturulmaz. Test ilerledikçe her düğümün modları ve rolleri değişir ve bağlantılar oluşturulur.

5c38e2c72519e620.png

7. Tebrikler

Tebrikler, İpek testini fiziksel İş Parçacığı cihazlarında başarıyla çalıştırdınız ve OTNS kullanarak görselleştirdiniz!

OTNS desteğine sahip donanım yazılımlarıyla sunulan geliştirme kartları kullanarak İpek testi yürüttünüz. Jamboard'lar, durumlarını izleyin ve tümünü izleyen bir İpek sunucusuna bildirir ve diğer test bilgileriyle birlikte OTNS hizmetine gönderir. Gerçek modda çalışan OTNS, web arayüzündeki İş Parçacığı ağını görselleştirir.

Sonraki adım

İpek paketinde yer alan diğer OpenThread test durumlarını çalıştırmayı deneyin.

Daha fazla bilgi

Çeşitli OpenThread kaynakları için openthread.io ve Silk'e göz atın.

Referans belgeleri