OTBR Docker の実行

<ph type="x-smartling-placeholder"></ph> GitHub のソースを表示

OpenThread ボーダー ルーター(OTBR)が参加するには Thread RCP ノードが必要 Thread ネットワーク。OTBR Docker は、物理 RCP(OpenThread)と またはシミュレートされた RCP を使用します。

OTBR Docker を他の物理 Thread デバイスに接続する場合は、 物理的な RCP に入ります。シミュレートされた Thread でボーダー ルーティングをテストする場合 シミュレートされた RCP を使用します。

物理的な RCP

サポートされている OpenThread プラットフォームを 物理的な RCP に入ります。RCP のビルドとフラッシュをご覧ください。 の手順をご覧ください。 情報です。

RCP を添付します。

  1. ビルドとフラッシュが完了したら、実行中のマシンに RCP デバイスを接続します USB 経由の OTBR Docker。
  2. /dev を確認して RCP デバイスのシリアルポート名を確認します。
    ls /dev/tty*
    /dev/ttyACMO
    

OTBR Docker コンテナを起動する

新しいターミナル ウィンドウで、RCP のシリアルポートを参照して OTBR Docker を起動します。 たとえば、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.

OTBR Docker が実行中です。ターミナル ウィンドウは開いたままにして、 説明します。プロセスを終了するか、ウィンドウを閉じると、OTBR Docker が できます。

[接続をテスト] に移動して、以下を行います。 OTBR Docker の設定を続けます。

シミュレーションされた RCP

シミュレートされた RCP には、シミュレートされた OpenThread RCP ビルドを使用します。これは、次の場合に有用です。 シミュレートされた Thread ネットワークでボーダー ルーティングを 1 つのデバイスで あります。

シミュレートされた RCP アプリケーションをビルドする

  1. OpenThread リポジトリのクローンを作成します。

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

  2. シミュレートされたアプリケーションをブートストラップしてビルドします。

    cd openthread
    ./script/bootstrap
    ./script/cmake-build simulation
    

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

socat コマンドライン ユーティリティを使用して双方向データ ストリームを確立する シミュレートされた RCP と OTBR Docker の間でデータを転送できます。

  1. このプロセスは実行したままにしておく必要があるため、新しいターミナル ウィンドウを開いてこのプロセスを実行します 実行されている状態を表します。

  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 つ目を 2 つ目の RCP は OTBR Docker 用のものです出力例では、 上記:

  • /dev/pts/2 = シミュレートされた RCP ポート
  • /dev/pts/7 = OTBR Docker
で確認できます。

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

シミュレーションされた RCP を開始する

  1. そのまま残しておく必要があるため、新しいターミナル ウィンドウを開いてシミュレートされた RCP を実行します。 実行されている場合があります。

  2. socat 出力の最初のシリアルポートを使用して、シミュレートされた RCP を開始します。 説明します。たとえば、socat 出力から /dev/pts/2 を使用する場合は次のようになります。

    ~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
    

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

OTBR Docker コンテナを起動する

新しいターミナル ウィンドウで、2 つ目のシリアルポートを使用して OTBR Docker を起動します。 socat の出力。たとえば、socat 出力から /dev/pts/7 を使用する場合は次のようになります。

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.

OTBR Docker が実行中です。ターミナル ウィンドウは開いたままにして、 説明します。プロセスを終了するか、ウィンドウを閉じると、OTBR Docker が できます。