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 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.
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çerirff:fe00
= Yönlendirici Bulucu (RLOC) -
ff:fe00
içermezff: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.
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:
- Simüle edilmiş iş parçacığı aygıtının CLI örneği (Düğüm 1)
-
ot-daemon
süreci -
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:
- Openthread.io'da Thread Primer
- Konu Spesifikasyonu
- OpenThread GitHub deposu
- OpenThread CLI Referansı
- Ek OpenThread Docker desteği
Veya bir Docker konteynerinde OpenThread Border Router'ı kullanmayı deneyin!