Google is committed to advancing racial equity for Black communities. See how.
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Docker'da OpenThread kullanarak bir Thread ağını simüle etme

26b7f4f6b3ea0700.png

Google tarafından yayınlanan OpenThread , Thread ağ protokolünün açık kaynaklı bir uygulamasıdır. Google Nest, bağlantılı ev için ürünlerin geliştirilmesini hızlandırmak amacıyla Nest ürünlerinde kullanılan teknolojiyi geliştiricilere yaygın olarak sunmak için OpenThread'i piyasaya sürdü.

İş Parçacığı özelliği , ev uygulamaları için IPv6 tabanlı, güvenilir, güvenli ve düşük güç tüketen kablosuz bir aygıttan aygıta iletişim protokolünü tanımlar. OpenThread, IPv6, 6LoWPAN, IEEE 802.15.4, MAC güvenliği, Mesh Link Establishment ve Mesh Routing dahil olmak üzere tüm Thread ağ katmanlarını uygular.

Bu Codelab, Docker kullanan emüle edilmiş cihazlarda bir Thread ağını simüle etme konusunda size yol gösterecektir.

Ne öğreneceksin

  • OpenThread derleme araç zinciri nasıl kurulur
  • Thread ağı nasıl simüle edilir
  • İş parçacığı düğümleri nasıl doğrulanır
  • OpenThread Daemon ile bir Thread ağı nasıl yönetilir

Neye ihtiyacın olacak

  • Liman işçisi
  • Temel Linux bilgisi, ağ yönlendirme

Bu Codelab, Docker'ı bir Linux, Mac OS X veya Windows makinesinde kullanmak için tasarlanmıştır. Linux önerilen ortamdır.

Docker'ı yükleyin

Docker'ı seçtiğiniz işletim sistemine yükleyin.

Docker'ı indirin

Docker görüntüsünü çekin

Docker kurulduktan sonra, bir terminal penceresi açın ve openthread/codelab_otsim Docker görüntüsünü çekin. Bu görüntü, OpenThread ve OpenThread Daemon'a sahiptir ve bu Codelab için önceden oluşturulmuş ve kullanıma hazırdır.

$ docker pull openthread/codelab_otsim:latest

Tamamen indirmenin birkaç dakika sürebileceğini unutmayın.

Bir terminal penceresinde, görüntüden bir Docker kapsayıcısı başlatın ve onun bash kabuğuna bağlanın:

$ docker run --name codelab_otsim_ctnr -it --rm \
   --sysctl net.ipv6.conf.all.disable_ipv6=0 \
   --cap-add=net_admin openthread/codelab_otsim bash

Bu Codelab için gerekli olan bayrakları not edin:

  • --sysctl net.ipv6.conf.all.disable_ipv6=0 - bu, kapsayıcı içinde IPv6'yı etkinleştirir
  • --cap-add=net_admin - IP yolları eklemek gibi ağ ile ilgili işlemleri yürütmenize izin veren NET_ADMIN özelliğini etkinleştirir

Konteynere girdikten sonra, şuna benzer bir uyarı almalısınız:

root@c0f3912a74ff:/#

Yukarıdaki örnekte, c0f3912a74ff , Kapsayıcı Kimliği'dir. Docker kapsayıcısı örneğiniz için Kapsayıcı Kimliği, bu Codelab için bilgi istemlerinde gösterilenden farklı olacaktır.

Docker'ı kullanma

Bu Codelab, Docker kullanmanın temellerini bildiğinizi varsayar. Codelab'in tamamı boyunca Docker konteynerinde kalmalısınız.

Bu Codelab için kullanacağınız örnek uygulama, OpenThread konfigürasyonunu ve yönetim arayüzlerini temel bir komut satırı arayüzü (CLI) aracılığıyla ortaya çıkaran minimal bir OpenThread uygulamasını gösterir.

Bu alıştırma, öykünmüş bir Thread cihazına başka bir benzetilmiş Thread cihazından ping atmak için gereken minimum adımlara götürür.

