OTNS kullanarak ileti dizisi ağlarını simüle etme

1. Giriş

5abd22afa2f2ee9a.png

Thread nedir ve OTN'ler

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.

Neler öğreneceksiniz?

  • OTNS'yi 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 faydalı özelliklerini kullanma
  • OpenThread'in tek hata noktası olmadığını doğrulama

Bu codelab'in odak noktası OTNS-CLI ve OTNS-Web'dir. OTNS'un Python kodlama gibi diğer özellikleri ele alınmamıştır.

Gerekenler

  • Linux x86_64 veya Mac OS.
  • Git.
  • 1.13 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.
  • Thread Primer. Bu Codelab'de öğretilen konuları anlamak için temel Thread kavramlarını bilmeniz gerekir.

2. Kurulum

Go'yu yükleyin

OTNS'de derleme için Go 1.13 ve sonraki sürümler gerekir.

  1. https://golang.org/dl/ adresinden Go'yu yükleyin.
  2. $PATH içine $(go env GOPATH)/bin (normalde $HOME/go/bin) eklenir:
$ export PATH=$PATH:$(go env GOPATH)/bin

OTNS kodu al

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

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

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

sudo için şifre girmeniz istenebilir.

OTN'yi yükleme

otns uygulamasını $GOPATH/bin sitesine 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

  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. otns komutu bulunamazsa $PATH. komut dosyasına $(go env GOPATH)/bin eklediğinizden emin olun

3. OTNS için OpenThread oluşturma

GitHub'dan OpenThread kodu alın

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

OTNS=1 ile OpenThread oluşturun

$ 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 dosyalarını build dizininde bulabilirsiniz:

$ ls ~/src/openthread/build/simulation/examples/apps/cli/
ot-cli-ftd        ot-cli-mtd        ot-cli-radio

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

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

Çalıştırma otns:

$ cd ~/src/openthread/build/simulation/examples/apps/cli
$ otns
> ← OTNS-CLI prompt

Başarıyla başlatıldığında OTNS, bir CLI konsoluna (OTNS-CLI) girip ağ görselleştirme ve yönetimi için bir web tarayıcısı (OTNS-Web) başlatır:

a0e05178d66929b1.png

OTNS-Web için yalnızca boş bir sayfa görüyorsanız tarayıcınızda WebGL etkinleştirilmemiş olabilir. WebGL'yi etkinleştirme hakkında daha fazla bilgi içinhttps://superuser.com/a/836833 adresine bakın.

Aşağıdaki bölümlerde, OTNS-CLI ve OTNS-Web aracılığıyla OTNS simülasyonlarını nasıl yöneteceğinizi öğreneceksiniz.

5. OTNS-CLI ve OTNS-Web

OTNS-CLI

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

OTNS-CLI kullanarak komut yazabilirsiniz. Komutların tam listesi için OTNS CLI referansına bakın. Endişelenmeyin, bu Codelab'de aşağıdaki komutlardan yalnızca birkaçını kullanacaksınız.

OTNS-Web

OTNS-Web, OTNS'nin ağ görselleştirme ve yönetim aracıdır. Simüle edilen Thread ağının düğümlerinin, mesajlarının ve bağlantılarının görsel bir temsilini sunar. OTNS-Web öğesinin çeşitli öğelerine dikkat edin:

4c5b43509a2ca0d0.png

6. Düğüm Ekle

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

(300, 100) konumuna bir Yönlendirici ekle

> add router x 300 y 100
1
Done

OTNS-Web içinde oluşturulmuş bir düğüm göreceksiniz. Düğüm, bir Yönlendirici olarak başlar ve birkaç saniye içinde Lider haline gelir:

6ca8c2e63ed9818d.png

OTNS-CLI üzerinden 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 tek bir bölümde birleştirilmesi için birkaç saniye bekleyin. Düğümleri OTNS-WEB bölgesinde göreceksiniz:

3ee67903c01aa612.png

Düğüm ekleme ölçütü: OTNS-Web

OTNS-Web aracılığıyla da düğüm ekleyebilirsiniz. Action Bar öğesinin New Router düğmesini tıklayın. New Router düğmesinin hemen üzerinde, oluşturulmakta olan bir düğüm görürsünüz. Düğümü, OTNS-CLI aracılığıyla oluşturduğunuz Liderin yakınında olacak şekilde sürükleyin. Tüm düğümler sonuçta tek bir bölümde birleştirilir:

420258bb92561146.png

Ayrıca, başka düğüm türleri oluşturmak için İşlem Çubuğu'ndaki FED, MED ve SED düğmelerini de tıklayabilirsiniz. Bunları mevcut düğümlerin yakınındaki konumlara sürükleyerek söz konusu Thread ağına ekleyin:

fe15d6f9726a099e.png

Şimdi çok sayıda düğüm içeren bir bölümlendirmeden oluşan Thread ağı oluşturdunuz. 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ı Ayarla

Şu anda simülasyonun 1X hızında çalışıyor olması gerekir. Yani, şu ana kadar geçen süre simülasyonu, ilk düğümü oluşturduğumuzdan beri geçen gerçek süreyle aynı.

OTNS-CLI tarihine kadar hızı ayarlayın

Simülasyon hızını OTNS-CLI aracılığıyla ayarlayabilirsiniz.

Simülasyon hızını 100X olarak ayarla

> speed 100
Done

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

Simülasyon hızını MAX olarak ayarla

> speed max
Done

