Görselleştirme ile Thread Ağını Test Etme

1. Giriş

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS ve Silk nedir?

Thread, cihazdan cihaza ve cihazdan buluta güvenli iletişim sağlayan IP tabanlı, düşük güçlü bir kablosuz ağ protokolüdür. İş parçacığı ağları, tek hata noktasından kaçınmak için topoloji değişikliklerine uyum sağlayabilir.

OpenThread Google tarafından yayımlanan Konu bir açık kaynak uygulamasıdır. Onun küçük bir kod boyutu ve bellek boyutuna rağmen OpenThread tanımlanan tüm özellikleri destekler Konu 1.1.1 Şartname .

OpenThread Ağ Simülatörü (OTNS) POSIX platformlarda simüle OpenThread düğümlerini çalıştırarak benzetmek Konu ağlara kullanılabilir. OTNS, simüle edilmiş Thread ağlarını görselleştirmek ve çalıştırmak için kullanımı kolay bir Web arayüzü (OTNS-Web) sağlar.

İpek OpenThread işlevini, özelliği ve gerçek cihazlarla sistem performansını doğrulamak için tam otomatik test platformudur.

ne öğreneceksin

  • OpenThread'in işlevsellik doğrulama çerçevesi: Silk
  • OTNS özelliği etkinleştirilmiş gerçek cihazlar için OpenThread oluşturun
  • Silk test senaryolarını çalıştırarak oluşturulan Thread ağının durumunu izlemek için OTNS-Web arayüzünü kullanın

Bu codelab, Silk'i OTNS ile kullanmaya odaklanmıştır. Silk ve OTNS'nin diğer özellikleri kapsanmamaktadır.

Neye ihtiyacın olacak

Donanım:

  • 6 Nordic Semiconductor nRF52840 geliştirme kartı
  • Kartları bağlamak için 6 USB - Micro-USB kablosu
  • USB hub

Yazılım:

  • Linux x86_64.
  • Git .
  • 1.11+ git .
  • İnternet tarayıcısı. OTNS-Web, simülasyonları görüntülemek için bir web tarayıcısı kullanır.

Önkoşullar:

2. Önkoşullar

Önceki temel Codelab'leri tamamlayın

Paket önkoşullarını kontrol etme

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

  1. Çalıştır which otns olmadığını kontrol etmek otns yürütülebilir aranabilir $PATH .
  2. Çalıştır which wpantund emin olmak için wpantund mevcuttur.
  3. Emin ARM GNU toolchain, J-Linki olun ve nrfjprog paketleri tümü kullanılabilir.
  4. Emin olun bir OpenThread ikili çalışan yapılabilir make -f examples/Makefile-nrf52840 altında openthread klasörünün.

Not: kurmak rehberlik için bağlantılı dokümantasyon bakınız. Önkoşul 1. dan OTNS Simülasyonu Konu Ağları ve diğerleri gelmektedir Build'a nRF52840 panoları ve OpenThread ile Konu ağı .

3. İpek kurulumu

Silk'i klonlamak ve ortamı kurmak 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ını tanımlayın

İpek, senin makineye bağlı mevcut donanımı test kaynak toplamak bir tanımlama izin vermek için hwconfig.ini aşağıdaki biçimde dosya:

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

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

Bir araç olarak adlandırılan usbinfo Arayüz Seri Numarası ve USB Arayüz Numarası öğrenmek için kullanılabilir Silk parçası olarak yüklenir. DutSerial göre çip üzerinde basılı ya da görüntülenen SN sayısıdır usbinfo J Bağlantı ürünleri için.

LayoutCenter ve LayoutRadius alanlar [DEFAULT] cihazları internet arayüzünde görsel zaman bölümü düzeninin ş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ımlar ve ilgili donanım bilgilerini verir.

4. OpenThread'i OTNS etkinken derleyin

Bina görüntüsü ve yanıp sönme

Varsayılan olarak, OpenThread cihazları OTNS ile ilgili mesajları yaymaz. Geliştirme panolarının OTNS görselleştirmesi için gerekli olan günlük arabirimlerine durum mesajları göndermesine izin vermek için, bir FTD görüntüsü oluşturmak için OpenThread kaynak dizini altında aşağıdaki komutu çalıştırın ve onu hex biçimine dönüş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

, Panoları flaş adım 4 yönergeleri izleyin bir Konu ağı Codelab Build'a kullanmak nrfjprog . Bundan sonra, tüm kartları nRF USB bağlantı noktası üzerinden ana makineye bağlayın. Aynı USB'den Mikro-USB'ye kablo seti, J-Link bağlantı noktalarından çıkarılabilir ve nRF52840 geliştirme kartlarının nRF USB bağlantı noktalarına bağlanabilir. Böylece sadece bu 6 kablo ile test uygulaması gerçekleştirilebilir. Güçlükten kaçınmak için 12 kablo kullanın ve her iki bağlantı noktasına da bağlayın.

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

OTNS'yi varsayılan parametrelerle çalıştırmak, kullanıcının bir Thread ağını simüle etmesine izin verir. Gerçek bir fiziksel ağ için bir görselleştirme aracı olarak kullanmak için şunu çalıştırın:

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

Bu argümanlar yerine çoklu çalışan, Konu ağı hayal edilmelidir nasıl tarif gRPC ve UDP mesajları beklemek OTNS anlatmak ot-cli ağı simüle etmek süreçleri. Tarayıcınız, görselleştirme sayfasını boş bir tuvalle otomatik olarak açmalıdır.

4dd5b41bf7e71334.png

6. Silk test senaryolarını OTNS desteğiyle çalıştırma

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

silk_run_test.py bulunan dosya silk/unit_tests size headstart verir. Silk, bir test senaryosu çalıştırırken OTNS desteği sağlar. OTNS gerçek modu hizmeti yerel olarak zaten aday olunca, biz sadece değiştirmeniz gerekir silk_run_test.py bir çıkış günlük dosyası, giriş testi komut dosyaları ve istenen yerlerde dosyayı hwconfig.ini dosyası. -s localhost argümanı için OTNS mesaj göndermek için Silk söyler localhost .

Örneğin, bir adlandırılmış testi çalıştırabilirsiniz ot_test_form_network.py aşağıdaki değişiklikleri kullanarak silk_run_test.py dosyası. /opt/openthread_test/ log çıkışı ve yapılandırma dosyasının varsayılan yolu İpek kullanımları, ancak herhangi bir yol 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örünecektir.

ee443b66e0a6620b.png

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

5c38e2c72519e620.png

7. Tebrikler

Tebrikler, fiziksel Thread cihazlarında başarılı bir şekilde Silk testi yaptınız ve OTNS kullanarak görselleştirdiniz!

OTNS desteğine sahip yazılımlarla güncellenen geliştirme kartlarını kullanarak bir Silk testi gerçekleştirdiniz. Panolar durumlarını, hepsini izleyen ve toplayan ve diğer test bilgileriyle birlikte OTNS hizmetine gönderen bir Silk sunucusuna bildirir. Gerçek modda çalışan OTNS, web arayüzünde Thread ağını görselleştirir.

Sıradaki ne?

Silk paketinde bulunan diğer OpenThread test senaryolarını çalıştırmayı deneyin.

daha fazla okuma

Check out openthread.io ve Silk OpenThread çeşitli kaynaklar için.

Referans dokümanlar