Aşağıdaki şekil temel bir Thread ağ topolojisini açıklamaktadır. Bu alıştırma için, yeşil daire içindeki iki düğümü taklit edeceğiz: aralarında tek bir bağlantı olan bir İş Parçacığı Lideri ve İş Parçacığı Yönlendirici.

6e3aa07675f902dc.png

Ağı oluşturun

1. Düğüm 1'i Başlatın

Henüz yapmadıysanız, bir terminal penceresinde Docker konteynerini başlatın ve onun bash kabuğuna bağlanın:

$ docker run --name codelab_otsim_ctnr -it --rm \
   --sysctl net.ipv6.conf.all.disable_ipv6=0 \
   --cap-add=net_admin openthread/codelab_otsim bash

Docker konteynerinde, openthread dizinine gidin ve ot-cli-ftd ikili dosyasını kullanarak öykünmüş bir Thread cihazı için CLI işlemini oluşturun.

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1

Bu ikili, POSIX üzerinde taklit edilen bir OpenThread cihazı uygular. IEEE 802.15.4 radyo sürücüsü, UDP'nin üstünde uygulanır (IEEE 802.15.4 çerçeveleri UDP yükleri içinde geçirilir).

1 argümanı, taklit edilen cihaz için "fabrikada atanmış" IEEE EUI-64'ün en az önemli bitlerini temsil eden bir dosya tanımlayıcısıdır. Bu değer, IEEE 802.15.4 radyo emülasyonu için bir UDP bağlantı noktasına bağlanırken de kullanılır (bağlantı noktası = 9000 + dosya tanımlayıcısı). Bu Codelab'deki öykünülmüş bir Thread aygıtının her bir örneği farklı bir dosya tanımlayıcı kullanacaktır.

Not: İşlemi öykünülmüş bir cihaz için oluştururken, bu Codelab'de belirtildiği gibi yalnızca 1 veya daha büyük dosya tanımlayıcılarını kullanın. Diğer kullanımlar için 0 dosya tanımlayıcısı ayrılmıştır.

Eğer görmezsen

>

komut isteminde bu komutu çalıştırdıktan sonra

enter

.

Yeni bir Operasyonel Veri Kümesi oluşturun ve onu aktif olan olarak işleyin. Operasyonel Veri Kümesi, oluşturduğunuz Thread ağının yapılandırmasıdır.

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 20
Channel Mask: 07fff800
Ext PAN ID: d6263b6d857647da
Mesh Local Prefix: fd61:2344:9a52:ede0/64
Master Key: e4344ca17d1dca2a33f064992f31f786
Network Name: OpenThread-c169
PAN ID: 0xc169
PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4
Security Policy: 0, onrcb
Done

Bu veri kümesini etkin olan olarak kaydedin:

> dataset commit active
Done

IPv6 arayüzünü açın:

> ifconfig up
Done

İş Parçacığı protokol işlemini başlatın:

> thread start
Done

Birkaç saniye bekleyin ve cihazın İş Parçacığı Lideri olduğunu doğrulayın. Lider, yönlendirici kimliği atamasını yönetmekten sorumlu cihazdır.

> state
leader
Done

Düğüm 1'in İş Parçacığı arayüzüne atanan IPv6 adreslerini görüntüleyin (çıktınız farklı olacaktır):

> ipaddr
fd61:2344:9a52:ede0:0:ff:fe00:fc00
fd61:2344:9a52:ede0:0:ff:fe00:5000
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
fe80:0:0:0:94da:92ea:1353:4f3b
Done

Belirli IPv6 adres türlerine dikkat edin:

  • fd = mesh-local ile başlar
  • fe80 = link-local ile başlar

Mesh-yerel adres türleri ayrıca sınıflandırılır:

  • ff:fe00 içerir ff:fe00 = Yönlendirici Bulucu (RLOC)
  • ff:fe00 içermez ff:fe00 = Uç Nokta Tanımlayıcısı (EID)

