openwrt_树莓派_mesh自组织网络


openwrt_树莓派_mesh自组织网络

openwrt

  • 需求:主要是为了进行无缝漫游,可以控制的路由器,同时尝试mesh自组织网络,并进行测试。
  • oepnwrt基于Linux系统,可以在做路由器的同时当作一个服务器来使用,扩展性非常强。

OpenWrt官方介绍:

OpenWrt项目是针对嵌入式设备的Linux操作系统。OpenWrt不是一个单一且不可更改的固件,而是提供了一个完全可写的文件系统及软件包管理。这使您可以不使用供应商提供的应用程序选择和配置,而是通过使用软件包来定制设备以适应任何应用程序。对于开发人员来说,OpenWrt是一个构建应用程序的框架,无需在其周围构建完整的固件; 对于普通用户来说,这意味着拥有了完全定制的能力,能以意想不到的方式使用该设备。
OpenWrt/LEDE是一个为嵌入式设备(通常是无线路由器)开发的高扩展度的GNU/Linux发行版。与许多其他路由器的发行版不同,OpenWrt/LEDE是一个完全为嵌入式设备构建的功能全面、易于修改的由现代Linux内核驱动的操作系统。在实践中,这意味着您可以得到您需要的所有功能,却仍能避免臃肿。

安装openwrt

openwrt的设备支持列表如OpenWrt 支持的设备列表所示,各版本的树莓派都可以安装最新版本的OpenWrt,截止到2021年2月1日

  • OpenWrt 支持的树莓派版本
设备表 型号 更新日期 版本
Raspberry Pi 2B 1.0/1.1 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 2 B 1.2 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 3 B 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 3 B+ 21.02.1 raspberry_pi View/Edit data
Raspberry Pi A 21.02.1 raspberry_pi View/Edit data
Raspberry Pi B 21.02.1 raspberry_pi View/Edit data
Raspberry Pi B+ 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 4 B 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 4 400 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 3 Compute Module 3 21.02.1 raspberry_pi View/Edit data
Raspberry Pi 4 Compute Module 4 21.02.1 raspberry_pi View/Edit data
Raspberry Pi Zero 21.02.1 raspberry_pi View/Edit data
Raspberry Pi Zero W 21.02.1 raspberry_pi View/Edit data

下载 OpenWrt 镜像
在设备上面的表格中选择自己的树莓派型号,点击 View/Edit data ,然后进入 详情页面,选择“ Firmware OpenWrt Install URL ”,这个就是要下载的镜像,我们把它保存到本地。

树莓派4B下载地址:https://openwrt.org/toh/hwdata/raspberry_pi_foundation/raspberry_pi_foundation_raspberry_pi_4_b

因此下载地址为:http://downloads.openwrt.org/releases/21.02.1/targets/bcm27xx/bcm2711/openwrt-21.02.1-bcm27xx-bcm2711-rpi-4-squashfs-factory.img.gz

将 OpenWrt 镜像烧录到树莓派中,windows下可以使用 Etcher 软件烧录。同样OpenWrt 镜像支持树莓派从U盘启动:
但我尝试,此过程无法成功脸上wifi。

Openwrt固件

换个地址下载openwrt.cc

树莓派上的 OpenWrt 配置

以下是我的树莓派无线路由器配置过程。

  1. 登陆 OpenWrt
    用网线将树莓派和电脑相连接,然后在浏览器中输入192.168.1.1,即可打开登陆页面。

    选择openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img 并下载

  2. 烧录镜像

在电脑上用balenaEtcher(或其他可烧录镜像的软件)读取sd卡,烧录进刚刚下好的完整镜像

  1. 进入配置界面

将SD卡塞进树莓派,连接电源(注意:这时候树莓派不要连接网线到路由器)

电脑或者手机通过wifi连接openwrt,浏览器输入192.168.1.1进入openwrt的管理界面

默认用户root 密码password

OpenWrt 登陆页面
自己设置一个密码,点击login登陆

mesh自组织网络

