表单线程网络

在 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 与互联网通信。