Konsol çıktınızda EID'yi tanımlayın, daha sonra kullanmak için bir not alın. Yukarıdaki örnek çıktıda, EID:

fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6

2. Düğüm 2'yi başlatın

Yeni bir terminal açın ve Node 2 için kullanmak üzere şu anda çalışan Docker konteynerinde bir bash kabuğu çalıştırın.

$ docker exec -it codelab_otsim_ctnr bash

Bu yeni bash isteminde, openthread dizinine gidin ve CLI sürecini openthread . Bu, öykünmüş ikinci Thread cihazınız:

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 2

Eğer görmezsen

>

komut isteminde bu komutu çalıştırdıktan sonra

enter

.

Düğüm 1'in İşletim Veri Kümesi ile aynı değerleri kullanarak İş Parçacığı Ana Anahtarını ve PAN Kimliğini yapılandırın:

> dataset masterkey e4344ca17d1dca2a33f064992f31f786
Done
> dataset panid 0xc169
Done

Bu veri kümesini etkin olan olarak kaydedin:

> dataset commit active
Done

IPv6 arayüzünü açın:

> ifconfig up
Done

İş Parçacığı protokol işlemini başlatın:

> thread start
Done

Cihaz kendisini bir Çocuk olarak başlatacaktır. Bir İş Parçacığı Alt Öğesi, yalnızca bir Ana aygıtla tek noktaya yayın trafiğini ileten ve alan bir İş Parçacığı aygıtı olan bir Son Aygıta eşdeğerdir.

> state
child
Done

2 dakika içinde, durumun child router görmelisiniz. Bir İş Parçacığı Yönlendirici, İş Parçacığı aygıtları arasında trafiği yönlendirebilir. Aynı zamanda Ebeveyn olarak da anılır.

> state
router
Done

Ağı doğrulayın

Örgü ağını doğrulamanın kolay bir yolu, yönlendirici tablosuna bakmaktır.

1. Bağlantıyı kontrol edin

Düğüm 2'de, RLOC16'yı alın. RLOC16, aygıtın RLOC IPv6 adresinin son 16 bitidir.

> rloc16
5800
Done

Düğüm 1'de, Düğüm 2'nin RLOC16'sı için yönlendirici tablosunu kontrol edin. Önce Düğüm 2'nin yönlendirici durumuna geçtiğinden emin olun.

> router table
| ID | RLOC16 | Next Hop | Path Cost | LQ In  | LQ Out  | Age | Extended MAC   |
+----+--------+----------+-----------+--------+-------+---+--------------------+
| 20 | 0x5000 |       63 |         0 |      0 |     0 |   0 | 96da92ea13534f3b |
| 22 | 0x5800 |       63 |         0 |      3 |     3 |  23 | 5a4eb647eb6bc66c |

Düğüm 2'nin 0x5800 0x5800 tabloda bulunur ve ağa bağlı olduğunu doğrular.

2. Düğüm 2'den Düğüm 1'e Ping Yapın

Öykünülmüş iki Thread cihazı arasındaki bağlantıyı doğrulayın. Düğüm 2'de, Düğüm 1'e atanan EID'ye ping atın:

> ping fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
> 16 bytes from fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6: icmp_seq=1 hlim=64 time=12ms

> CLI istemine dönmek için enter tuşuna basın.

Ağı test edin

Artık öykünülmüş iki Thread cihazı arasında başarılı bir şekilde ping atabildiğinize göre, bir düğümü çevrimdışına alarak mesh ağını test edin.

Düğüm 1'e dönün ve Konuyu durdurun:

> thread stop
Done

Düğüm 2'ye geçin ve durumu kontrol edin. İki dakika içinde Düğüm 2, liderin (Düğüm 1) çevrimdışı olduğunu algılar ve Ağın leader olarak Düğüm 2 geçişini görmeniz gerekir:

