OTBR Docker 실행

<ph type="x-smartling-placeholder"></ph> GitHub에서 소스 보기

OpenThread 보더 라우터 (OTBR)는 스레드 네트워크. OTBR Docker는 물리적 RCP (OpenThread)와 시뮬레이션된 RCP가 포함될 수 있습니다.

OTBR Docker를 다른 물리적 스레드 기기에 연결하려면 물리적 RCP입니다. 시뮬레이션된 스레드로 경계선 라우팅을 테스트하려는 경우 시뮬레이션된 RCP를 사용합니다.

물리적 RCP

지원되는 OpenThread 플랫폼을 물리적 RCP입니다. RCP 빌드 및 플래시를 참고하세요. 자세한 내용은 OpenThread 보더 라우터 빌드 및 구성 가이드를 참고하세요. 확인할 수 있습니다

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 빌드를 사용합니다. 이는 다음과 같은 경우에 유용합니다. 단일 위치에서 시뮬레이션된 스레드 네트워크로 경계선 라우팅을 테스트하려는 경우 가상 머신을 만드는 데 도움이 됩니다

시뮬레이션된 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개의 직렬 포트를 기록해 둡니다. 첫 번째 사용 설정 시뮬레이션된 RCP, 두 번째는 OTBR Docker용입니다. 예시 출력에서 위:

  • /dev/pts/2 = 시뮬레이션된 RCP 포트
  • /dev/pts/7 = OTBR Docker
를 통해 개인정보처리방침을 정의할 수 있습니다.

이 터미널 창을 열어 두고 백그라운드에서 실행되도록 둡니다.

시뮬레이션된 RCP 시작

  1. 시뮬레이션된 RCP를 실행하려면 새 터미널 창을 열어야 합니다. OTBR Docker가 실행 중일 때 실행됩니다

  2. socat 출력의 첫 번째 직렬 포트를 사용하여 시뮬레이션된 RCP를 시작합니다. 애플리케이션입니다. 예를 들어 socat 출력의 /dev/pts/2를 사용하는 경우 다음과 같습니다. <ph type="x-smartling-placeholder">

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

이 명령어로는 출력이 표시되지 않습니다. 이 터미널 창을 열어두고 실행되는 것입니다

OTBR Docker 컨테이너 시작

새 터미널 창에서 컴퓨터의 두 번째 직렬 포트를 사용하여 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가 감소합니다.