1. Pengantar
OpenThread yang dirilis oleh Google adalah implementasi open source protokol jaringan Thread. Google Nest telah merilis OpenThread untuk menjadikan teknologi yang digunakan di produk Nest tersedia secara luas bagi developer guna mempercepat pengembangan produk untuk rumah yang terhubung.
Spesifikasi Thread menetapkan protokol komunikasi perangkat-ke-perangkat nirkabel berbasis IPv6 yang andal, aman, dan rendah daya untuk aplikasi rumah. OpenThread mengimplementasikan semua lapisan jaringan Thread termasuk IPv6, 6LoWPAN, IEEE 802.15.4 dengan keamanan MAC, Mesh Link Assignment, dan Mesh Routing.
Codelab ini akan memandu Anda melakukan simulasi jaringan Thread pada perangkat yang diemulasi menggunakan Docker.
Yang akan Anda pelajari
- Cara menyiapkan toolchain build OpenThread
- Cara menyimulasikan jaringan Thread
- Cara mengautentikasi Node thread
- Cara mengelola jaringan Thread dengan OpenThread Daemon
Yang Anda butuhkan
- Docker
- Pengetahuan dasar tentang Linux, pemilihan rute jaringan
2. Menyiapkan Docker
Codelab ini dirancang untuk menggunakan Docker pada perangkat Linux, Mac OS X, atau Windows. Linux adalah lingkungan yang direkomendasikan.
Instal Docker
Instal Docker di OS pilihan Anda.
Menarik gambar Docker
Setelah Docker terinstal, buka jendela terminal dan tarik image Docker openthread/environment
. Gambar ini menampilkan OpenThread dan OpenThread Daemon yang telah dibuat sebelumnya dan siap digunakan untuk Codelab ini.
$ docker pull openthread/environment:latest
Perlu diperhatikan bahwa proses download memerlukan waktu beberapa menit.
Di jendela terminal, mulai container Docker dari image dan hubungkan ke shell bash
-nya:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/environment bash
Perhatikan flag, yang diperlukan untuk Codelab ini:
--sysctl net.ipv6.conf.all.disable_ipv6=0
— ini mengaktifkan IPv6 dalam penampung--cap-add=net_admin
— mengaktifkan kemampuan NET_ADMIN, yang memungkinkan Anda menjalankan operasi terkait jaringan, seperti menambahkan rute IP
Setelah berada di container, Anda akan melihat pesan seperti ini:
root@c0f3912a74ff:/#
Pada contoh di atas, c0f3912a74ff
adalah ID Penampung. ID Container untuk instance container Docker akan berbeda dari yang ditampilkan dalam perintah untuk Codelab ini.
Menggunakan Docker
Codelab ini mengasumsikan bahwa Anda mengetahui dasar-dasar penggunaan Docker. Anda harus tetap berada di container Docker selama keseluruhan Codelab.
3. Menyimulasikan jaringan Thread
Contoh aplikasi yang akan Anda gunakan untuk Codelab ini mendemonstrasikan aplikasi OpenThread minimal yang mengekspos konfigurasi pengelolaan dan antarmuka OpenThread melalui antarmuka command line (CLI) dasar.
Latihan ini akan memandu Anda melakukan langkah-langkah minimal yang diperlukan untuk melakukan ping ke satu perangkat Thread yang diemulasikan dari perangkat Thread yang diemulasikan.
Gambar di bawah ini menjelaskan topologi jaringan Thread dasar. Untuk latihan ini, kita akan mengemulasi dua node dalam lingkaran hijau: Thread Leader dan Thread Router dengan satu koneksi di antara keduanya.
Membuat jaringan
1. Memulai Node 1
Jika Anda belum melakukannya, di jendela terminal, jalankan container Docker dan hubungkan ke shell bash
-nya:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/environment bash
Dalam container Docker, berikan proses CLI untuk perangkat Thread yang diemulasi menggunakan biner ot-cli-ftd
.
root@c0f3912a74ff:/# /openthread/build/examples/apps/cli/ot-cli-ftd 1
Catatan: Jika Anda tidak melihat perintah >
setelah menjalankan perintah ini, tekan enter
.
Biner ini mengimplementasikan perangkat OpenThread. Driver radio IEEE 802.15.4 diimplementasikan di atas UDP (frame IEEE 802.15.4 diteruskan dalam payload UDP).
Argumen 1
adalah deskripsi file yang merepresentasikan bit yang paling tidak signifikan dari "setelan yang ditetapkan pabrik" IEEE EUI-64 untuk perangkat yang diemulasikan. Nilai ini juga digunakan saat mengikat ke port UDP untuk emulasi radio IEEE 802.15.4 (port = 9000 + file deskriptor). Setiap instance perangkat Thread yang diemulasikan dalam Codelab ini akan menggunakan deskriptor file yang berbeda.
Catatan: Hanya gunakan deskriptor file 1
atau yang lebih baru, seperti yang disebutkan dalam Codelab ini, saat proses menghasilkan perangkat yang diemulasikan. Deskriptor file 0
dicadangkan untuk penggunaan lain.
Membuat Set Data Operasional baru dan meng-commitnya sebagai yang aktif. Set Data Operasional adalah konfigurasi untuk jaringan Thread yang Anda buat.
> 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 Network Key: e4344ca17d1dca2a33f064992f31f786 Network Name: OpenThread-c169 PAN ID: 0xc169 PSKc: ebb4f2f8a68026fc55bcf3d7be3e6fe4 Security Policy: 0, onrcb Done
Lakukan commit pada set data ini sebagai set data aktif:
> dataset commit active Done
Munculkan antarmuka IPv6:
> ifconfig up Done
Mulai operasi protokol Thread:
> thread start Done
Tunggu beberapa detik dan verifikasi bahwa perangkat telah menjadi Pengelola Thread. Leader adalah perangkat yang bertanggung jawab untuk mengelola penetapan ID router.
> state leader Done
Lihat alamat IPv6 yang ditetapkan untuk antarmuka Thread 1's (output Anda akan berbeda):
> 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
Perhatikan jenis alamat IPv6 spesifik:
- Diawali dengan
fd
= mesh-local - Diawali dengan
fe80
= link-local
Jenis alamat mesh-lokal diklasifikasikan lebih lanjut:
- Berisi
ff:fe00
= Pencari Router (RLOC) - Tidak berisi
ff:fe00
= ID Endpoint (EID)
Identifikasi EID di output konsol Anda dan catat untuk digunakan nanti. Dalam contoh output di atas, EID-nya adalah:
fd61:2344:9a52:ede0:d041:c5ba:a7bc:5ce6
2. Memulai Node 2
Buka terminal baru dan jalankan shell bash
dalam container Docker yang sedang berjalan untuk digunakan untuk Node 2.
$ docker exec -it codelab_otsim_ctnr bash
Pada pesan bash
baru ini, munculkan proses CLI dengan argumen 2
. Ini adalah perangkat Thread kedua yang diemulasi:
root@c0f3912a74ff:/# /openthread/build/examples/apps/cli/ot-cli-ftd 2
Catatan: Jika Anda tidak melihat perintah >
setelah menjalankan perintah ini, tekan enter
.
Konfigurasikan Kunci Jaringan Thread dan ID PAN, menggunakan nilai yang sama dengan Set Data Operasional Node 1:
> dataset networkkey e4344ca17d1dca2a33f064992f31f786 Done > dataset panid 0xc169 Done
Lakukan commit pada set data ini sebagai set data aktif:
> dataset commit active Done
Munculkan antarmuka IPv6:
> ifconfig up Done
Mulai operasi protokol Thread:
> thread start Done
Perangkat akan melakukan inisialisasi sendiri sebagai Turunan. Turunan Thread setara dengan Perangkat Akhir, yang merupakan perangkat Thread yang mentransmisikan dan menerima traffic unicast hanya dengan perangkat Parent.
> state child Done
Dalam waktu 2 menit, Anda akan melihat tombol status dari child
ke router
. Router Thread mampu mengarahkan traffic di antara perangkat Thread. Aktivitas ini juga disebut sebagai Induk.
> state router Done
Memverifikasi jaringan
Cara mudah untuk memverifikasi jaringan mesh adalah dengan melihat tabel router.
1. Periksa konektivitas
Di Node 2, dapatkan RLOC16. RLOC16 adalah 16 bit terakhir dari alamat RLOC IPv6 perangkat.
> rloc16 5800 Done
Pada Node 1, periksa tabel router untuk RLOC16 Node 2. Pastikan Node 2 telah beralih ke status router terlebih dahulu.
> 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 |
RLOC node 2 dari 0x5800
ditemukan dalam tabel, yang mengonfirmasi bahwa node tersebut terhubung ke mesh.
2. Node Ping 1 dari Node 2
Memverifikasi konektivitas antara dua perangkat Thread yang diemulasikan. Di Node 2, ping
EID yang ditetapkan ke Node 1:
> 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
Tekan enter
untuk kembali ke perintah CLI >
.
Menguji jaringan
Setelah Anda berhasil melakukan ping antara dua perangkat Thread yang diemulasi, uji jaringan mesh dengan menghubungkan satu node secara offline.
Kembali ke Node 1 dan hentikan Thread:
> thread stop Done
Beralih ke Node 2 dan periksa statusnya. Dalam dua menit, Node 2 mendeteksi bahwa pemimpin (Node 1) sedang offline, dan Anda akan melihat transisi Node 2 menjadi leader
dari jaringan:
> state router Done ... > state leader Done
Setelah dikonfirmasi, hentikan Thread dan reset Node ke-2 ke setelan pabrik sebelum keluar kembali ke perintah bash
Docker. Reset ke setelan pabrik dilakukan untuk memastikan bahwa kredensial jaringan Thread yang kita gunakan dalam latihan ini tidak dialihkan ke latihan berikutnya.
> thread stop Done > factoryreset > > exit root@c0f3912a74ff:/#
Anda mungkin perlu menekan enter
beberapa kali untuk memunculkan kembali perintah >
setelah perintah factoryreset
. Jangan keluar dari container Docker.
Selain itu, reset ke setelan pabrik, lalu keluar dari Node 1:
> factoryreset > > exit root@c0f3912a74ff:/#
Baca Referensi CLI OpenThread untuk mempelajari semua perintah CLI yang tersedia.
4. Mengautentikasi node dengan Commissioning
Dalam latihan sebelumnya, Anda menyiapkan jaringan Thread dengan dua perangkat yang disimulasikan dan konektivitas terverifikasi. Namun, tindakan ini hanya memungkinkan traffic IPv6-lokal yang tidak diautentikasi untuk melewati antar-perangkat. Untuk mengarahkan traffic IPv6 global di antaranya (dan internet melalui router batas Thread), node harus diautentikasi.
Untuk mengautentikasi, satu perangkat harus bertindak sebagai Komisaris. Komisaris adalah server autentikasi yang dipilih saat ini untuk perangkat Thread baru, dan pemberi otorisasi untuk memberikan kredensial jaringan yang diperlukan agar perangkat dapat bergabung ke jaringan.
Dalam latihan ini, kita akan menggunakan topologi dua node yang sama seperti sebelumnya. Untuk autentikasi, Thread Manager akan bertindak sebagai Komisaris, Thread Router sebagai Joiner.
Docker
Untuk setiap Node (jendela terminal) dalam latihan yang tersisa, pastikan Anda menjalankan container Docker dengan build OpenThread. Jika melanjutkan dari latihan sebelumnya, Anda seharusnya masih memiliki dua perintah bash
dalam container Docker yang sama yang sudah terbuka. Jika tidak, lihat langkah Pemecahan Masalah Docker, atau cukup ulangi latihan Menyimulasikan jaringan Thread.
1. Buat jaringan
Di Node 1, munculkan proses CLI:
root@c0f3912a74ff:/# /openthread/build/examples/apps/cli/ot-cli-ftd 1
Catatan: Jika Anda tidak melihat perintah >
setelah menjalankan perintah ini, tekan enter
.
Membuat Set Data Operasional baru, meng-commit-nya sebagai yang aktif, dan memulai Thread:
> 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 Network Key: a77fe1d03b0e8028a4e13213de38080e Network Name: OpenThread-8f37 PAN ID: 0x8f37 PSKc: f9debbc1532487984b17f92cd55b21fc Security Policy: 0, onrcb Done
Lakukan commit pada set data ini sebagai set data aktif:
> dataset commit active Done
Munculkan antarmuka IPv6:
> ifconfig up Done
Mulai operasi protokol Thread:
> thread start Done
Tunggu beberapa detik dan verifikasi bahwa perangkat telah menjadi Pengelola Rangkaian Pesan:
> state leader Done
2. Memulai peran Komisaris
Saat masih berada di Node 1, mulai peran Komisaris:
> commissioner start Done
Mengizinkan segala Joiner (dengan menggunakan karakter pengganti *
) dengan Kredensial Joiner J01NME
untuk ditugaskan ke jaringan. Joiner adalah perangkat yang ditambahkan oleh administrator manusia ke Jaringan Thread yang ditugaskan.
> commissioner joiner add * J01NME Done
3. Memulai peran Joiner
Di jendela terminal kedua, dalam container Docker, munculkan proses CLI baru. Ini adalah Node 2.
root@c0f3912a74ff:/# /openthread/build/examples/apps/cli/ot-cli-ftd 2
Pada Node 2, aktifkan peran Joiner menggunakan Kredensial Joiner J01NME
.
> ifconfig up Done > joiner start J01NME Done
... tunggu beberapa detik untuk konfirmasi ...
Join success
Sebagai Joiner, perangkat (Node 2) telah berhasil mengautentikasi dirinya sendiri dengan Komisaris (Node 1) dan menerima kredensial Jaringan Thread.
Setelah Node 2 diautentikasi, mulai Thread:
> thread start Done
4. Memvalidasi autentikasi jaringan
Periksa state
pada Node 2, untuk memvalidasi bahwa node tersebut sekarang telah bergabung ke jaringan. Dalam dua menit, transisi Node 2 dari child
ke router
:
> state child Done ... > state router Done
5. Reset konfigurasi
Untuk mempersiapkan latihan berikutnya, reset konfigurasi. Di setiap Node, hentikan Thread, lakukan reset ke setelan pabrik, dan keluar dari perangkat Thread yang diemulasi:
> thread stop Done > factoryreset > > exit root@c0f3912a74ff:/#
Anda mungkin perlu menekan enter
beberapa kali untuk memunculkan kembali perintah >
setelah perintah factoryreset
.
5. Mengelola jaringan dengan OpenThread Daemon
Untuk latihan ini, kita akan menyimulasikan satu instance CLI (satu perangkat SoC Thread tersemat) dan satu instance Radio Co-Processor (RCP).
ot-daemon
adalah mode aplikasi OpenThread Posix yang menggunakan soket UNIX sebagai input dan output, sehingga inti OpenThread dapat berjalan sebagai layanan. Klien dapat berkomunikasi dengan layanan ini dengan menyambungkan ke soket menggunakan CLI OpenThread sebagai protokol.
ot-ctl
adalah CLI yang disediakan oleh ot-daemon
untuk mengelola dan mengonfigurasi RCP. Menggunakan ini, kita akan menghubungkan RCP ke jaringan yang dibuat oleh perangkat Thread.
Docker
Untuk setiap Node (jendela terminal) dalam latihan ini, pastikan Anda menjalankan container Docker dengan build OpenThread. Jika melanjutkan dari latihan sebelumnya, Anda akan memiliki dua perintah bash
dalam container Docker yang sama yang sudah terbuka. Jika tidak, lihat langkah Pemecahan Masalah Docker.
Gunakan ot-daemon
Latihan ini akan menggunakan tiga jendela terminal, yang sesuai dengan yang berikut:
- Instance CLI perangkat Thread yang disimulasikan (Node 1)
ot-daemon
proses- Instance CLI
ot-ctl
1. Memulai Node 1
Di jendela terminal pertama, berikan proses CLI untuk perangkat Thread yang Anda emulasikan:
root@c0f3912a74ff:/# /openthread/build/examples/apps/cli/ot-cli-ftd 1
Catatan: Jika Anda tidak melihat perintah >
setelah menjalankan perintah ini, tekan enter
.
Membuat Set Data Operasional baru, meng-commit-nya sebagai yang aktif, dan memulai Thread:
> 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 Network Key: ba6e886c7af50598df1115fa07658a83 Network Name: OpenThread-34e4 PAN ID: 0x34e4 PSKc: 38d6fd32c866927a4dfcc06d79ae1192 Security Policy: 0, onrcb Done
Lakukan commit pada set data ini sebagai set data aktif:
> dataset commit active Done
Munculkan antarmuka IPv6:
> ifconfig up Done
Mulai operasi protokol Thread:
> thread start Done
Lihat alamat IPv6 yang ditetapkan untuk antarmuka Thread 1&39;s Thread:
> 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 >
Seperti yang dijelaskan pada langkah Simulasikan jaringan Thread, satu alamat adalah link-local (fe80
) dan tiga adalah mesh-local (fd
). EID adalah alamat mesh-local yang tidak berisi ff:fe00
di alamat tersebut. Dalam contoh output, EID-nya adalah fd55:cf34:dea5:7994:460:872c:e807:c4ab
.
Identifikasi EID tertentu dari output ipaddr
, yang akan digunakan untuk berkomunikasi dengan node.
2. Mulai ot-daemon
Di jendela terminal kedua, buat node perangkat tun
dan tetapkan izin baca/tulis:
root@c0f3912a74ff:/# mkdir -p /dev/net && mknod /dev/net/tun c 10 200 root@c0f3912a74ff:/# chmod 600 /dev/net/tun
Perangkat ini digunakan untuk pengiriman dan tanda terima paket di perangkat virtual. Anda mungkin mendapatkan error jika perangkat telah dibuat—ini adalah hal yang normal dan dapat diabaikan.
Mulai ot-daemon
untuk node RCP, yang kita sebut Node 2. Gunakan tanda panjang -v
agar Anda dapat melihat output log dan mengonfirmasi bahwa output log sedang berjalan:
root@c0f3912a74ff:/# /openthread/build/posix/src/posix/ot-daemon -v \ 'spinel+hdlc+forkpty://openthread/build/examples/apps/ncp/ot-rcp?forkpty-arg=2'
Jika berhasil, ot-daemon
dalam mode panjang menghasilkan output yang mirip dengan yang berikut:
ot-daemon[31]: Running OPENTHREAD/297a880; POSIX; Feb 1 2022 04:43:39 ot-daemon[31]: Thread version: 3 ot-daemon[31]: Thread interface: wpan0 ot-daemon[31]: RCP version: OPENTHREAD/297a880; SIMULATION; Feb 1 2022 04:42:50
Biarkan terminal ini terbuka dan berjalan di latar belakang. Anda tidak akan memasukkan perintah lebih lanjut di dalamnya.
3. Menggunakan ot-ctl untuk bergabung ke jaringan
Kami belum memesan Node 2 (ot-daemon
RCP) ke jaringan Thread mana pun. Di sinilah ot-ctl
berperan. ot-ctl
menggunakan CLI yang sama dengan aplikasi CLI OpenThread. Oleh karena itu, Anda dapat mengontrol ot-daemon
node dengan cara yang sama seperti perangkat Thread yang disimulasikan lainnya.
Buka jendela terminal ketiga dan jalankan container yang ada:
$ docker exec -it codelab_otsim_ctnr bash
Setelah berada di container, mulai ot-ctl
:
root@c0f3912a74ff:/# /openthread/build/posix/src/posix/ot-ctl >
Anda akan menggunakan ot-ctl
di jendela terminal ketiga ini untuk mengelola Node 2 (node RCP) yang Anda mulai di jendela terminal kedua dengan ot-daemon
. Periksa state
Node 2:
> state disabled Done
Dapatkan eui64
Node 2, untuk membatasi bergabung ke Joiner tertentu:
> eui64 18b4300000000001 Done
Pada Node 1 (jendela terminal pertama), mulai Komisaris dan batasi penggabungan hanya untuk eui64 tersebut:
> commissioner start Done > commissioner joiner add 18b4300000000001 J01NME Done
Di jendela terminal ketiga, buka antarmuka jaringan untuk Node 2 dan gabung ke jaringan:
> ifconfig up Done > joiner start J01NME Done
... tunggu beberapa detik untuk konfirmasi ...
Join success
Sebagai Joiner, RCP (Node 2) telah berhasil mengautentikasi dirinya sendiri dengan Komisaris (Node 1) dan menerima kredensial Jaringan Thread.
Sekarang gabung ke Node 2 ke jaringan Thread (sekali lagi, di jendela terminal ketiga):
> thread start Done
4. Memvalidasi autentikasi jaringan
Di terminal ketiga, periksa state
di Node 2, untuk memvalidasi bahwa sekarang node telah bergabung ke jaringan. Dalam dua menit, transisi Node 2 dari child
ke router
:
> state child Done ... > state router Done
5. Memvalidasi konektivitas
Pada jendela terminal ketiga, keluar dari ot-ctl
menggunakan perintah Ctrl+D atau exit
, dan kembali ke konsol bash
container. Dari konsol ini, melakukan ping ke Node 1, menggunakan EID-nya dengan perintah ping6
. Jika instance RCP ot-daemon
berhasil digabungkan dan berkomunikasi dengan jaringan Thread, ping akan berhasil:
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
6. Pemecahan Masalah Docker
Jika Anda telah keluar dari container Docker
bash
Perintah, Anda mungkin perlu memeriksa apakah perintah tersebut berjalan dan memulai ulang/masuk kembali sesuai kebutuhan.
Untuk menunjukkan container Docker mana yang sedang berjalan:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 505fc57ffc72 environment "bash" 10 minutes ago Up 10 minutes codelab_otsim_ctnr
Untuk menampilkan semua container Docker (berjalan dan berhenti):
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 505fc57ffc72 environment "bash" 10 minutes ago Up 10 minutes codelab_otsim_ctnr
Jika Anda tidak melihat container codelab_otsim_ctnr
dalam output perintah docker ps
, jalankan lagi:
$ docker run --name codelab_otsim_ctnr -it --rm \ --sysctl net.ipv6.conf.all.disable_ipv6=0 \ --cap-add=net_admin openthread/environment bash
Jika container dihentikan (tercantum dalam docker ps -a
, tetapi tidak dalam docker ps
), mulai ulang:
$ docker start -i codelab_otsim_ctnr
Jika container Docker sudah berjalan (tercantum di docker ps
), hubungkan kembali ke container di setiap terminal:
$ docker exec -it codelab_otsim_ctnr bash
"Operasi tidak diizinkan" kesalahan
Jika Anda mengalami error Operation not permitted
saat membuat node OpenThread baru (menggunakan perintah mknod
), pastikan Anda menjalankan Docker sebagai pengguna root sesuai dengan perintah yang diberikan di Codelab ini. Codelab ini tidak mendukung proses menjalankan Docker dalam mode tanpa root.
7. Selamat!
Anda telah berhasil menyimulasikan jaringan Thread pertama menggunakan OpenThread. Keren!
Dalam codelab ini, Anda telah mempelajari cara:
- Memulai dan mengelola container Docker Simulasi OpenThread
- Menyimulasikan jaringan Thread
- Mengautentikasi node Thread
- Mengelola jaringan Thread dengan OpenThread Daemon
Untuk mempelajari Thread dan OpenThread lebih lanjut, pelajari referensi berikut:
- Thread Primer di openthread.io
- Spesifikasi Thread
- Repositori GitHub OpenThread
- Referensi CLI OpenThread
- Dukungan Docker OpenThread tambahan
Atau, coba gunakan OpenThread Border Router dalam container Docker.