> state
router
Done
...
> state
leader
Done

Onaylandıktan sonra, İş Parçacığını durdurun ve Docker bash istemine geri dönmeden önce Düğüm 2'yi fabrika ayarlarına sıfırlayın. Bu alıştırmada kullandığımız Thread ağ kimlik bilgilerinin bir sonraki alıştırmaya taşınmamasını sağlamak için fabrika ayarlarına sıfırlama yapılır.

> thread stop
Done
> factoryreset
>
> exit
root@c0f3912a74ff:/#

factoryreset komutunun ardından > istemini geri getirmek için birkaç kez enter tuşuna basmanız gerekebilir. Docker konteynerinden çıkmayın.

Ayrıca fabrika ayarlarına sıfırlayın ve Düğüm 1'den çıkın:

> factoryreset
>
> exit
root@c0f3912a74ff:/#

Mevcut tüm CLI komutlarını keşfetmek için OpenThread CLI Başvurusu'na bakın.

Önceki alıştırmada, iki simüle cihaz ve doğrulanmış bağlantı ile bir Thread ağı kuruyordunuz. Ancak, bu yalnızca kimliği doğrulanmamış IPv6 yerel bağlantı trafiğinin cihazlar arasında geçişine izin verir. Küresel IPv6 trafiğini aralarında (ve bir İş Parçacığı sınır yönlendiricisi aracılığıyla İnternet) yönlendirmek için düğümlerin kimlik doğrulaması yapılmalıdır.

Kimlik doğrulaması için, bir cihazın Komiser olarak hareket etmesi gerekir. Yetkili, yeni İş Parçacığı aygıtları için şu anda seçilmiş kimlik doğrulama sunucusudur ve aygıtların ağa katılması için gereken ağ kimlik bilgilerini sağlamak için yetkilendiricidir.

Bu alıştırmada, önceki gibi aynı iki düğümlü topolojiyi kullanacağız. Kimlik doğrulama için, İş Parçacığı Lideri Komiser, İş Parçacığı Yönlendiricisi de Birleştirici olarak hareket edecektir.

d6a67e8a0d0b5dcb.png

Liman işçisi

Kalan alıştırmalardaki her Düğüm (terminal penceresi) için Docker konteynerini OpenThread derlemesiyle çalıştırdığınızdan emin olun. Önceki alıştırmadan devam ediyorsanız, aynı Docker konteynerinde zaten açık olan iki bash isteminiz olmalıdır. Değilse, Docker Sorunlarını Giderme adımına bakın veya Simulate a Thread ağ alıştırmasını yeniden yapın.

1. Bir ağ oluşturun

1. Düğümde, CLI sürecini başlatın:

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1

Eğer görmezsen

>

komut isteminde bu komutu çalıştırdıktan sonra

enter

.

Yeni bir Operasyonel Veri Kümesi oluşturun, onu aktif olarak işleyin ve Thread'ı başlatın:

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 12
Channel Mask: 07fff800
Ext PAN ID: e68d05794bf13052
Mesh Local Prefix: fd7d:ddf7:877b:8756/64
Master Key: a77fe1d03b0e8028a4e13213de38080e
Network Name: OpenThread-8f37
PAN ID: 0x8f37
PSKc: f9debbc1532487984b17f92cd55b21fc
Security Policy: 0, onrcb
Done

Bu veri kümesini etkin olan olarak kaydedin:

> dataset commit active
Done

IPv6 arayüzünü açın:

> ifconfig up
Done

İş Parçacığı protokol işlemini başlatın:

> thread start
Done

Birkaç saniye bekleyin ve cihazın İş Parçacığı Lideri olduğunu doğrulayın:

> state
leader
Done

2. Komiser rolünü başlatın

Hala 1. Düğümdeyken, Komisyon Üyesi rolünü başlatın:

> commissioner start
Done

