Kaynağı GitHub'da görüntüleyin
OpenThread Sınır Yönlendirici (OTBR), Thread ağına katılmak için Thread RCP düğümü gerektirir. OTBR Docker, hem fiziksel RCP (OpenThread dongle) hem de simüle edilmiş RCP için destek sağlar.
OTBR Docker'ı diğer fiziksel Thread cihazlarına bağlamak istiyorsanız fiziksel bir RCP kullanın. Simüle edilmiş bir Thread ağıyla sınır yönlendirmeyi test etmek istiyorsanız simüle edilmiş bir RCP kullanın.
Fiziksel RCP
Fiziksel RCP için desteklenen herhangi bir OpenThread platformunu kullanın. Daha fazla bilgi için OpenThread Sınır Yönlendirici Derleme ve Yapılandırma kılavuzundaki RCP derleme ve flash adımına bakın.
RCP'yi ekleme
- Oluşturma ve yanıp söndürme işleminden sonra RCP cihazını USB üzerinden OTBR Docker'ı çalıştıran makineye bağlayın.
/dev
değerini kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin:ls /dev/tty*
/dev/ttyACMO
OTBR Docker container'ını başlatma
Yeni bir terminal penceresinde, RCP'nin seri bağlantı noktasına referans vererek OTBR Docker'ı başlatın.
Örneğin, RCP /dev/ttyACM0
konumuna monte edilmişse:
docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/ttyACM0:/dev/ttyACM0 --privileged openthread/otbr --radio-url spinel+hdlc+uart:///dev/ttyACM0
İşlem başarılı olursa şuna benzer bir çıkış alırsınız:
WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers. RADIO_URL: spinel+hdlc+uart:///dev/ttyACM0 TUN_INTERFACE_NAME: wpan0 NAT64_PREFIX: 64:ff9b::/96 AUTO_PREFIX_ROUTE: true AUTO_PREFIX_SLAAC: true Current platform is ubuntu * Applying /etc/sysctl.d/10-console-messages.conf ... kernel.printk = 4 4 1 7 * Applying /etc/sysctl.d/10-ipv6-privacy.conf ... net.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2 * Applying /etc/sysctl.d/10-kernel-hardening.conf ... kernel.kptr_restrict = 1 * Applying /etc/sysctl.d/10-link-restrictions.conf ... fs.protected_hardlinks = 1 fs.protected_symlinks = 1 * Applying /etc/sysctl.d/10-magic-sysrq.conf ... kernel.sysrq = 176 * Applying /etc/sysctl.d/10-network-security.conf ... net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1 * Applying /etc/sysctl.d/10-ptrace.conf ... kernel.yama.ptrace_scope = 1 * Applying /etc/sysctl.d/10-zeropage.conf ... vm.mmap_min_addr = 65536 * Applying /etc/sysctl.d/60-otbr-ip-forward.conf ... net.ipv6.conf.all.forwarding = 1 net.ipv4.ip_forward = 1 * Applying /etc/sysctl.conf ... * Starting userspace NAT64 tayga [ OK ] /usr/sbin/service * Starting domain name service... bind9 [ OK ] /usr/sbin/service * dbus is not running * Starting system message bus dbus [ OK ] ...fail! otWeb[155]: border router web started on wpan0 otbr-agent[224]: Thread interface wpan0 otbr-agent[224]: Thread is down otbr-agent[224]: Check if Thread is up: OK otbr-agent[224]: Stop publishing service otbr-agent[224]: PSKc is not initialized otbr-agent[224]: Check if PSKc is initialized: OK otbr-agent[224]: Initialize OpenThread Border Router Agent: OK otbr-agent[224]: Border router agent started.
OTBR Docker artık çalışıyor. Bu terminal penceresini açık ve arka planda çalışır durumda bırakın. İşlemden çıkar veya pencereyi kapatırsanız OTBR Docker aşağı gider.
OTBR Docker kurulumuna devam etmek için Bağlantıyı Test Et'e gidin.
Simüle edilmiş RCP
Simüle edilmiş RCP için simüle edilmiş bir OpenThread RCP derlemesi kullanın. Bu, tek bir makinede simüle edilmiş bir Thread ağı ile sınır yönlendirmeyi test etmek istiyorsanız kullanışlıdır.
Yapay zekayla taklit edilen RCP uygulamasını oluşturma
OpenThread deposunu klonlayın:
cd ~
git clone https://github.com/openthread/openthread
Simüle edilen uygulamayı önyükleyin ve derleyin:
cd openthread
./script/bootstrap
./script/cmake-build simulation
İki yönlü veri akışı oluşturma
Yapay RCP ile OTBR Docker arasında veri aktarmak için iki yönlü veri akışı oluşturmak üzere socat
komut satırı yardımcı programını kullanın.
OTBR Docker çalışırken çalışır durumda bırakılması gerektiğinden bu işlemi çalıştırmak için yeni bir terminal penceresi açın.
socat
'ü yükleme:sudo apt-get install socat
socat
'ü başlatın:socat -d -d pty,raw,echo=0 pty,raw,echo=0
2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/2 2018/09/06 09:58:29 socat[242994] N PTY is /dev/pts/7 2018/09/06 09:58:29 socat[242994] N starting data transfer loop with FDs [5,5] and [7,7]
Çıktıda kalın olarak gösterilen iki seri bağlantı noktasını not edin. İlkini simüle edilen RCP için, ikincisini OTBR Docker için kullanın. Yukarıdaki örnek çıkışta:
/dev/pts/2
= Yapay zeka simülasyonuyla oluşturulan RCP bağlantı noktası/dev/pts/7
= OTBR Docker
Bu terminal penceresini açık ve arka planda çalışır durumda bırakın.
Simüle edilmiş RCP'yi başlatma
OTBR Docker çalışırken taklit RCP'yi çalıştırmak için yeni bir terminal penceresi açın.
socat
çıkışındaki ilk seri bağlantı noktasını kullanarak simüle edilmiş RCP uygulamasını başlatın. Örneğin,socat
çıkışından/dev/pts/2
kullanılıyorsa:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
Bu komutun çıkışı yoktur. Bu terminal penceresini açık ve arka planda çalışır durumda bırakın.
OTBR Docker kapsayıcısını başlatma
Yeni bir terminal penceresinde, socat
çıkışındaki ikinci seri bağlantı noktasını kullanarak OTBR Docker'ı başlatın. Örneğin, socat
çıkışından /dev/pts/7
kullanılıyorsa:
docker run --sysctl "net.ipv6.conf.all.disable_ipv6=0 net.ipv4.conf.all.forwarding=1 net.ipv6.conf.all.forwarding=1" -p 8080:80 --dns=127.0.0.1 -it --volume /dev/pts/7:/dev/ttyUSB0 --privileged openthread/otbr
Komutun aynı zamanda /dev/ttyUSB0
bağlantı noktasını da kullandığını unutmayın. Bu, Docker kapsayıcısındaki varsayılan bağlama noktasıdır.
İşlem başarılı olursa şuna benzer bir çıkış alırsınız:
WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers. RADIO_URL: spinel+hdlc+uart:///dev/ttyUSB0 TUN_INTERFACE_NAME: wpan0 NAT64_PREFIX: 64:ff9b::/96 AUTO_PREFIX_ROUTE: true AUTO_PREFIX_SLAAC: true Current platform is ubuntu * Applying /etc/sysctl.d/10-console-messages.conf ... kernel.printk = 4 4 1 7 * Applying /etc/sysctl.d/10-ipv6-privacy.conf ... net.ipv6.conf.all.use_tempaddr = 2 net.ipv6.conf.default.use_tempaddr = 2 * Applying /etc/sysctl.d/10-kernel-hardening.conf ... kernel.kptr_restrict = 1 * Applying /etc/sysctl.d/10-link-restrictions.conf ... fs.protected_hardlinks = 1 fs.protected_symlinks = 1 * Applying /etc/sysctl.d/10-magic-sysrq.conf ... kernel.sysrq = 176 * Applying /etc/sysctl.d/10-network-security.conf ... net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 net.ipv4.tcp_syncookies = 1 * Applying /etc/sysctl.d/10-ptrace.conf ... kernel.yama.ptrace_scope = 1 * Applying /etc/sysctl.d/10-zeropage.conf ... vm.mmap_min_addr = 65536 * Applying /etc/sysctl.d/60-otbr-ip-forward.conf ... net.ipv6.conf.all.forwarding = 1 net.ipv4.ip_forward = 1 * Applying /etc/sysctl.conf ... * Starting userspace NAT64 tayga [ OK ] /usr/sbin/service * Starting domain name service... bind9 [ OK ] /usr/sbin/service * dbus is not running * Starting system message bus dbus [ OK ] ...fail! otWeb[155]: border router web started on wpan0 otbr-agent[224]: Thread interface wpan0 otbr-agent[224]: Thread is down otbr-agent[224]: Check if Thread is up: OK otbr-agent[224]: Stop publishing service otbr-agent[224]: PSKc is not initialized otbr-agent[224]: Check if PSKc is initialized: OK otbr-agent[224]: Initialize OpenThread Border Router Agent: OK otbr-agent[224]: Border router agent started.
OTBR Docker artık çalışıyor. Bu terminal penceresini açık ve arka planda çalışır durumda bırakın. İşlemi bırakır veya pencereyi kapatırsanız OTBR Docker kapanır.