Thread Ağını Görselleştirmeyle Test Etme

1. Giriş

5abd22afa2f2ee9a.png

Thread, OpenThread, OTNS ve Silk nedir?

Thread, cihazlar arasında ve cihazlar arasında güvenli iletişim kurulmasına olanak tanıyan IP tabanlı, düşük güçlü bir kablosuz örgü ağ protokolüdür. Thread 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 kaynak uygulamasıdır. Kod boyutuna ve bellek alanına göre küçük kaplanmasına rağmen OpenThread, Thread Specification (İş Parçacığı Spesifikasyonu) içinde tanımlanan tüm özellikleri destekler.

OpenThread Ağ Simülatörü (OTNS), posix platformlarında simüle edilmiş OpenThread düğümleri çalıştırarak Thread ağlarını simüle etmek için 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.

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

Neler öğreneceksiniz?

  • OpenThread'in işlev doğrulama çerçevesi: Silk
  • OTNS özelliğinin etkin olduğu gerçek cihazlar için OpenThread oluşturma
  • İpek test senaryoları yürütülerek oluşturulan Thread ağının durumunu izlemek için OTNS-Web arayüzünü kullanın

Bu codelab'de, Silk'i OTNS ile kullanmaya odaklanılmıştır. İpek ve OTNS'ün diğer özellikleri ele alınmamıştır.

Gerekenler

Donanım:

  • 6 Nordic Semiconctionor nRF52840 geliştirici kartı
  • Kartları bağlamak için 6 adet USB - Mikro USB kablosu
  • USB çoğaltıcı

Yazılım:

  • Linux x86_64.
  • Git.
  • 1.11 ve üzeri 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'leri 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 özelliğinin kullanılabilir olduğundan emin olmak için which wpantund komutunu çalıştırın.
  3. ARM GNU araç zinciri, J-Link ve nrfjprog paketlerinin tümünün mevcut olduğundan emin olun.

Not: Kurulumla ilgili yardım için lütfen bağlantılı dokümanlara göz atın. 1. ön koşul, OTNS kullanarak iş parçacıklarını simüle etme koşuludur. Diğer koşullar ise nRF52840 kartları ve OpenThread ile bir Thread ağı oluşturma kaynaklıdır.

3. İpek kurulumu

Silk'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ını tanımlayın

Silk'in makinenize bağlı kullanılabilir 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

Arabirim Seri Numarası ve USB Arayüz Numarasını bulmak için kullanılabilecek Silk'in parçası olarak usbinfo adlı bir araç yüklenir. DutSerial, çipin üzerine yazılan veya J-Link ürünleri için usbinfo tarafından gösterilen SN numarasıdır.

[DEFAULT] bölümündeki LayoutCenter ve LayoutRadius alanları, cihazlar web kullanıcı arayüzünde görselleştirildiğinde düzenin şeklini tanımlar. Bu değerleri burada verilen değerlere göre 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 sağlar.

4. OTNS etkin halde OpenThread'i derleyin

Bina görüntüsü ve yanıp sönen görüntüler

Varsayılan olarak OpenThread cihazları OTNS ile ilgili mesajlar yayınlamaz. Geliştirme panolarının, OTNS görselleştirmesinde gerekli olan arayüzleri günlüğe kaydetmesine izin vermek için, bir FTD görüntüsü oluşturmak üzere OpenThread kaynak dizini altında aşağıdaki komutu çalıştırın ve onu onaltılık biçime 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

Jamboard'ları yüklemek için Thread ağı Codelab'i oluşturma işleminin 4. adımındaki talimatları uygulayarak nrfjprog kullanın. Ardından, nRF USB bağlantı noktası aracılığıyla tüm kartları ana makineye bağlayın. Aynı USB - Mikro USB 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, yalnızca bu 6 kabloyla test yapılabilir. Zahmetten 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 Thread ağını simüle etmesine olanak tanır. Gerçek bir fiziksel ağda görselleştirme aracı olarak kullanmak için aşağıdakilerle birlikte çalıştırın:

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

Bu bağımsız değişkenler, ağı simüle etmek için birden fazla ot-cli işlemi çalıştırmak yerine Thread ağının nasıl görselleştirilmesi gerektiğini açıklayan gRPC ve UDP mesajları beklemesini sağlar. Tarayıcınız, görselleştirme sayfasını otomatik olarak boş bir tuvalle açar.

4dd5b41bf7e71334.png

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

Silk, gerçek cihazlarla OpenThread işlevini, özelliğini ve sistem performansını doğrulamak için kullanılan tam otomatik bir test platformudur. README projesindeki talimatlarda bu aracın nasıl kullanılacağı açıklanmaktadır.

silk/unit_tests konumundaki silk_run_test.py dosyası size avantajlı bir başlangıç sağlar. Silk, test durumu çalıştırılırken OTNS desteği sağlar. OTNS gerçek mod hizmeti zaten yerel olarak çalıştığından, yalnızca çıkış günlük dosyası, giriş testi komut dosyaları ve hwconfig.ini dosyası için silk_run_test.py dosyasını istenen konumlarla değiştirmemiz gerekiyor. -s localhost bağımsız değişkeni, Silk'e OTNS mesajlarını localhost cihazına göndermesini söyler.

Örneğin, silk_run_test.py dosyasında aşağıdaki değişiklikler yapılarak ot_test_form_network.py adlı test çalıştırılabilir. /opt/openthread_test/, Silk'in günlük çıkışı ve yapılandırma dosyası için kullandığı varsayılan yoldur ancak dilediğiniz 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ğ tarafta gösterilen günlük penceresinin denetimleri yer alır. 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 cihazlarda İpek testini başarıyla tamamladınız ve OTNS ile görselleştirdiniz.

OTNS desteği olan donanım yazılımlarıyla yanıp sönen geliştirme kartlarıyla bir İpek testi gerçekleştirdiniz. Kurullar, durumlarını izleyip toplayan İpek sunucuya gönderir ve diğer test bilgileriyle birlikte OTNS hizmetine gönderir. Gerçek modda çalışan OTNS, web arayüzünde Thread ağını görselleştirir.

Sırada ne var?

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

Daha fazla bilgi

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

Referans belgeler