OTNS kullanarak Thread Ağlarını simüle edin

1. Giriş

5abd22afa2f2ee9a.png

Thread & OTNS 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.

ne öğreneceksin

  • OTNS ve bağımlılıklarını yükleyin
  • OTNS için OpenThread oluşturun
  • OTNS-Web'de düğümler nasıl eklenir/taşınır/silinir
  • Ağ simülasyonunu çalıştırmak için OTNS-Web'in diğer kullanışlı özelliklerini kullanın
  • OpenThread'in tek hata noktası olmadığını doğrulayın

Bu kod laboratuvarı, OTNS-CLI ve OTNS-Web'e odaklanmıştır. OTNS'nin Python komut dosyası oluşturma gibi diğer özellikleri kapsanmamaktadır.

Neye ihtiyacın olacak

  • Linux x86_64 veya Mac OS.
  • 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.
  • Primer Konu . Bu Codelab'de ne öğretildiğini anlamak için Thread'in temel kavramlarını bilmeniz gerekecek.

2. Kurulum

Go'yu yükleyin

OTNS, oluşturmak için Go 1.11+ gerektirir.

  1. Dan Git yükleyin https://golang.org/dl/
  2. Ekle $(go env GOPATH)/bin (normalde $HOME/go/bin ) için $PATH :
$ export PATH=$PATH:$(go env GOPATH)/bin

OTNS kodunu al

$ git clone https://github.com/openthread/ot-ns.git ./otns
$ cd otns

Bağımlılıkları Yükle

$ ./script/install-deps
grpcwebproxy installed: /usr/local/google/home/simonlin/go/bin/grpcwebproxy

Sen için giriş şifre istenebilir sudo .

otns yükleyin

Yükleme otns için $GOPATH/bin :

$ ./script/install
otns installed: /usr/local/google/home/simonlin/go/bin/otns

Eğer edelim çek otns düzgün yüklü

  1. Çalıştır which otns olmadığını kontrol etmek otns yürütülebilir aranabilir $PATH.
  2. Eğer otns komut bulunmazsa, eklediğiniz doğrulamak $(go env GOPATH)/bin için $PATH.

3. OTNS için OpenThread Oluşturun

GitHub'dan OpenThread kodunu alın

$ mkdir -p ~/src
$ git clone https://github.com/openthread/openthread ~/src/openthread

İle OpenThread kurmak OTNS=1

$ cd ~/src/openthread
$ ./script/bootstrap
$ ./bootstrap
$ make -f examples/Makefile-simulation OTNS=1

İçeri OpenThread yürütülebilir bulabilirsiniz output dizinine:

Linux

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Mac os işletim sistemi

$ ls ~/src/openthread/output/simulation/bin
ot-cli-ftd        ot-cli-mtd        ot-ncp-ftd        ot-ncp-mtd        ot-rcp

Şimdi OTNS çalıştırma zamanı...

4. OTNS'yi çalıştırın

Run otns :

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Başarıyla başladığında OTNS bir CLI konsolu (girecek OTNS-CLI ) ve ağ görselleştirme ve yönetimi (için bir web tarayıcısını başlatmak OTNS-Web ):

a0e05178d66929b1.png

OTNS-Web için yalnızca boş bir sayfa görüyorsanız, tarayıcınızda WebGL etkinleştirilmemiş olabilir. Bakınız https://superuser.com/a/836833 WebGL'yi etkinleştirmek için nasıl.

Aşağıdaki bölümlerde, çıkan sonuçlara OTNS simülasyonları yönetmek öğreneceğiz OTNS-CLI ve OTNS-Web .

5. OTNS-CLI ve OTNS-Web'i Tanıyın

OTNS-CLI

OTNS-CLI OTNS simülasyonlar yönetmek için bir komut satırı arabirimi (CLI) sağlar.

$ cd ~/src/openthread/output/simulation/bin
$ otns
> ← OTNS-CLI prompt

Sen aracılığıyla komutları yazabilirsiniz OTNS-CLI . Bakınız OTNS CLI referans komutların tam listesi için. Merak etmeyin, bu Codelab'de bu komutlardan yalnızca birkaçını kullanacaksınız.

OTNS-Web

OTNS-Web OTNS ağ görselleştirme ve yönetim aracıdır. Simüle edilmiş Thread ağının düğümlerinin, mesajlarının ve bağlantılarının görsel bir temsilini sağlar. Çeşitli unsurları Not OTNS-Web :

