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 Docker OTBR

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Xem nguồn trên GitHub

Bộ định tuyến đường biên OpenThread (OTBR) yêu cầu nút Thread RCP để tham gia một mạng Thread. OTBR Docker hỗ trợ cả RCP thực tế (OpenThread pindon) hoặc một 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 tế. Nếu bạn muốn kiểm thử định tuyến biên giới bằng một mạng Thread được mô phỏng, hãy sử dụng một RCP mô phỏng.

RCP thực tế

Sử dụng một nền tảng OpenThread được hỗ trợ cho RCP thực tế. Xem bước Tạo và flash RCP từ phần Hướng dẫn tạo và định tuyến đường viền OpenThread để 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 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ực hiện thành công, bạn sẽ 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ẽ đi xuống.

Truy cập Kiểm tra kết nối để tiếp tục thiết lập OTBR Docker.

Mô phỏng RCP

Sử dụng bản dựng OpenCP RCP được mô phỏng cho RCP mô phỏng. Việc này 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 được mô phỏng

  1. Nhân bản 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
    ./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 để truyền dữ liệu giữa RCP mô phỏng và OTBR Docker.

  1. Mở 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.

  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. Sử dụng thành phần đầu tiên cho RCP được mô phỏng và thành phần thứ hai cho OTBR Docker. Trong kết quả đầu ra mẫu ở 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 được mô phỏng

  1. Mở cửa sổ dòng lệnh mới để chạy RCP được mô phỏng vì nó phải được 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 bạn sử dụng /dev/pts/2 trong đầu ra socat:

    ~/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 trong 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 trong kết quả 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 đang sử dụng cổng /dev/ttyUSB0. Đây là điểm gắn kết mặc định trong vùng chứa Docker.

Sau khi thực hiện thành công, bạn sẽ 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ẽ đi xuống.