OTNS'i kullanarak Mesaj Dizisi Ağlarını simüle etme

1. Giriş

5abd22afa2f2ee9a.png

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.

  1. Go'yu https://golang.org/dl/ adresinden yükleyin
  2. $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

  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. 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):

a0e05178d66929b1.png

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:

4c5b43509a2ca0d0.png

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:

6ca8c2e63ed9818d.png

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:

3ee67903c01aa612.png

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:

420258bb92561146.png

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.

fe15d6f9726a099e.png

Ş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 9329157c1bd12672.png 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 39b88331779277reklam.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ışıyorken 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, 46cc2088c9aa7ab6.png 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:

8c6a2e191cdae0c7.png

Radyoyu kapat

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

a3bf58d9d125f95f.png

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

Diğer Yönlendiricinin yeni Lidere dönüşmesi için yaklaşık 12 sn. bekleyin.

e3d32f85c4a1b990.png

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 2d9cecb8612b42aa.png düğmesini tıklayın:

7370a7841861aa3a.png

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:

c06b4d0a4f183299.png

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:

9ba305c4c5a5f892.png

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:

18156770d9f8bf83.png

Düğümleri OTNS-Web üzerinden sil

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 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 89618191721e79a0.png 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...

Referans dokümanlar