Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Chạy OTBR Docker

Xem nguồn trên GitHub

Bộ định tuyến đường viền mở (OTBR) yêu cầu nút Thread RCP để kết nối với một mạng Thread. OTBR Docker hỗ trợ cả RCP vật lý (Dongle 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ị Chuỗi vật lý khác, hãy sử dụng RCP vật lý. Nếu bạn muốn kiểm tra định tuyến đường viền bằng mạng Chuỗi 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 vật lý. Hãy xem bước Xây dựng và flash RCP trong hướng dẫn tạo và định cấu hình Bộ định tuyến đường viền chuỗi mở rộng để biết thêm thông tin.

Đính kèm RCP

  1. Sau khi tạo và nhấp nháy, hãy gắn thiết bị RCP vào máy chạy OTBR Docker qua USB.
  2. 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 một cửa sổ thiết bị đầu cuối mới, hãy khởi động OTBR Docker, tham chiếu cổng nối tiếp của RCP. Ví dụ: Nếu bạn đã lắp RCP vào lúc /dev/ttyACM0, thì:

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ẽ thấy 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. Hã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 quá trình này hoặc đóng cửa sổ, thì OTBR Docker sẽ giảm.

Chuyển đến phần Kiểm tra kết nối để tiếp tục thiết lập DoOT OTBR.

RCP mô phỏng

Sử dụng bản dựng Openthread RCP mô phỏng cho RCP mô phỏng. Điều này sẽ hữu ích nếu bạn muốn thử nghiệm định tuyến biên với một mạng Chuỗi mô phỏng trên một máy duy nhất.

Xây dựng ứng dụng RCP mô phỏng

  1. Sao chép kho lưu trữ OpenThread:

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

  2. Khởi động và tạo ứng dụng mô phỏng:

    cd openthread
    ./bootstrap
    make -f examples/Makefile-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 và OTBR Docker mô phỏng.

  1. Hãy mở một cửa sổ dòng lệnh mới để chạy quy trình này, vì cửa sổ này phải để chạy trong khi OTBR Docker đang chạy.

  2. Cài đặt socat:

    sudo apt-get install socat
    

  3. 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 hai cổng nối tiếp được in đậm trong đầu ra. Hãy sử dụng đầu tiên cho RCP mô phỏng và đầu tiên thứ hai cho OTBR Docker. Trong ví dụ về kết quả ở trên:

  • /dev/pts/2 = Cổng RCP mô phỏng
  • /dev/pts/7 = DoOT phụ

Hãy để cửa sổ dòng lệnh này mở và chạy trong nền.

Khởi động RCP mô phỏng

  1. Mở cửa sổ đầu cuối mới để chạy RCP mô phỏng, vì cửa sổ này phải để chạy trong khi OTBR Docker đang chạy.

  2. Sử dụng cổng nối tiếp đầu tiên trong đầu ra socat, khởi động ứng dụng RCP mô phỏng. Ví dụ: nếu sử dụng /dev/pts/2 từ đầu ra socat:

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

Không có kết quả nào từ lệnh này. Hãy để cửa sổ dòng lệnh này mở và chạy trong nền.

Khởi động vùng chứa OTBR Docker

Trong một cửa sổ thiết bị đầu cuối mới, hãy khởi động OTBR Docker bằng cách 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ừ đầ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

Lưu ý rằng lệnh này cũng đang sử dụng cổng /dev/ttyUSB0. Đây là điểm gắn mặc định trong vùng chứa Docker.

Khi thành công, bạn sẽ thấy 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. Hã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 quá trình này hoặc đóng cửa sổ, thì OTBR Docker sẽ giảm.