如下图所示,mesh网络由MPP、MP、MAP三种设备组成:

  • MPP(mesh portal point):连接无线mesh网络和其他类型的网络,并与mesh网络内部MP/MAP节点进行通信。这个节点具有Portal功能,通过这个节点,mesh内部的节点可以和外部网络通信。
  • MP(mesh point):在mesh网络中,使用IEEE 802.11sMAC和PHY协议进行无线通信,并且支持mesh功能的节点。该节点支持自动拓扑、路由的自动发现、数据包的转发等功能。
  • MAP(mesh access point):任何支持AP功能的mesh point,可以为Station提供接入功能。

这三种设备配置也不一样,他们之间是通过mesh链路连接在一起的,但是需要保证mesh节点工作的信道号和mesh id号必须相同!

设置开放性环状网络

在此示例中,我们将配置一个mesh节点以使用mesh网络,该节点将自动与使用相同配置(mesh和信道)的任何其他对等节点连接。
每个mesh节点都需要如下设置:

  1. 使用编译iw的内核并正确安装引导多个节点。
  2. 选择一个mesh id。mesh id是一个将在mesh节点信标中使用的字符串。只有具有相同mesh id的网格点才能相互通信。mesh id的最大长度为32个字节。在本文档中,我们将网格ID称为$MESH_ID。
  3. 在每个节点上为wlanN设备添加一个新的Mesh接口。您可以选择网格接口的名称。“mesh”是一种流行的选择。在本文中,我们将mesh 接口称为$MESH_IFACE,我起名为mesh0。

使用第二张网卡wlan1来做mesh组网,过程如下:

  1. 关闭wlan1

ip link set wlan1 down

  1. 添加mesh

iw dev wlan1 interface add mesh0 type mp

  1. 查看是否创建成功

ifconfig -a | grep mesh0

输出 mesh0 Link encap:Ethernet HWaddr E8:4E:06:96:A6:51

  1. 注意:默认情况下,所有mesh接口都从信道1开始。

iw dev mesh0 set channel 1

  1. 关闭mesh0并设置mesh id
ip link set mesh0 down
iw dev mesh0 set meshid mymesh
  1. 启动mesh0

ifconfig mesh0 up

  1. 分配ip,mesh组网要在同一个网段下

ifconfig mesh0 192.168.1.171

这样一台设备就配置好了。配置其他设备的时候只需要分陪不同的IP即可。在默认配置中,mesh节点将自动尝试创建所有其他具有相同mesh id的网格节点的对等链接。

或者使用另一种方式:

  1. 使用phy接口,使用iw list,查看网卡对应的phy,我的wlan1对应的phy1,先关掉wlan1
ip link set wlan1 down
iw phy phy1 interface add mesh0 type mp mesh_id mymesh
  1. 验证是否创建成功

ifconfig -a | grep mesh0

  1. 启用mesh0

ifconfig mesh0 up

  1. 设置ip,假设为192.168.1.171

ifconfig mesh0 192.168.1.171

方法三:

树莓派启动后,默认有有线网卡 eth0、无线网卡wlan0;为了支持 Mesh,还需加载 USB 的无线 wlan 驱动,驱动加载完成后,系统会显示 wlan1接口。

  1. 先通过 Openwrt 设置 wlan0 为 ap 模式,为移动终端等提供无线 WiFi接入;
  2. 再设置 wlan1 网卡为 Mesh 模式,同时所有不同的树莓派 wlan1网卡的 Mesh 信道都必须设置一致,由于无线信道带宽重叠原因,一般信道 1,6,11 为互不干扰信道,在此将 Mesh网络信道设置为 1信道;
  3. 接着设置 wlan1 网卡的 MAC 地址及 IP 地址,由于在 Mesh 网络中,识别不同设备是通过 MAC 来识别的,因此必须设置不同的 MAC 地址;同时设置 IP 地址为同一掩码范围内的 IP地址,如 192.168.2.0/24;
  4. 连接测试 Mesh 网络状态,各终端使用 ping 命令测试网络通断、丢包率等;
  5. 为了使无线骨干网与移动网络等网系联通,这只 桥 接 网 卡 用 于 连 接 eth0,wlan0,wlan1,同 时 配 置iptables 出入站规则;将 MPP 网关节点的 eth0 网卡接口通过有线连接至 4G 无线网关 CPE 上;为 eth0 配置 4G 固定 IP地址,测试 MPP,MP等节点与 4G 网络通畅状态。