Şu anda OTNS mümkün olduğunca hızlı simüle etmek için elinden gelenin en iyisini yapmaya çalışıyor. Bu nedenle düğümlerin çok sayıda mesaj gönderdiğini göreceksiniz.

Simülasyonu duraklat

> speed 0
Done

Hız simülasyonu 0 değerine ayarlanırsa simülasyon duraklatılı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 ettirilir.

OTNS-Web tarihine kadar hızı ayarlayın

Hız kontrol düğmeleri

Action Bar bölümünde 9329157c1bd12672.png hız kontrol düğmelerini bulun. Düğmeler, geçerli simülasyon hızını gösterir ve simüle etme hızını ayarlamak ve simülasyonu duraklatmak/devam ettirmek için kullanılabilir.

Simülasyonu hızlandır

Hız MAX: f5f460b2586d299b.png olana kadar 39b88331779277ad.png düğmesini tıklayarak simülasyonu hızlandırabilirsiniz.

Yavaşlama simülasyonu

31cca8d5b52fa900.png düğmesini tıklayarak simülasyonu yavaşlatabilirsiniz.

Simülasyonu duraklat

Simülasyon çalışırken duraklatmak için 46cc2088c9aa7ab6.png düğmesini tıklayın. Düğme ce25eda3496ffcd4.png olarak değiştirilecek.

Simülasyonu devam ettir

Duraklatıldığında simülasyonu devam ettirmek için ce25eda3496ffcd4.png düğmesini tıklayın. Düğme tekrar 46cc2088c9aa7ab6.png olarak değiştirilecek.

Simülasyon hızını 10X olarak ayarla

Zamandan tasarruf etmek için

OTNS-CLI simüle etme hızını şu şekilde ayarlayın:

10X Böylece ağdaki topoloji değişikliklerini çok daha hızlı gözlemleyebiliyoruz.

> speed 10
Done

8. Radyoyu Aç/Kapat

Şimdi, simülasyonun 2 Yönlendirici (altıgen şekil) ve birçok alt öğe içermesi ve 10 kat hızda çalışması gerekir.

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

8c6a2e191cdae0c7.png

Radyoyu kapat

Lider düğümünün radyosunu kapatmak için İşlem Çubuğu'ndaki 7ca085f470491dd4.png düğmesini tıklayın:

a3bf58d9d125f95f.png

Lider, radyo kapalıyken mesaj gönderip alamaz.

Diğer Yönlendiricinin yeni Lider olması için yaklaşık 12 sn (simülasyon süresi 120 sn) bekleyin:

e3d32f85c4a1b990.png

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

Radyoyu aç

Radyosu kapatılmış olan Lideri seçin. Radyo bağlantısını geri yüklemek için Action Bar cihazındaki 2d9cecb8612b42aa.png düğmesini tıklayın:

7370a7841861aa3a.png

Lider, radyo bağlantısı yeniden kurulduktan sonra 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ını sağlar.

Düğümü OTNS-CLI yönünde taşı

Düğüm 5'i yeni bir konuma taşıyın:

> move 5 600 300
Done

Şu an için 5. düğüm diğer Yönlendiriciden uzakta olduğundan, birbirleriyle olan bağlantıları kesmelidir ve yaklaşık 12 sn (simülasyonda 120 sn) sonra her ikisi de kendi bölümlerinin Lideri olur:

c06b4d0a4f183299.png

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

Sürükleyerek düğüm 5'i orijinal konumuna geri taşıyın. İki bölüm tekrar tek bir bölümde birleştirilir:

9ba305c4c5a5f892.png

10. Düğüm Silme

OTNS-CLI üzerinden düğümleri silin

Düğüm 8'i silin:

> del 8
Done

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

18156770d9f8bf83.png

OTNS-Web üzerinden düğümleri silin

Düğüm 5'i seçin ve düğüm 5'i silmek için Action Bar üzerindeki 7ff6afd565f4eafc.png düğmesini tıklayın:

d4079cceea0105f0.png

Node 1 Lider olmalıdır, Node 7 herhangi bir Yönlendirici'ye erişemediği için ayırmalıdır.

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

OTNS-Web üzerinden tüm düğümleri silerek simülasyonu temizleyebilirsiniz.

Action Bar. sayfasındaki 89618191721e79a0.png düğmesini tıklayın. Tüm düğümler aynı anda kaybolur.

Devam etmeden önce...

Bu eğiticiye devam edebilmek için simülasyona kendiniz birkaç düğüm ekleyin.

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

OTNS-CLI, geliştiricilerin bir düğümün durumunu teşhis etmesine yardımcı olmak amacıyla düğümlerle kolay etkileşim için düğüm bağlam modu sağlar.

Düğüm bağlam moduna gir

Düğüm 1'in düğüm bağlamını girin:

> node 1
Done
node 1>

CLI istemi , mevcut düğüm bağlamını gösteren node 1> olarak değişti. Düğüm üzerinde doğrudan düğümle etkileşimde bulunuyormuş gibi yürütülecek OpenThread CLI komutları 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ç

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'yi ve bağımlılıklarını nasıl yükleyeceğinizi öğrendiniz. OTNS için OpenThread'i oluşturdunuz ve OpenThread simülasyon örnekleriyle OTNS simülasyonunu başlattınız. Hem OTNS-CLI hem de OTNS-Web aracılığıyla simülasyonu çeşitli şekillerde nasıl manipüle edeceğinizi öğrendiniz.

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

Sırada ne var?

Bu codelab'lerden bazılarına göz atın...

Referans belgeler