J01NME Marangoz Kimlik J01NME sahip herhangi bir J01NME ( * joker karakterini kullanarak) ağda devreye J01NME izin verin. Bir birleştirici, bir insan yönetici tarafından görevlendirilmiş bir İş Parçacığı Ağına eklenen bir cihazdır.

> commissioner joiner add * J01NME
Done

3. Joiner rolünü başlatın

İkinci bir terminal penceresinde, Docker konteynerinde, yeni bir CLI işlemi oluşturur. Bu, Düğüm 2.

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 2

Düğüm 2'de, J01NME Joiner Kimlik J01NME kullanarak Joiner rolünü etkinleştirin.

> ifconfig up
Done
> joiner start J01NME
Done

... onay için birkaç saniye bekleyin ...

Join success

Bir Joiner olarak, cihaz (Düğüm 2), Yetkili ile (Düğüm 1) kendini başarıyla doğruladı ve İş Parçacığı Ağı kimlik bilgilerini aldı.

Artık Düğüm 2'nin kimliği doğrulanmıştır, İş Parçacığını başlatın:

> thread start
Done

4. Ağ kimlik doğrulamasını doğrulayın

Şimdi ağa katıldığını doğrulamak için Düğüm 2'deki state kontrol edin. İki dakika içinde, Düğüm 2 child router :

> state
child
Done
...
> state
router
Done

5. Yapılandırmayı sıfırlayın

Bir sonraki egzersize hazırlanmak için yapılandırmayı sıfırlayın. Her Düğümde, İş Parçacığını durdurun, fabrika ayarlarına sıfırlayın ve öykünülmüş İş Parçacığı cihazından çıkın:

> thread stop
Done
> factoryreset
>
> exit
root@c0f3912a74ff:/#

factoryreset komutunun ardından > istemini geri getirmek için birkaç kez enter tuşuna basmanız gerekebilir.

Bu alıştırma için, bir CLI örneğini (tek bir yerleşik SoC Thread cihazı) ve bir Radyo Eş İşlemci (RCP) örneğini simüle edeceğiz.

ot-daemon , OpenThread çekirdeğinin hizmet olarak çalışabilmesi için giriş ve çıkış olarak bir UNIX soketi kullanan OpenThread Posix uygulamasının bir modudur. Bir istemci, protokol olarak OpenThread CLI kullanarak sokete bağlanarak bu hizmetle iletişim kurabilir.

ot-ctl , ot-ctl yönetmek ve yapılandırmak için ot-daemon tarafından sağlanan bir CLI'dir. Bunu kullanarak, RCP'yi Thread cihazı tarafından oluşturulan ağa bağlayacağız.

Liman işçisi

Bu alıştırmadaki her Node (terminal penceresi) için Docker konteynerini OpenThread yapısıyla çalıştırdığınızdan emin olun. Önceki alıştırmadan devam ediyorsanız, aynı Docker konteynerinde zaten açık olan iki bash isteminiz olmalıdır. Değilse, Docker Sorunlarını Giderme adımına bakın.

Ot-arka plan programı kullanın

Bu alıştırma, aşağıdakilere karşılık gelen üç terminal penceresi kullanacaktır:

  1. Simüle edilmiş iş parçacığı aygıtının CLI örneği (Düğüm 1)
  2. ot-daemon süreci
  3. ot-ctl CLI örneği

1. Düğüm 1'i Başlatın

İlk terminal penceresinde, taklit edilen Thread cihazınız için CLI işlemini başlatın:

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/simulation/bin/ot-cli-ftd 1

Eğer görmezsen

>

komut isteminde bu komutu çalıştırdıktan sonra

enter

.

Yeni bir Operasyonel Veri Kümesi oluşturun, onu aktif olarak işleyin ve Thread'ı başlatın:

> dataset init new
Done
> dataset
Active Timestamp: 1
Channel: 13
Channel Mask: 07fff800
Ext PAN ID: 97d584bcd493b824
Mesh Local Prefix: fd55:cf34:dea5:7994/64
Master Key: ba6e886c7af50598df1115fa07658a83
Network Name: OpenThread-34e4
PAN ID: 0x34e4
PSKc: 38d6fd32c866927a4dfcc06d79ae1192
Security Policy: 0, onrcb
Done

