表单线程网络

在 GitHub 上查看源代码

构建 Thread 网络并测试其与互联网的连接。

启动 `ot-ctl` 会话

ot-ctl 会公开 OpenThread CLI 命令,如需了解详情,请参阅 OpenThread CLI 指南。

如果使用 Docker,请按如下方式启动 ot-ctl 会话:

docker exec -it otbr ot-ctl

如果使用原生主机,请按如下方式启动 ot-ctl 会话:

sudo ot-ctl

构建 Thread 网络

  1. 生成新的网络配置。

    dataset init new
    Done
    
  2. 查看新的网络配置。

    dataset
    Active Timestamp: 1
    Channel: 15
    Wake-up Channel: 16
    Channel Mask: 0x07fff800
    Ext PAN ID: 39758ec8144b07fb
    Mesh Local Prefix: fdf1:f1ad:d079:7dc0::/64
    Network Key: f366cec7a446bab978d90d27abe38f23
    Network Name: OpenThread-5938
    PAN ID: 0x5938
    PSKc: 3ca67c969efb0d0c74a4d8ee923b576c
    Security Policy: 672 onrc 0
    Done
    
  3. 将新数据集提交到非易失性存储设备中的有效运营数据集。

    dataset commit active
    Done
    
  4. 启用 Thread 接口。

    ifconfig up
    Done
    thread start
    Done
    
  5. 在 Linux 主机控制台中(而非 ot-ctl 会话中),使用 ifconfig 查看新的 Thread 网络接口:

    ifconfig wpan0
    wpan0: flags=4305  mtu 1280
            inet6 fe80::3c98:89e8:ddec:bda7  prefixlen 64  scopeid 0x20
            inet6 fd4d:b3e5:9738:3193:0:ff:fe00:fc00  prefixlen 64  scopeid 0x0
            inet6 fd4d:b3e5:9738:3193:0:ff:fe00:f800  prefixlen 64  scopeid 0x0
            inet6 fd4d:b3e5:9738:3193:39c4:ee02:ca9e:2b1d  prefixlen 64  scopeid 0x0
            unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
            RX packets 16  bytes 1947 (1.9 KiB)
            RX errors 0  dropped 3  overruns 0  frame 0
            TX packets 7  bytes 1152 (1.1 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    

调出第二个 Thread 节点

在 OTBR 启动并运行后,将一个独立的 Thread 节点添加到 Thread 网络,并测试其是否已连接到互联网。

如需详细了解如何构建和刷写 Nordic nRF52840 平台,请参阅使用 nRF52840 开发板和 OpenThread Codelab 构建 Thread 网络。

  1. 构建并刷写后,在新终端窗口中使用 screen 访问 CLI。例如,如果设备安装在端口 /dev/ttyACM1 上:

    screen /dev/ttyACM1 115200
    

  2. 按 Enter 键,调出 > OpenThread CLI 提示。

将第二个节点加入 Thread 网络

使用第二个 Thread 节点的 OpenThread CLI,将该节点加入由 OTBR 创建的 Thread 网络。

  1. 使用 OTBR 中的最低要求值更新节点的 Thread 网络凭据:

    dataset networkkey f366cec7a446bab978d90d27abe38f23
    Done
    dataset commit active
    Done
    

  2. 调出 Thread 界面并启动 Thread:

    ifconfig up
    Done
    thread start
    Done
    

  3. 该节点应自动加入 OTBR Thread 网络。两分钟内,其状态应为 router:

    state
    router
    

Ping 公共地址

此时,您应该能够从独立线程节点对公共 IPv4 地址执行 ping 操作。由于 Thread 仅使用 IPv6,因此公共 IPv4 地址将与 Thread 网络中的 NAT64 前缀结合,自动转换为 IPv6。

  1. 如需查看 Thread 网络中的 NAT64 前缀,请执行以下操作:

    netdata show
    Prefixes:
    fd3e:d39b:d91:1::/64 paros low 1800
    Routes:
    ::/0 s med 1800
    fd3e:d39b:d91:2:0:0::/96 sn low 1800
    Services:
    Contexts:
    fd3e:d39b:d91:1::/64 1 c
    Commissioning:
    12156 - - -
    
    其中 fd3e:d39b:d91:2:0:0::/96 是 Thread 网络中的 NAT64 前缀。

  2. 从独立 Thread 节点的 CLI 中 ping IPv4 地址,以测试其互联网连接情况:

    ping 8.8.8.8
    Pinging synthesized IPv6 address: fd3e:d39b:d91:2:0:0:808:808
    16 bytes from fd3e:d39b:d91:2:0:0:808:808: icmp_seq=1 hlim=113 time=73ms
    1 packets transmitted, 1 packets received. Packet loss = 0.0%. Round-trip min/avg/max = 73/73.0/73 ms.
    Done
    

大功告成!第二个 Thread 节点现在可以通过 OTBR 与互联网通信。