OTNS kullanarak İş Parçacığı Ağlarını simüle etme

1. Giriş

5abd22afa2f2ee9a.png

Mesaj Dizisi ve OTNS nedir

Thread, IP'ye dayalı ve düşük güçle çalışan kablosuz örgü ağ iletişimi protokolüdür. Bu şekilde, cihazlar arası ve cihazlar arası güvenli iletişimlere olanak tanır. İş parçacığı 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 kaynaklı bir uygulamasıdır. OpenThread, küçük kod boyutuna ve bellek ayak izine rağmen İleti Dizisi Spesifikasyonu'nda tanımlanan tüm özellikleri destekler.

OpenThread Network Simülatörü (OTNS), posix platformlarında simüle edilmiş OpenThread düğümleri çalıştırarak İş Parçacığının ağlarını simüle etmek için kullanılabilir. OTNS, simülasyonu yapılan İş Parçacık 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 ve bağımlıları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 yararlı özelliklerini kullanmak
  • OpenThread'in tek hata noktası hatasını doğrulama

Bu codelab, OTNS-CLI ve OTNS-Web'e odaklanmıştır. OTNS'nin Python komut dosyası gibi diğer özellikleri ele alınmamıştır.

Gerekenler

  • Linux x86_64 veya Mac OS.
  • Git.
  • Go 1.11 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.
  • İleti Dizisi Primer. Bu Codelab'de öğretilenleri anlamak için Thread'in temel kavramlarını bilmeniz gerekir.

2. Kurulum

Go'yu yükle

OTNS'nin çalışması için Go 1.11 ve üzeri bir sürüm gereklidir.

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

OTNS kodunu al

$ 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 bir şifre girmeniz istenebilir.

Ots yükle

otns uygulamasını $GOPATH/bin cihazına yükleyin:

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

otns hizmetinin 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 şunu eklediğinizi doğrulayın: $(go env GOPATH)/bin $PATH.

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

OpenThread derlemesini OTNS=1 ile oluşturun

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

OpenThread yürütülebilir dosyalarını output dizininde bulabilirsiniz:

Linux

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

macOS

$ 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

Çalıştırma otns:

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

Başarılı bir şekilde başlatıldığında, OTNS bir KSA konsoluna (OTNS-CLI) girer ve ağ görselleştirme ile yönetim için bir web tarayıcısı başlatır (OTNS-Web):

a0e05178d66929b1.png

OTNS-Web için yalnızca boş bir sayfa görüyorsanız büyük olasılıkla tarayıcınızda WebGL etkin değildir. Lütfen WebGL'nin nasıl etkinleştirileceğini öğrenmek içinhttps://superuser.com/a/836833 adresine bakın.

Aşağıdaki 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 Tanıma

OTNS KSA

OTNS-CLI, OTNS simülasyonlarını yönetmek için bir Komut Satırı Arayüzü (CLI) sağlar.

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

OTNS-CLI ile komut yazabilirsiniz. Komutların tam listesi için OTNS CLI referansına bakın. Endişelenmeyin, bu Codelab'deki 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 edilmiş İş Parçacık ağının düğümlerini, mesajlarını ve bağlantılarını görsel olarak temsil eder. OTNS-Web öğesinin çeşitli öğelerine dikkat edin:

4c5b43509a2ca0d0.png

6. Düğüm Ekle

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

Konuma Yönlendirici ekle (300, 100)

> add router x 300 y 100
1
Done

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

6ca8c2e63ed9818d.png

OTNS-CLI üzerinden daha fazla düğüm ekle

> 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ümle birleşmesi için birkaç saniye bekleyin. Düğümleri OTNS-WEB öğesinde göreceksiniz:

3ee67903c01aa612.png

OTNS-Web düğümü ekle

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 bir düğüm oluşturulduğunu göreceksiniz. Düğümü, OTNS-CLI tarihine kadar oluşturduğunuz Liderin yanına sürükleyin. Tüm düğümler sonuçta tek bir bölüm halinde birleştirilmelidir:

420258bb92561146.png

Ayrıca, diğer düğüm türlerini oluşturmak için İşlem Çubuğu'ndaki FED, MED ve SED düğmelerini tıklayın. Mevcut düğümlerin yanındaki konumlara sürükleyerek o iş parçacığı ağına ekleyin:

fe15d6f9726a099e.png

Birçok düğüm içeren bir bölümden bir İş Parçacık 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ı Ayarla

