Bộ định tuyến đường viền OpenThread (OTBR) yêu cầu nút RCP luồng để kết hợp Mạng Thread. OTBR Docker hỗ trợ cả RCP thực (OpenThread thiết bị phần cứng) hoặc RCP mô phỏng.
Nếu bạn muốn kết nối OTBR Docker với các thiết bị Thread thực tế khác, hãy sử dụng RCP thực. Nếu bạn muốn kiểm thử việc định tuyến đường viền bằng một Luồng mô phỏng hãy sử dụng RCP mô phỏng.
RCP thực
Sử dụng nền tảng OpenThread được hỗ trợ cho RCP thực. Xem phần Tạo và cài đặt RCP bước trong hướng dẫn Tạo và cấu hình bộ định tuyến đường viền OpenThread để biết thêm của bạn.
Đính kèm RCP
- Sau khi tạo bản dựng và cài đặt ROM, hãy gắn thiết bị RCP vào máy đang chạy Docker OTBR qua USB.
- Xác định tên cổng nối tiếp cho thiết bị RCP bằng cách kiểm tra
/dev
:ls /dev/tty*
/dev/ttyACMO
Khởi động vùng chứa Docker OTBR
Trong một cửa sổ dòng lệnh mới, hãy khởi động OTBR Docker, tham chiếu đến cổng nối tiếp của RCP.
Ví dụ: nếu RCP được gắn tại /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
Sau khi thành công, bạn sẽ nhận được kết quả tương tự như sau:
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 hiện đang chạy. Để cửa sổ dòng lệnh này mở và chạy trong nền. Nếu bạn thoát khỏi quy trình này hoặc đóng cửa sổ, OTBR Docker sẽ truy cập xuống.
Chuyển đến phần Kiểm tra kết nối để tiếp tục thiết lập Docker OTBR.
RCP được mô phỏng
Sử dụng bản dựng OpenThread RCP được mô phỏng cho RCP được mô phỏng. Điều này rất hữu ích nếu bạn muốn kiểm thử việc định tuyến đường viền bằng mạng Thread mô phỏng trên một máy.
Tạo ứng dụng RCP mô phỏng
Sao chép kho lưu trữ OpenThread:
cd ~
git clone https://github.com/openthread/openthread
Tự khởi động và xây dựng ứng dụng mô phỏng:
cd openthread
./script/bootstrap
./script/cmake-build simulation
Thiết lập luồng dữ liệu hai chiều
Dùng tiện ích dòng lệnh socat
để thiết lập luồng dữ liệu hai chiều
để truyền dữ liệu giữa RCP được mô phỏng và Docker OTBR.
Hãy mở một cửa sổ dòng lệnh mới để chạy quy trình này (vì quy trình này vẫn phải chạy) trong khi OTBR Docker đang chạy.
Cài đặt
socat
:sudo apt-get install socat
Bắt đầu
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]
Ghi lại 2 cổng nối tiếp được in đậm trong dữ liệu đầu ra. Sử dụng địa chỉ đầu tiên cho RCP mô phỏng và RCP thứ hai cho OTBR Docker. Trong kết quả của ví dụ bên trên:
/dev/pts/2
= Cổng RCP được mô phỏng/dev/pts/7
= Docker OTBR
Để cửa sổ dòng lệnh này mở và chạy trong nền.
Bắt đầu RCP mô phỏng
Mở một cửa sổ dòng lệnh mới để chạy RCP được mô phỏng (vì RCP này phải được để lại) đang chạy trong khi OTBR Docker đang chạy.
Sử dụng cổng nối tiếp đầu tiên trong đầu ra
socat
, khởi động RCP được mô phỏng . Ví dụ: nếu sử dụng/dev/pts/2
từ dữ liệu đầu rasocat
:~/openthread/build/simulation/examples/apps/ncp/ot-rcp 1 > /dev/pts/2 < /dev/pts/2
Không có kết quả từ lệnh này. Để cửa sổ dòng lệnh này mở và đang chạy trong nền.
Khởi động vùng chứa Docker OTBR
Trong cửa sổ dòng lệnh mới, khởi động OTBR Docker, sử dụng cổng nối tiếp thứ hai trong
Đầu ra socat
. Ví dụ: nếu sử dụng /dev/pts/7
từ dữ liệu đầu ra 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
Xin lưu ý rằng lệnh này cũng đang sử dụng cổng /dev/ttyUSB0
. Đây là lựa chọn mặc định
điểm gắn trong vùng chứa Docker.
Sau khi thành công, bạn sẽ nhận được kết quả tương tự như sau:
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 hiện đang chạy. Để cửa sổ dòng lệnh này mở và chạy trong nền. Nếu bạn thoát khỏi quy trình này hoặc đóng cửa sổ, OTBR Docker sẽ truy cập xuống.