基于802.11的无线mesh网状网络

802.11s 是一个无需建立基础设施就可以连接无线设备的开源标准. 它在 Layer 2 上运行,并确保所有节点可以在桥接二层网络上看到彼此(就像他们都插入到交换机上一样). 任何 Layer 3 基础设施都可以在此之上工作. IP router 和 DHCP clients 都能很好运行. 可以根据用例实现更复杂的基础设施。(例如 Batman, Bird, OLSR 等)

该视频是使用OpenWRT构建简单网状网络的一个很好的入门教程: https://www.youtube.com/watch?v=kMgs2XFClaM

802.11s 在 OpenWrt 19.07 及更高版本稳定工作, 包括身份验证和加密, 假设有硬件/驱动程序支持 并且已经安装了 wpad-mesh-openssl (或同等的工具wpad-mesh-wolfssl)。

:!: 有一个ARP中继错误 (在v19.07.4确认),这意味着处于mesh网格中只有在Mesh Portal (MPP)的无线范围内的Mesh-Points才正常工作. 参见: https://forum.openwrt.org/t/bug-report-802-11s-mesh-v19-07-4/78524/4

如果默认安装了这些,就需要删除:

# opkg remove wpad-mini
# opkg remove wpad-basic

安装依赖项 (改为wpad-mesh-openssl),才能提供mesh网络的加密:

# opkg install wpad-mesh-openssl

编辑 /etc/config/wireless 并确定:

  • radio0 没有设置为 disabled
  • radio0 在每个设备上都配置兼容 (相同的channel等)
  • 按下面的形式增加 iface :
config wifi-iface 'mesh'
        option network 'mesh'
        option device 'radio0'
        option mode 'mesh'
        option mesh_id 'your-mesh-name' # 可以任意字符串, 所有同一个mesh_id的节点连接成一个网格(如果有密码还要加上密码)
        option encryption 'psk2/aes' # or 'none'
        option key 'your-secret-password'

注意: 客户端设备的访问是通过桥接‘ap’和‘mesh’接口来实现的,这一点很重要。

如果你想在你的mesh网格上运行一个像OLSR这样的路由协议,就禁用 802.11s的内置路由选项 option mesh_fwding '0' .

对于网格参数的完整列表,您可以检查以下变量的值 mac80211.sh Source:

  • MP_CONFIG_INT
  • MP_CONFIG_BOOL
  • MP_CONFIG_STRING

或者也可以用以下命令

# iw dev <devname> get mesh_param 

来获取可用mesh网格参数表, 不过没文档.

然后重启无线网络看它的工作情况:

# wifi
# logread -l 20 -f
# iw dev wlan0 station dump

:!: 支持 802.11s (type mesh) 取决于无线驱动程序. 大多数最新的开源驱动程序都是可以的.

使用以下方法来确定你的硬件是否支持 802.11s mesh.

iw list | grep "Supported interface modes" -A 9

...
      Supported interface modes:
                 * IBSS
                 * managed
                 * AP
                 * AP/VLAN
                 * WDS
                 * monitor
                 * mesh point
                 * P2P-client
		 * P2P-GO
...

例如: ath9k的路由器

iw list
...
valid interface combinations:
		 * #{ managed, WDS } <= 2048, #{ AP, mesh point } <= 8, #{ P2P-client, P2P-GO } <= 1, #{ IBSS } <= 1,
		   total <= 2048, #channels <= 1, STA/AP BI must match
		 * #{ IBSS, AP, mesh point } <= 1,
		   total <= 1, #channels <= 1, STA/AP BI must match, radar detect widths: { 20 MHz (no HT), 20 MHz }
...

例如: ath9k_htc的USB外设

iw list
...
valid interface combinations:
		 * #{ managed, P2P-client } <= 2, #{ AP, mesh point, P2P-GO } <= 2,
		   total <= 2, #channels <= 1
...

iw 是一种新的基于 nl80211 的wireless devices命令行实用配置工具.more...

创建新的 interface “mesh0”

iw phy phy0 interface add mesh0 type mp mesh_id mymesh

确认新 interface 存在

ifconfig -a | grep mesh0

     mesh0      Link encap:Ethernet  HWaddr 00:18:39:14:48:B5

打开你的 mesh0 interface

ifconfig mesh0 up

为接口配置IP地址。 如: 10.0.0.x

ifconfig mesh0 10.0.0.1

默认情况下, mesh points 会使用 channel 1 并自动尝试创建具有相同mesh ID和channel的mesh节点的对等连接.

使用iw命令显示对等链路或mesh网格中可达节点的表

iw dev $MESH_IFACE station dump
iw dev $MESH_IFACE mpath dump

例如:

iw dev $MESH_IFACE station dump
    Station 00:15:6d:84:14:10 (on mesh)
         inactive time:  1320 ms
         rx bytes:   352
         rx packets: 4
         tx bytes:   174
         tx packets: 2
         signal:     -61 dBm
         tx bitrate: 1.0 MBit/s
         mesh llid:  32577
         mesh plid:  15969
         mesh plink: ESTAB
    Station 00:15:6d:84:14:09 (on mesh)
         inactive time:  3370 ms
         rx bytes:   1064
         rx packets: 12
         tx bytes:   545
         tx packets: 7
         signal:     -53 dBm
         tx bitrate: 1.0 MBit/s
         mesh llid:  41036
         mesh plid:  24435
         mesh plink: ESTAB

需要 iw-full 包!

通过MAC地址封锁处于mesh网格中的节点

iw dev $MESH_IFACE station set $MAC_TO_BLOCK plink_action block

验证以上是否生效 (iw dev $MESH_IFACE station dump)

	mesh plink:	BLOCKED

解除:

iw dev $MESH_IFACE station set $MAC_TO_UNBLOCK plink_action open

根据 this source plink_action 不会在mesh网格链接的重连中持久化。

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/01/05 01:43
  • by shorile