4c5b43509a2ca0d0.png

6. Düğüm Ekle

OTNS-CLI aracılığıyla düğüm ekleyin

(300, 100) konumunda bir Yönlendirici ekleyin

> add router x 300 y 100
1
Done

Sen oluşturulan bir düğüm görmelisiniz OTNS-Web . Düğüm bir Yönlendirici olarak başlar ve birkaç saniye içinde Lider olur:

6ca8c2e63ed9818d.png

Aracılığıyla daha fazla düğüm ekleme OTNS-CLI

> 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 tek bir bölümde birleşmesi için birkaç saniye bekleyin. Sen düğümleri görmelisiniz OTNS-WEB :

3ee67903c01aa612.png

Tarafından düğümleri ekleyin OTNS-Web

Ayrıca aracılığıyla düğüm ekleyebilirsiniz OTNS-Web . Click New Router düğmesini Action Bar . Bir düğüm yukarıda sağda oluşturulan görmelisiniz New Router düğmesi. Eğer yoluyla oluşturulan Lider yakınında olmak düğümü sürükleyin OTNS-CLI . Tüm düğümler sonunda tek bir bölümde birleştirilmelidir:

420258bb92561146.png

Diğer düğüm türleri oluşturmak için Eylem Çubuğundaki FED, MED ve SED düğmelerini de tıklayın. Onları bu Thread ağına eklemek için mevcut düğümlerin yakınındaki konumlara sürükleyin:

fe15d6f9726a099e.png

Artık birçok düğüm içeren bir bölümden oluşan bir Thread ağı oluşturdunuz. Bir sonraki bölümde, simülasyonun daha hızlı çalışmasını sağlamak için simülasyon hızını ayarlayacağız.

7. Hızı Ayarlayın

Şu anda, simülasyon çalıştırıyor olmalıdır 1X hız simüle zaman bugüne kadar geçen yani biz ilk düğümü yarattı beri fiili süre ile aynıdır.

Yoluyla hızını ayarlayın OTNS-CLI

Sen aracılığıyla simüle hızını ayarlayabilirsiniz OTNS-CLI .

Hız simüle ayarlama 100X

> speed 100
Done

Düğümlerin eskisinden çok daha sık mesaj gönderdiğini görmelisiniz.

Hız simüle ayarlama MAX

> speed max
Done

Şimdi, OTNS olabildiğince hızlı simülasyon yapmaya çalışıyor, bu yüzden çok sayıda mesaj gönderen düğümleri görmelisiniz.

Simülasyonu duraklat

> speed 0
Done

İçin simüle hızını ayarlama 0 simülasyon duraklar.

Simülasyonu normal hızda geri yükle

> speed 1
Done

Daha büyük bir değere simüle hızının ayarlanması 0 simülasyon devam eder.

Aracılığıyla hızı ayarlayın OTNS-Web

Hız kontrol düğmeleri

Hız kontrol düğmelerini bulun 9329157c1bd12672.png üzerinde Action Bar . 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ırın

tıklayarak simülasyonu hızlandırabilirsiniz. 39b8833179277ad.png hız kadar düğme ulaşır MAX : f5f460b2586d299b.png .

Yavaşlama simülasyonu

tıklayarak simülasyonu yavaşlatabilirsiniz. 31cca8d5b52fa900.png buton.

Simülasyonu duraklat

Tıkla 46cc2088c9aa7ab6.png Çalışırken simülasyonu duraklatmak için düğmesine basın. Düğme olarak değiştirilecek ce25eda3496ffcd4.png .

Simülasyonu devam ettir

Tıkla ce25eda3496ffcd4.png duraklatıldığında simülasyonu sürdürmek için düğmesine basın. Düğme geri değiştirilecek 46cc2088c9aa7ab6.png .

Hız simüle ayarlama 10X

Zamandan tasarruf etmek için kullanın

OTNS-CLI için simüle hızını ayarlamak için

10X yüzden çok daha hızlı ağda topoloji değişiklikleri gözlemleyebilirsiniz söyledi.

> speed 10
Done

8. Radyoyu Aç/Kapat

Şimdi, simülasyon 2 Yönlendirici (altıgen şeklinde) ve birçok çocuk içermeli ve 10X hızında çalışmalıdır.

