OpenThread Sınır Yönlendirici (OTBR), bir 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. Sınır yönlendirmesini simüle edilmiş bir İleti dizisi ağıyla test etmek istiyorsanız RCP'yi simüle edin.
Fiziksel RCP
Fiziksel RCP için desteklenen herhangi bir OpenThread platformunu kullanın. Daha fazla bilgi için OpenThread Sınır Yönlendirici Oluşturma ve Yapılandırma kılavuzundaki Oluşturma ve flash RCP adımına bakın.
RCP'yi ekle
- Derleyip yanıp söndükten sonra RCP cihazını USB üzerinden OTBR Docker'ı çalıştıran makineye takın.
/dev
'yi kontrol ederek RCP cihazının seri bağlantı noktası adını belirleyin:ls /dev/tty*
/dev/ttyACMO
OTBR Docker container'ını başlat
Yeni bir terminal penceresinde, RCP'nin seri bağlantı noktasına referans vererek OTBR Docker'ı başlatın.
Örneğin, RCP /dev/ttyACM0
adresine eklendiyse:
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
Başarılı olduktan sonra ş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 şimdi çalışıyor. Bu terminal penceresini arka planda açık ve çalışır durumda bırakın. Süreçten çıkarsanız veya pencereyi kapatırsanız OTBR Docker kapanır.
OTBR Docker kurulumuna devam etmek için Bağlantıyı Test Et bölümüne gidin.
RCP Simülasyonu
Simüle edilen RCP için OpenThread RCP simülasyonu oluşturun. Bu özellik, tek bir makinede simüle edilmiş bir Thread ağıyla sınır yönlendirmesini test etmek istediğinizde kullanışlıdır.
Simüle edilen RCP uygulamasını oluşturma
OpenThread deposunu klonlayın:
cd ~
git clone https://github.com/openthread/openthread
Simüle edilen uygulamayı başlatın ve simüle edin:
cd openthread
./bootstrap
./script/cmake-build simulation
Çift yönlü veri akışı ayarlama
Simüle edilen RCP ve OTBR Docker arasında veri aktarmak için iki yönlü bir veri akışı oluşturmak üzere socat
komut satırı yardımcı programını kullanın.
OTBR Docker çalışırken bu işlemi çalıştırmak için yeni bir terminal penceresi açın.
socat
uygulamasını yükleyin:sudo apt-get install socat
Başlangıç:
socat
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]
Çıkışta kalın gösterilen iki seri bağlantı noktasını not edin. İkincisi simüle edilmiş RCP ve ikincisi OTBR Docker'ı kullanın. Yukarıdaki örnek çıkışta:
/dev/pts/2
= Simüle edilen 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 edilen RCP'yi başlat
OTBR Docker çalışırken çalışması nedeniyle simüle edilen 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ışının içinden/dev/pts/2
kullanılıyorsa:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
Bu komuttan çıkış yok. Bu terminal penceresini açık arka planda çalıştırın.
OTBR Docker container'ını başlat
Yeni bir terminal penceresinde, socat
çıkışındaki ikinci seri bağlantı noktasını kullanarak OTBR Docker'ı başlatın. Örneğin, socat
çıkışında /dev/pts/7
kullanıyorsanız:
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 ayrıca /dev/ttyUSB0
bağlantı noktasını kullandığını unutmayın. Bu, Docker kapsayıcısında varsayılan ekleme noktasıdır.
Başarılı olduktan sonra ş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 şimdi çalışıyor. Bu terminal penceresini arka planda açık ve çalışır durumda bırakın. Süreçten çıkarsanız veya pencereyi kapatırsanız OTBR Docker kapanır.