Thread, OpenThread, OTNS ve Silk nedir?
Thread, aygıttan aygıta ve aygıttan 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.
Google tarafından yayınlanan OpenThread, Thread'ın açık kaynaklı bir uygulamasıdır. Küçük kod boyutu ve bellek ayak izine rağmen, OpenThread, Thread 1.1.1 Spesifikasyonunda 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 , OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için tam otomatik bir test platformudur.
Ne öğreneceksin
- OpenThread'in işlevsellik doğrulama çerçevesi: İpek
- OTNS özelliği etkinleştirilmiş gerçek cihazlar için OpenThread oluşturun
- Silk test durumları çalıştırılarak oluşturulan Thread ağının durumunu izlemek için OTNS-Web arayüzünü kullanın
Bu kod laboratuvarı 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 - Mikro-USB kabloları
- USB hub
Yazılım:
- Linux x86_64.
- Git .
- 1.11+ gidin .
- İnternet tarayıcısı. OTNS-Web, simülasyonları görüntülemek için bir web tarayıcısı kullanır.
Ön koşullar:
Önceki temel Codelab'leri tamamlayın
- Thread Primer . Bu Codelab'de neyin öğretildiğini anlamak için Thread'ın temel kavramlarını bilmeniz gerekecektir.
- NRF52840 anakartları ve OpenThread ile bir Thread ağı oluşturun . Bu Codelab, bir Thread ağını başarıyla oluşturduğunuzu varsayar.
- OTNS kullanarak İş Parçacığı Ağlarını simüle edin . Bu Codelab, OTNS aracını başarıyla çalıştırdığınızı varsayar.
Paket ön koşullarını kontrol etme
Tüm ön koşulların karşılandığından emin olalım.
- Çalıştır
which otns
olmadığını kontrol etmekotns
yürütülebilir aranabilir$PATH
. -
wpantund
mevcut olduğundan emin olmak içinwhich wpantund
çalıştırın. - ARM GNU araç zinciri, J-Link ve
nrfjprog
paketlerinin hepsinin mevcut olduğundan emin olun. -
openthread
klasörü altındamake -f examples/Makefile-nrf52840
çalıştırarak bir OpenThread ikilisinin oluşturulabileceğinden emin olun.
Not: Kurulum kılavuzu için lütfen bağlantılı belgelere bakın. Önkoşul # 1, OTNS kullanarak İş Parçacığı Ağlarını Simüle et ve diğerleri nRF52840 panoları ve OpenThread ile bir İş Parçacığı ağı oluşturun .
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
Silk'in makinenize bağlı mevcut test donanımı kaynaklarını toplamasına izin vermek için, aşağıdaki formatta 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
usbinfo
parçası olarak Arayüz Seri Numarası ve USB Arayüz Numarasını bulmak için kullanılabilecek usbinfo
adlı bir araç kurulur. DutSerial, çip üzerinde basılı olan veya usbinfo
tarafından J-Link ürünleri için 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ştirildiğinde mizanpajın şeklini tanımlar. Bunları burada sunulan değerlere ayarlamak iyi bir başlangıç noktası olabilir.
Bunu takiben, her test cihazı için bir bölüm tanımlar ve ilgili donanım bilgilerini sağlar.
Bina görüntüsü ve yanıp sönme
Varsayılan olarak, OpenThread cihazları OTNS ile ilgili mesajlar göndermez. Geliştirme panolarının, OTNS görselleştirmesi için gerekli olan arabirimleri günlüğe kaydetmek üzere durum mesajları yayınlamasına 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 bunu onaltılık biçime dönüştürün.
$ cd openthread $ make -f examples/Makefile-nrf52840 clean $ make -f examples/Makefile-nrf52840 COMMISSIONER=1 JOINER=1 USB=1 OTNS=1 $ cd output/nrf52840/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 - 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 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.
OTNS'yi varsayılan parametrelerle çalıştırmak, kullanıcının bir İş Parçacığı ağını simüle etmesine olanak tanır. Bunu gerçek bir fiziksel ağ için bir görselleştirme aracı olarak kullanmak için aşağıdakilerle çalıştırın:
otns -raw -real -ot-cli otns-silk-proxy
Bu argümanlar, OTNS'ye, ağı simüle etmek için birden fazla dış 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ını beklemesini söyler. Tarayıcınız görselleştirme sayfasını boş bir tuvalle otomatik olarak açmalıdır.
Silk, OpenThread işlevini, özelliğini ve sistem performansını gerçek cihazlarla doğrulamak için tam otomatik bir test platformudur. README projesindeki talimatlar, nasıl kullanılacağını kapsar.
silk/unit_tests
bulunan silk_run_test.py
dosyası size bir silk/unit_tests
sağlar. Silk, bir test çalışması yürütürken OTNS desteği sağlar. OTNS gerçek mod hizmeti zaten yerel olarak çalıştığından, silk_run_test.py
dosyasını bir çıktı günlük dosyası, girdi testi komut dosyaları ve hwconfig.ini
dosyası için istenen konumlarla değiştirmemiz yeterlidir. -s localhost
argümanı Silk'e OTNS mesajlarını localhost
göndermesini söyler.
Örneğin, silk_run_test.py
dosyasında aşağıdaki değişiklikleri kullanarak ot_test_form_network.py
adlı test çalıştırılabilir. /opt/openthread_test/
, Silk'in günlük çıktısı 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österilecektir.
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 bulunur. 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şur.
Tebrikler, fiziksel Thread cihazlarında başarıyla bir Silk testi yaptınız ve OTNS kullanarak bunu görselleştirdiniz!
OTNS desteğine sahip yazılımlar ile yanıp sönen geliştirme kartlarını kullanarak bir İpek testi yaptınız. Kurullar durumlarını, tümünü izleyen ve bir araya getiren ve diğer test bilgileriyle birlikte OTNS hizmetine gönderen bir Silk sunucusuna rapor eder. 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 durumlarını çalıştırmayı deneyin.
daha fazla okuma
Check out openthread.io ve Silk OpenThread çeşitli kaynaklar için.