Bu veri kümesini etkin olan olarak kaydedin:

> dataset commit active
Done

IPv6 arayüzünü açın:

> ifconfig up
Done

İş Parçacığı protokol işlemini başlatın:

> thread start
Done

Düğüm 1'in İş Parçacığı arayüzüne atanan IPv6 adreslerini görüntüleyin:

> ipaddr
fd55:cf34:dea5:7994:0:ff:fe00:fc00
fd55:cf34:dea5:7994:0:ff:fe00:d000
fd55:cf34:dea5:7994:460:872c:e807:c4ab
fe80:0:0:0:9cd8:aab6:482f:4cdc
Done
>

Bir İplik Ağını Simüle Et adımında açıklandığı gibi, bir adres yerel bağlantı ( fe80 ) ve üçü ağ-yerel ( fd ). EID, adreste ff:fe00 içermeyen örgü yerel adrestir. Bu örnek çıktıda, EID fd55:cf34:dea5:7994:460:872c:e807:c4ab .

ipaddr çıktınızdan düğümle iletişim kurmak için kullanılacak belirli EID'yi belirleyin.

2. ot-daemon'u başlatın

İkinci terminal penceresinde, bir oluşturma tun aygıt düğümü ve ayar okuma / yazma:

root@c0f3912a74ff:/# mkdir -p /dev/net && mknod /dev/net/tun c 10 200
root@c0f3912a74ff:/# chmod 600 /dev/net/tun

Bu cihaz, sanal cihazlarda paket iletimi ve alımı için kullanılır. Aygıt zaten oluşturulmuşsa bir hata alabilirsiniz - bu normaldir ve göz ardı edilebilir.

openthread dizinine gidin ve Düğüm 2 olarak adlandıracağımız RCP düğümü için ot-daemon başlatın. Günlük çıktısını görebilmek ve çalıştığını doğrulamak için -v ayrıntılı bayrağını kullanın:

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/posix/bin/ot-daemon -v \
    'spinel+hdlc+forkpty://output/simulation/bin/ot-rcp?forkpty-arg=2'

Başarılı olduğunda, ayrıntılı moddaki ot-daemon aşağıdakine benzer bir çıktı üretir:

ot-daemon[228024]: Running OPENTHREAD/20191113-00831-gfb399104; POSIX; Jun 7 2020 18:05:15
ot-daemon[228024]: Thread version: 2
ot-daemon[228024]: RCP version: OPENTHREAD/20191113-00831-gfb399104; SIMULATION; Jun 7 2020 18:06:08

3. Ağa katılmak için ot-ctl kullanın

Henüz herhangi bir Thread ağına Düğüm 2'yi ( ot-daemon RCP) görevlendirmedik. ot-ctl burada devreye girer. ot-ctl , OpenThread CLI uygulamasıyla aynı CLI'yi kullanır. Bu nedenle, ot-daemon düğümlerini diğer simüle edilmiş Thread cihazlarıyla aynı şekilde kontrol edebilirsiniz.

Üçüncü bir terminal penceresi açın ve mevcut konteyneri yürütün:

$ docker exec -it codelab_otsim_ctnr bash

Konteynere girdikten sonra ot-ctl başlatın:

root@c0f3912a74ff:/# cd ~/src/openthread
root@c0f3912a74ff:/# ./output/posix/bin/ot-ctl
>

ot-daemon ile başlattığınız Düğüm 2'nin (RCP düğümü) state kontrol edin:

> state
disabled
Done

Belirli Birleştiriciye katılmayı kısıtlamak için Düğüm 2'nin eui64 edinin:

> eui64
18b4300000000001
Done

Düğüm 1'de, Komiseri başlatın ve yalnızca şu eui64 ile katılmayı kısıtlayın:

> commissioner start
Done
> commissioner joiner add 18b4300000000001 J01NME
Done

Düğüm 2'de, ağ arayüzünü açın ve ağa katılın:

> ifconfig up
Done
> joiner start J01NME
Done

... onay için birkaç saniye bekleyin ...

Join success

Bir Birleştirici olarak, RCP (Düğüm 2), Komisyon Üyesi (Düğüm 1) ile kendini başarıyla doğruladı ve İş Parçacığı Ağı kimlik bilgilerini aldı.

Şimdi Düğüm 2'yi Thread ağına katılın:

> thread start
Done

4. Ağ kimlik doğrulamasını doğrulayın

Şimdi ağa katıldığını doğrulamak için Düğüm 2'deki state kontrol edin. İki dakika içinde, Düğüm 2 child router :

> state
child
Done
...
> state
router
Done

5. Bağlantıyı doğrulayın

Ctrl + D'yi kullanarak ve ana makinenizin komut satırında, ping6 komutuyla EID'sini kullanarak Düğüm 1'e ping yaparak ot-ctl çıkın. ot-daemon RCP örneği, Thread ağına başarıyla katılırsa ve onunla iletişim kurarsa, ping başarılı olur:

root@c0f3912a74ff:/# ping6 -c 4 fd55:cf34:dea5:7994:460:872c:e807:c4ab
PING fd55:cf34:dea5:7994:460:872c:e807:c4ab (fd55:cf34:dea5:7994:460:872c:e807:c4ab): 56 data bytes
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=0 ttl=64 time=4.568 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=1 ttl=64 time=6.396 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=2 ttl=64 time=7.594 ms
64 bytes from fd55:cf34:dea5:7994:460:872c:e807:c4ab: icmp_seq=3 ttl=64 time=5.461 ms
--- fd55:cf34:dea5:7994:460:872c:e807:c4ab ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max/stddev = 4.568/6.005/7.594/1.122 ms

Docker konteynerinden çıkmışsanız

bash sorarsa , çalışıp çalışmadığını kontrol etmeniz ve gerektiğinde yeniden başlatmanız / yeniden girmeniz gerekebilir.

Hangi Docker konteynerlerinin çalıştığını göstermek için:

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
505fc57ffc72        codelab_otsim       "bash"              10 minutes ago      Up 10 minutes                           codelab_otsim_ctnr

Tüm Docker kapsayıcılarını (hem çalışan hem de durdurulmuş) göstermek için:

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
505fc57ffc72        codelab_otsim       "bash"              10 minutes ago      Up 10 minutes                           codelab_otsim_ctnr

codelab_otsim_ctnr docker ps komutlarından herhangi birinin çıktısında kapsayıcı codelab_otsim_ctnr görmüyorsanız, yeniden çalıştırın:

$ docker run --name codelab_otsim_ctnr -it --rm \
   --sysctl net.ipv6.conf.all.disable_ipv6=0 \
   --cap-add=net_admin openthread/codelab_otsim bash

Kap durursa (listelenen docker ps -a ancak docker ps , yeniden başlatın):

$ docker start -i codelab_otsim_ctnr

Docker kapsayıcısı zaten çalışıyorsa ( docker ps listelenmiştir), her terminaldeki kapsayıcıya yeniden bağlanın:

$ docker exec -it codelab_otsim_ctnr bash

OpenThread kullanarak ilk Thread ağınızı başarıyla simüle ettiniz. Harika!

Bu Codelab'de şunları öğrendiniz:

  • OpenThread Simulation Docker konteynerini başlatın ve yönetin
  • Bir Thread ağını simüle edin
  • İş Parçacığı düğümlerini doğrulayın
  • OpenThread Daemon ile bir Thread ağını yönetin

Thread ve OpenThread hakkında daha fazla bilgi edinmek için şu referansları inceleyin:

Veya bir Docker konteynerinde OpenThread Border Router'ı kullanmayı deneyin!