1. Giriş
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.
- https://golang.org/dl/ adresinden Go'yu yükleyin.
$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
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.
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:
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:
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:
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:
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:
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:
Ş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 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
: olana 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ışırken 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 tekrar 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:
Radyoyu kapat
Lider düğümünün radyosunu kapatmak için İşlem Çubuğu'ndaki düğmesini tıklayın:
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:
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 düğmesini tıklayın:
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:
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:
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:
OTNS-Web
üzerinden düğümleri silin
Düğüm 5'i seçin ve düğüm 5'i silmek için Action Bar
üzerindeki düğmesini tıklayın:
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 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...
- OpenThread ile Thread ağını simüle etme
- Docker'da OpenThread kullanarak Thread ağı simülasyonu
- nRF52840 kartları ve OpenThread ile Thread ağı oluşturma