iw dev wlan1 del
iw phy phy1 interface add Mesh0 type Mesh
iw dev Mesh0 set Meshid myMesh
iw dev Mesh0 set channel 1
ifconfig Mesh0 hw ether 00:1C:11:11:11:11
ifconfig Mesh0 up
ifconfig Mesh0 192.168.2.1
配置 iptables出入站规则
iptables -F
iptables -X
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth0 -o Mesh0 -j ACCEPT
iptables -A FORWARD -i Mesh0 -o eth0 -j ACCEPT
iptables -L -n

验证使用iw dev mesh0 station dump和iw dev mesh0 mpath dump命令检查已建立的对等链接:


Station e8:4e:06:96:a2:44 (on mesh0)
        inactive time:  950 ms
        rx bytes:       3530
        rx packets:     89
        tx bytes:       170
        tx packets:     3
        tx retries:     0
        tx failed:      0
        rx drop misc:   9
        signal:         -30 dBm
        signal avg:     -30 dBm
        Toffset:        1395514681956 us
        tx bitrate:     54.0 MBit/s
        tx duration:    0 us
        rx bitrate:     54.0 MBit/s
        rx duration:    0 us
        mesh llid:      39650
        mesh plid:      29147
        mesh plink:     ESTAB
        mesh airtime link metric: 1906
        mesh connected to gate: no
        mesh connected to auth server:  no
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      ACTIVE
        mesh non-peer PS mode:  ACTIVE
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            no
        TDLS peer:      no
        DTIM period:    2
        beacon interval:1000
        short slot time:yes
        connected time: 61 seconds
        associated at [boottime]:       274.466s
        associated at:  1636042217164 ms
        current time:   1636042278531 ms


DEST ADDR         NEXT HOP          IFACE       SN      METRIC  QLEN    EXPTIMEDTIM     DRET    FLAGS   HOP_COUNT       PATH_CHANGE

一些解释:
Destination MAC Address:目地mac地址。此mesh路径的目的地。直接路径的目的地和下一跳具有相同的MAC地址。
Next-hop MAC address:下一跳地址。直接路径的目的地和下一跳具有相同的MAC地址。
IFACE :专属网的名称
SN:此路径的目标序列号。 DSN用于确定节点路径信息的“新鲜度”。例如,假设节点接收到其路径表中已经存在的目的地的路径响应。如果路径响应的DSN较高,则它将替换现有路径,因为它将被认为是较新的。
Air Time Link Metric:路径的度量(或“成本”)。较低的度量标准是首选,并且在选择了多个路径的情况下,协议栈将选择成本最低的协议(即:空中链路度量最低的协议)。该值是使用预期的吞吐量得出的(metric = 1 + 8192 / Expected_throughput_mbps)预期吞吐量(Expected_throughput_mbps)取决于驱动程序(例如,某些包含重传)。
Frame Queue Length:此网格路径的排队帧数。
Expiration Time:此mesh路径过期的时间(以jiffies为单位)
Discovery Timeout:路径发现的剩余时间(如果正在发现此路径)。
Discovery Retries:重试发现的次数(如果正在发现此路径)。
Flags:它是一个位掩码,由该路径的以下状态标志组成:

MESH_PATH_ACTIVE = BIT(0),
MESH_PATH_RESOLVING = BIT(1),
MESH_PATH_DSN_VALID = BIT(2),
MESH_PATH_FIXED = BIT(3),
MESH_PATH_RESOLVED = BIT(4),

无线网桥

即一个路由器做中心路由器,开启dhcp,其他的路由器,自动分配ip地址,关闭dhcp,连接上其他路由器即可。其若非中心路由器脱离网络,其他路由器依旧可以维持通信正常。

管理界面的设置

注意事项:
mesh自组织网络,相较于无线网桥,其所有路由器均开启dhcp,若断开任意一个路由器,均可维持通信正常。

以下是管理界面配置mesh自组织网络,拥有长距离通信,扩充室内通信距离,其鲁棒性更高。

需要注意的是mesh共用同一个信道且ip需要相同。

其每个路由器的lan口需要不同,且开启dhcp,其中一个网卡开ap,一个mesh。

参考:

  • 简书
  • [1]李贤烈,郭超平,王盛青,靳俊程.基于树莓派的无线Mesh网络组织与实现[J].现代电子技术,2018,41(23):87-92+97.

文章作者: 万鲲鹏
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 万鲲鹏 !
评论
  目录