Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

OTBRDockerを実行する

GitHubでソースを表示

OpenThread Border Router(OTBR)は、スレッドネットワークに参加するためにスレッドRCPノードを必要とします。 OTBR Dockerは、物理RCP(OpenThreadドングル)またはシミュレートされたRCPの両方をサポートします。

OTBR Dockerを他の物理スレッドデバイスに接続する場合は、物理RCPを使用します。シミュレートされたスレッドネットワークを使用して境界ルーティングをテストする場合は、シミュレートされたRCPを使用します。

物理RCP

任意の使用はサポートOpenThreadプラットフォームを物理RCPため。参照のビルドとフラッシュRCPの詳細については、OpenThread境界ルータのビルドおよび構成のガイドからのステップを。

RCPを接続します

  1. ビルドしてフラッシュした後、RCPデバイスをUSB経由でOTBRDockerを実行しているマシンに接続します。
  2. チェックすることにより、RCPデバイスのシリアルポート名を決定する/dev
    ls /dev/tty*
    /dev/ttyACMO
    

OTBRDockerコンテナを起動します

新しいターミナルウィンドウで、RCPのシリアルポートを参照してOTBRDockerを起動します。例えば、RCPをにマウントされている場合/dev/ttyACM0

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

成功すると、次のような出力が得られるはずです。

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.

OTBRDockerが実行されています。このターミナルウィンドウを開いたままにして、バックグラウンドで実行します。プロセスを終了するかウィンドウを閉じると、OTBRDockerがダウンします。

行く接続テストOTBRドッカーのセットアップを続行します。

シミュレートされたRCP

シミュレートされたRCPには、シミュレートされたOpenThreadRCPビルドを使用します。これは、単一のマシンでシミュレートされたスレッドネットワークを使用して境界ルーティングをテストする場合に役立ちます。

シミュレートされたRCPアプリケーションを構築する

  1. クローンOpenThreadリポジトリ:

    cd ~
    git clone https://github.com/openthread/openthread
    

  2. ブートストラップとシミュレートされたアプリケーションを構築:

    cd openthread
    ./bootstrap
    make -f examples/Makefile-simulation
    

双方向データストリームを設定する

使用socatシミュレートRCPとOTBRドッカー間の転送データに双方向のデータストリームを確立するためのコマンドラインユーティリティを。

  1. このプロセスを実行するには、新しいターミナルウィンドウを開きます。これは、OTBRDockerの実行中は実行したままにする必要があるためです。

  2. インストールsocat

    sudo apt-get install socat
    

  3. スタート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]
    

出力で太字になっている2つのシリアルポートをメモします。 1つ目はシミュレートされたRCPに使用し、2つ目はOTBRDockerに使用します。上記の出力例では、次のようになります。

  • /dev/pts/2 =模擬RCPポート
  • /dev/pts/7 = OTBRドッカー

このターミナルウィンドウを開いたままにして、バックグラウンドで実行します。

シミュレートされたRCPを開始します

  1. OTBR Dockerの実行中は実行したままにする必要があるため、新しいターミナルウィンドウを開いてシミュレートされたRCPを実行します。

  2. で最初のシリアルポートを使用してsocat出力、シミュレートされたRCPアプリケーションを起動します。例えば、使用している場合/dev/pts/2からsocat :出力

    ~/openthread/output/simulation/bin/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

このコマンドからの出力はありません。このターミナルウィンドウを開いたままにして、バックグラウンドで実行します。

OTBRDockerコンテナを起動します

新しい端末ウィンドウで、第二のシリアルポートを使用して、OTBRドッカーを開始socat出力。例えば、使用している場合/dev/pts/7からsocat出力:

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

コマンドも使用されることに注意してください/dev/ttyUSB0ポートを。これは、Dockerコンテナ内のデフォルトのマウントポイントです。

成功すると、次のような出力が得られるはずです。

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.

OTBRDockerが実行されています。このターミナルウィンドウを開いたままにして、バックグラウンドで実行します。プロセスを終了するかウィンドウを閉じると、OTBRDockerがダウンします。