1. Giriş
Mesaj Dizisi ve OTNS nedir?
Thread, cihazlar arası ve cihazlar arası güvenli iletişim olanağı sağlayan IP tabanlı düşük güçlü kablosuz örgü ağ protokolüdür. Mesaj dizisi ağları, tek bir hata noktasından kaçınmak için topolojideki değişikliklere uyum sağlayabilir.
Google tarafından yayınlanan OpenThread, Thread'in açık kaynak uygulamasıdır. OpenThread, küçük kod boyutuna ve bellekte yer almasına rağmen İleti Dizisi Özelliği'nde tanımlanan tüm özellikleri desteklemektedir.
OpenThread Ağ Simülasyon Aracı (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) sunar.
Neler öğreneceksiniz?
- OTNS'i ve bağımlılıklarını yükleme
- OTNS için OpenThread oluşturma
- OTNS-Web'de düğüm ekleme/taşıma/silme
- Ağ simülasyonunu çalıştırmak için OTNS-Web'in diğer kullanışlı özelliklerini kullanma
- OpenThread'in başarısız olmayan tek nokta noktasını doğrulama
Bu codelab, OTNS-CLI ve OTNS-Web'e odaklanmaktadır. OTNS'in Python komut dosyası gibi diğer özellikleri kapsamaz.
Gerekenler
- Linux x86_64 veya Mac OS.
- Git.
- 1.13 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.
- Thread Primer: Bu Codelab'de neler öğretildiğini anlamak için Thread ile ilgili temel kavramları bilmeniz gerekir.
2. Döşeme
Go'yu yükle
OTNS'nin derlemesi için Go 1.13 ve üzeri sürümler gerekir.
- Go'yu https://golang.org/dl/ adresinden yükleyin
$PATH
öğesine$(go env GOPATH)/bin
(normalde$HOME/go/bin
) ekleyin:
$ export PATH=$PATH:$(go env GOPATH)/bin
OTNS kodunu alın
$ git clone https://github.com/openthread/ot-ns.git ./otns $ cd otns
Yükleme Bağımlılıkları
$ ./script/install-deps grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy
sudo
için şifre girmeniz istenebilir.
OTO'ları yükleme
$GOPATH/bin
adlı alana otns
uygulamasını yükleyin:
$ ./script/install otns installed: /usr/local/google/home/simonlin/go/bin/otns
otns
adlı uygulamanın düzgün şekilde yüklenip yüklenmediğini kontrol edelim
otns
yürütülebilir dosyasının$PATH.
içinde aranabilir olup olmadığını kontrol etmek içinwhich otns
komutunu çalıştırınotns
komutu bulunamazsa$PATH.
için$(go env GOPATH)/bin
eklediğinizi doğrulayın.
3. OTNS için OpenThread oluşturma
GitHub'dan OpenThread kodunu alma
$ mkdir -p ~/src $ git clone https://github.com/openthread/openthread ~/src/openthread
OTNS=1
ile OpenThread derleme
$ cd ~/src/openthread $ ./script/cmake-build simulation -DOT_OTNS=ON -DOT_SIMULATION_VIRTUAL_TIME=ON -DOT_SIMULATION_VIRTUAL_TIME_UART=ON -DOT_SIMULATION_MAX_NETWORK_SIZE=999
OpenThread yürütülebilir bilgilerini build
dizininde bulabilirsiniz:
$ ls ~/src/openthread/build/simulation/examples/apps/cli/ ot-cli-ftd ot-cli-mtd ot-cli-radio
Sıra, OTNS'i çalıştırmaya geldi...
4. OTNS'i çalıştırma
otns
çalıştır:
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Başarıyla başlatıldığında OTNS, bir KSA konsoluna girer (OTNS-CLI
) ve ağ görselleştirme ile yönetimi için bir web tarayıcısı başlatır (OTNS-Web
):
OTNS-Web için yalnızca boş bir sayfa görüyorsanız tarayıcınızda WebGL etkin değildir. WebGL'nin nasıl etkinleştirileceğini öğrenmek için lütfenhttps://superuser.com/a/836833
Sonraki bölümlerde, OTNS simülasyonlarını OTNS-CLI
ve OTNS-Web
aracılığıyla yönetmeyi öğreneceksiniz.
5. OTNS-CLI ve OTNS-Web'i Keşfedin
OTNS KSA
OTNS-CLI
, OTNS simülasyonlarını yönetmek için bir Komut Satırı Arayüzü (KSA) sağlar.
$ cd ~/src/openthread/build/simulation/examples/apps/cli $ otns > ← OTNS-CLI prompt
Komutları OTNS-CLI
üzerinden yazabilirsiniz. Komutların tam listesi için OTNS KSA referansına bakın. Endişelenmeyin, bu Codelab'de bu komutlardan yalnızca birkaçını kullanacaksınız.
OTNS-Web
OTNS-Web
, OTNS'nin ağ görselleştirme ve yönetim aracıdır. Bu uygulama, simüle edilmiş Thread ağının düğümlerini, mesajlarını ve bağlantılarını görsel olarak temsil eder. OTNS-Web
öğesinin çeşitli öğelerini not edin:
6. Düğüm Ekle
OTNS-CLI aracılığıyla düğüm ekleme
Konuma bir yönlendirici ekleyin (300, 100)
> add router x 300 y 100 1 Done
OTNS-Web
konumunda bir düğüm oluşturulduğunu göreceksiniz. Düğüm, Yönlendirici olarak başlar ve birkaç saniye içinde lider olur:
OTNS-CLI
ile daha fazla düğüm ekleyin
> add fed x 200 y 100 2 Done > add med x 400 y 100 3 Done > add sed x 300 y 200 4 Done
Düğümlerin bir bölümde birleşmesi için birkaç saniye bekleyin. Düğümler OTNS-WEB
içinde görünmelidir:
OTNS-Web
tarihine kadar düğüm ekleyin
Düğümleri OTNS-Web
üzerinden de ekleyebilirsiniz. Action Bar
öğesinin New Router
düğmesini tıklayın. New Router
düğmesinin hemen üzerinde bir düğüm oluşturulduğu gösterilir. Düğümü OTNS-CLI
üzerinden oluşturduğunuz Liderin yakınında olacak şekilde sürükleyin. Tüm düğümlerin sonunda tek bir bölüm halinde birleştirilmesi gerekir:
Ayrıca, başka düğüm türleri oluşturmak için İşlem Çubuğundaki FED, MED ve SED düğmelerini tıklayın. Bu iş parçacığı ağına eklemek için mevcut düğümlerin yakınına sürükleyin.
Şimdi, çok sayıda düğüm içeren bir bölümlü Thread ağı oluşturdunuz. Bir sonraki bölümde, simülasyonun daha hızlı çalışması için simülasyon hızını ayarlayacağız.
7. Hızı ayarlayın
Simülasyon şu anda 1X
hızda çalışıyor olmalıdır. Diğer bir deyişle, şimdiye kadar geçen simülasyon zamanı ilk düğümü oluşturmamızdan bu yana geçen gerçek zamanla aynıdır.
OTNS-CLI
tarihine kadar hızı ayarlayın
Simülasyon hızını OTNS-CLI
üzerinden ayarlayabilirsiniz.
Simülasyon simülasyonunu 100X
değerine ayarlayın
> speed 100 Done
Düğümlerin eskisinden çok daha sık ileti gönderdiğini göreceksiniz.
Simülasyon simülasyonunu MAX
değerine ayarlayın
> speed max Done
OTNS, en iyi şekilde mümkün olduğunca hızlı bir şekilde simüle etmeye çalışıyor. Bu nedenle, düğümlerin çok sayıda mesaj gönderdiğini görmeniz gerekir.
Simülasyonu duraklat
> speed 0 Done
Simülasyon simülasyonunda 0
değerine ayarlamak simülasyonu duraklatır.
Simülasyonu normal hızda geri yükle
> speed 1 Done
Simülasyon hızı 0
değerinden büyük bir değere ayarlanırsa simülasyon devam eder.
OTNS-Web
tarihine kadar hızı ayarlayın
Hız kontrol düğmeleri
Action Bar
üzerinde hız kontrolü düğmelerini bulun. Düğmeler, mevcut simülasyon hızını gösterir ve simülasyon hızını ayarlamak ve simülasyonu duraklatmak/devam ettirmek için kullanılabilir.
Simülasyonu hızlandırma
Hız, MAX
seviyesine ulaşana kadar düğmesini tıklayarak simülasyonu hızlandırabilirsiniz: .
Yavaşlama simülasyonu
düğmesini tıklayarak simülasyonu yavaşlatabilirsiniz.
Simülasyonu duraklat
Simülasyon çalışıyorken duraklatmak için düğmesini tıklayın. Düğme olarak değiştirilecek.
Simülasyonu devam ettir
Duraklatıldığında simülasyonu devam ettirmek için düğmesini tıklayın. Düğme, değerine geri döndürülecektir.
Simülasyon simülasyonunu 10X
değerine ayarlayın
Zaman kazanmak için
OTNS-CLI
için simülasyon hızını
10X
böylece ağdaki topoloji değişikliklerini çok daha hızlı şekilde gözlemleyebiliyoruz.
> speed 10 Done
8. Radyoyu Aç/Kapat
Şu an için simülasyon 2 Yönlendirici (altıgen şekil) ve birçok çocuk içermeli ve 10 kat hızda çalıştırılmalıdır.
2 Yönlendiricinin mevcut Liderini (kırmızı kenarlık) bulun, seçmek için tek tıklayın:
Radyoyu kapat
Lider düğümünün radyosunu kapatmak için İşlem Çubuğundaki düğmesini tıklayın:
Lider, radyo kapalıyken mesaj gönderip alamaz.
Diğer Yönlendiricinin yeni Lidere dönüşmesi için yaklaşık 12 sn. bekleyin.
Thread ağı, yeni bir Leader ile yeni bir bölüm oluşturarak otomatik olarak Lider hatasından kurtarılır. Yeni bölüm ayrıca yeni bir bölüm rengine sahip.
Radyoyu aç
Radyosu kapatılmış olan Lideri seçin. Radyo bağlantısını tekrar kurmak için Action Bar
üzerindeki düğmesini tıklayın:
Radyo bağlantısı geri yüklendikten sonra Lider, ağa tekrar bağlanmalıdır.
9. Düğümleri Taşı
OTNS, kullanıcıların düğümleri OTNS-CLI
veya OTNS-Web
üzerinden kolayca taşımasına olanak tanır.
Düğümü OTNS-CLI
üzerinden taşı
Düğüm 5'i yeni bir konuma taşıyın:
> move 5 600 300 Done
Düğüm 5 diğer Yönlendirici'den uzak olduğundan, birbirleriyle olan bağlantılarını kaybetmeleri gerekir. Ayrıca, 120 saniye sonra (her biri simülasyon sırasında) her ikisi de kendi bölümünün liderleri olur:
Düğümü OTNS-Web üzerinden taşıyın
Düğüm 5'i sürükleyerek orijinal konumuna geri taşıyın. İki bölüm tek bir bölümde tekrar birleştirilmelidir:
10. Düğümleri Sil
Düğümleri OTNS-CLI
üzerinden sil
Düğüm 8'i sil:
> del 8 Done
Düğüm 8, simülasyondan kaybolmalıdır:
Düğümleri OTNS-Web
üzerinden sil
Düğüm 5'i seçin ve düğüm 5'i silmek için Action Bar
üzerindeki düğmesini tıklayın:
Node 1
hiçbir Yönlendiriciye erişemediğinden lider olmalı ve Node 7
ayrılmalıdır.
Simülasyonu temizle (tüm düğümleri sil)
OTNS-Web
üzerinden tüm düğümleri silerek simülasyonu temizleyebilirsiniz.
Action Bar.
alanındaki düğmesini tıklayın. Tüm düğümlerin tek seferde kaybolması
Devam etmeden önce...
Bu eğitime devam edebilmeniz için simülasyona bazı düğümleri kendiniz ekleyin.
11. OTNS-CLI Düğüm Bağlamı
OTNS-CLI
, düğümlerin durumunu kolayca belirlemek için geliştiricilerin bir düğüm durumu modu sağlar.
Düğüm içerik moduna geç
Düğüm 1'in düğüm bağlamını girin:
> node 1 Done node 1>
KSA istemi , mevcut düğüm bağlamını belirten node 1>
olarak değiştirildi. Doğrudan düğümle etkileşimde bulunuyormuş gibi düğüm üzerinde yürütülecek OpenThread CLI komutlarını yazabilirsiniz.
Düğüm bağlamında komut yürütme
node 1> state leader Done node 1> channel 11 Done node 1> panid 0xface Done node 1> networkname OpenThread Done node 1> ipaddr fdde:ad00:beef:0:0:ff:fe00:fc00 fdde:ad00:beef:0:0:ff:fe00:d800 fdde:ad00:beef:0:2175:8a67:1000:6352 fe80:0:0:0:2075:82c2:e9e9:781d Done
Başka bir düğüm bağlamına geçin
node 1> node 2 Done node 2>
Düğüm bağlamından çık
node 1> exit Done >
12. Tebrikler
Tebrikler, ilk OTNS simülasyonunuzu başarıyla yürüttünüz.
OTNS'i ve bağımlılarını nasıl yükleyeceğinizi öğrendiniz. OTNS için OpenThread işlemini oluşturdunuz ve OpenThread simülasyon örnekleriyle OTNS simülasyonunu başlattınız. Simülasyonu hem OTNS-CLI
hem de OTNS-Web
aracılığıyla çeşitli şekillerde manipüle etmeyi öğrendiniz.
OTNS'nin ne olduğunu ve OpenThread ağlarını simüle etmek için OTNS'yi nasıl kullanabileceğinizi artık biliyorsunuz.
Sonraki adım
Bu codelab'lerden bazılarına göz atın...
- OpenThread ile Mesaj Dizisi ağını simüle etme
- Docker'da OpenThread kullanarak Thread ağı simüle etme
- nRF52840 Jamboard'lar ve OpenThread ile bir Thread ağı oluşturma