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