Şu anda simülasyonun 1X hızında çalışması gerekmektedir. Bu, şimdiye kadar geçen simülasyon simülasyonunun, ilk düğümü oluşturmamızdan bu yana geçen gerçek zamanla aynı olduğu anlamına gelir.

OTNS-CLI boyunca hızı ayarlayın

Simülasyon hızını OTNS-CLI üzerinden ayarlayabilirsiniz.

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

> speed 100
Done

Düğümlerin, eskisinden çok daha sık ileti gönderdiğini görürsünüz.

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

> speed max
Done

Şu anda OTNS olabildiğince hızlı bir şekilde simülasyon yapmaya çalışmaktadır. Bu nedenle, düğümlerin çok sayıda mesaj gönderdiğini görmeniz gerekir.

Simülasyonu duraklat

> speed 0
Done

Simülasyon hızının 0 olarak ayarlanması simülasyonu duraklatır.

Simülasyonu normal hızda geri yükler

> speed 1
Done

Simülasyon hızının 0 değerinden büyük bir değere ayarlanması simülasyonu devam ettirir.

OTNS-Web boyunca hızı ayarlayın

Hız kontrol düğmeleri

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

Simülasyonu hızlandır

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

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şir.

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 kazanmak için

OTNS-CLI simülasyonun hızını

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

> speed 10
Done

8. Radyoyu Aç/Kapat

Şimdi simülasyon 2 Yönlendirici (altıgen şekil) ve birçok alt öğe içermeli ve 10 kat hızda çalıştırılmalıdır.

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

8c6a2e191cdae0c7.png

Radyoyu kapat

Lider düğümünün radyosunu kapatmak için İşlem Çubuğunda 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 saniye (simülasyon süresi 120 sn) bekleyin:

e3d32f85c4a1b990

İş Parçacığı ağı, yeni bir Lider ile yeni bir bölüm oluşturarak otomatik olarak Lider hatasından kurtulur. Yeni bölümlendirmenin ayrıca yeni bir bölüm rengi vardır.

Radyoyu aç

Radyosu kapalı olan Lideri seçin. Radyo bağlantısını geri yüklemek için Action Bar üzerindeki 2d9cecb8612b42aa.png düğmesini tıklayın.

7370a7841861aa3a.png

Lider, radyo bağlantısı yeniden kurulduktan sonra ağa yeniden bağlanı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 üzerinden taşı

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

> move 5 600 300
Done

Düğüm 5 artık diğer Yönlendiriciden çok uzakta olduğu için aralarındaki bağlantıyı kesecek ve yaklaşık 12 saniye sonra (simülasyon simülasyonunda 120 sn) kendi bölümlendirmelerinin Lideri olacaktır:

c06b4d0a4f183299

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

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

9ba305c4c5a5f892.png

10. Düğümleri Silme

OTNS-CLI ile düğümleri sil

Düğüm 8'i sil:

> del 8
Done

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

18156770d9f8bf83.png

OTNS-Web ile düğümleri sil

5. düğümü seçin ve Action Bar üzerindeki 7ff6afd565f4eafc.png düğmesini tıklayarak düğümü 5'i silin:

d4079cceea0105f0.png

Node 1, Lider olmalıdır ve Node 7 herhangi bir Yönlendiriciye ulaşamadığı için çıkarmalıdır.

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

OTNS-Web içindeki tüm düğümleri silerek simülasyonu temizleyebilirsiniz.

Action Bar. sitesindeki 89618191721e79a0.png düğmesini tıklayın. Tüm düğümler tek seferde kaybolur.

Devam etmeden önce...

Bu eğitimde devam edebilmek için simülasyonu kendinize bazı düğümler ekleyin.

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

OTNS-CLI, geliştiricilerin bir düğümün durumunu teşhis etmesine yardımcı olmak için düğümlerle kolay etkileşim için düğüm bağlamı modunu 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ı belirten node 1> olarak değiştirildi. Düğümle doğrudan etkileşim kuruyormuşsunuz gibi yürütülecek OpenThread CLI komutlarını yazabilirsiniz.

Düğüm bağlamında komutlar 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 yürüttünüz!

OTNS'yi ve bağımlılarını nasıl yükleyeceğinizi öğrendiniz. OTNS için OpenThread'i oluşturdunuz ve OpenThread simülasyonu örnekleriyle OTNS simülasyonu başlattınız. Hem OTNS-CLI hem de OTNS-Web aracılığıyla simülasyonun çeşitli şekillerde nasıl değiştirileceğini öğrendiniz.

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

Sonraki adım

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

Referans belgeleri