2 Yönlendiricinin mevcut Liderini (kırmızı kenarlık) bulun, seçmek için tek tıklayın:

8c6a2e191cdae0c7.png

radyoyu kapat

Tıkla 7ca085f470491dd4.png Lider düğümünün telsizini kapatmak için Eylem Çubuğundaki düğme:

a3bf58d9d125f95f.png

Lider telsiz kapalıyken mesaj gönderemez veya alamaz.

Diğer Yönlendiricinin yeni Lider olması için yaklaşık 12 saniye (simülatörde 120 saniye) bekleyin:

e3d32f85c4a1b990.png

Thread ağı, yeni bir Leader ile yeni bir bölüm oluşturarak otomatik olarak Leader hatasından kurtulur. Yeni bölümün ayrıca yeni bir bölüm rengi vardır.

radyoyu aç

Telsizi kapatılan Lideri seçin. Tıkla 2d9cecb8612b42aa.png düğmesine Action Bar radyo bağlantısı geri:

7370a7841861aa3a.png

Lider, telsiz bağlantısı geri yüklendikten sonra ağa yeniden bağlanmalıdır.

9. Düğümleri Taşı

OTNS aracılığıyla kolayca düğümleri artırmasını sağlar OTNS-CLI veya OTNS-Web .

İle düğüm hareket OTNS-CLI

5. düğümü yeni bir konuma taşıyın:

> move 5 600 300
Done

Artık düğüm 5 diğer Yönlendiriciden uzak olduğundan, birbirleriyle olan bağlantılarını kaybetmeleri gerekir ve yaklaşık 12 saniye sonra (simülatör süresinde 120 saniye) her ikisi de kendi bölümlerinin Liderleri olur:

c06b4d0a4f183299.png

Düğümü OTNS-Web üzerinden taşı

5. düğümü sürükleyerek orijinal konumuna geri taşıyın. İki bölüm tekrar bir bölüm halinde birleştirilmelidir:

9ba305c4c5a5f892.png

10. Düğümleri Sil

Aracılığıyla Sil düğümleri OTNS-CLI

Düğüm 8'i sil:

> del 8
Done

Düğüm 8 simülasyondan kaybolmalıdır:

18156770d9f8bf83.png

Aracılığıyla Sil düğümleri OTNS-Web

5. düğümü seçin ve 7ff6afd565f4eafc.png düğmesine Action Bar silme düğüm 5:

d4079ccea0105f0.png

Node 1 Lider ve olması gerektiğini Node 7 herhangi Router ulaşamaz beri ayırmak gerekir.

Simülasyonu temizle (tüm düğümleri sil)

Sen aracılığıyla tüm düğümleri silerek simülasyon temizleyebilirsiniz OTNS-Web .

Tıklamak 89618191721e79a0.png düğmesine Action Bar. Tüm düğümler bir anda kaybolacak.

Devam etmeden önce...

Bu öğreticide devam edebilmeniz için simülasyona bazı düğümleri kendiniz ekleyin.

11. OTNS-CLI Düğüm Bağlamı

OTNS-CLI bir düğümün durumunu teşhis yardım geliştiricilere düğümlerle kolay etkileşim için düğüm bağlam modunu sağlar.

Düğüm bağlam modunu girin

1. düğümün düğüm bağlamını girin:

> node 1
Done
node 1>

İstemi CLI değiştirildi node 1> geçerli düğüm içeriği gösteren. Sen yazabilirsiniz OpenThread CLI komutlarını doğrudan düğüm etkileşimde sanki düğüm üzerinde yürütülecek.

Komutları düğüm bağlamında yürütün

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ç

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 gerçekleştirdiniz!

OTNS ve bağımlılıklarını nasıl kuracağınızı öğrendiniz. Sen inşa OpenThread OTNS için ve OpenThread simülasyon örnekleri ile OTNS simülasyon başladı. Her iki aracılığıyla çeşitli şekillerde simülasyon işlemek öğrendik OTNS-CLI ve OTNS-Web .

Artık OTNS'nin ne olduğunu ve OpenThread ağlarını simüle etmek için OTNS'yi nasıl kullanabileceğinizi biliyorsunuz.

Sıradaki ne?

Bu kod laboratuvarlarından bazılarına göz atın...

Referans dokümanlar