Skip to content

Mesh Wireless (HWMP+)

For the impatient: create a basic wireless mesh between two nodes.

On all mesh nodes:

# Configure WDS on wireless
/interface wireless set wlan1 mode=ap-bridge wds-mode=dynamic-mesh \
wds-default-bridge=none frequency=5180 ssid=mesh-network
# Create mesh interface
/interface mesh add name=mesh1 disabled=no
# Add wireless to mesh
/interface mesh port add interface=wlan1 mesh=mesh1

Verify:

/interface mesh fdb print
/interface wireless registration-table print

What this does: HWMP+ (Hybrid Wireless Mesh Protocol Plus) provides Layer 2 routing for wireless mesh networks. Based on IEEE 802.11s draft standard, it creates self-healing, loop-free paths between mesh nodes without requiring spanning tree.

When to use this:

  • Outdoor wireless backbone networks (4-6 nodes)
  • Temporary event coverage
  • Rural/remote area connectivity
  • Building-to-building links with redundancy

When NOT to use this:

  • WiFi 6 (802.11ax) devices - HWMP+ doesn’t work with wifiwave2
  • Networks larger than 4-6 nodes - scaling issues
  • Networks requiring multicast/OSPF - poor multicast support
  • Enterprise deployments - use CAPsMAN instead

Two Operating Modes:

Overview (Two Operating Modes) diagram
ModeDescriptionBest For
ReactiveOn-demand path discovery via PREQ floodingMobile nodes, intra-mesh traffic
ProactivePortal announces routes via RANNGateway/internet traffic

Prerequisites:

  • Devices with legacy wireless driver (not wifiwave2)
  • Same SSID, frequency, and security on all nodes
  • WDS-capable wireless configuration

Common Mistakes

  • Don’t use HWMP+ with wifiwave2/WiFi 6 devices - it won’t work
  • Don’t scale beyond 4-6 nodes - protocol becomes unstable
  • Don’t run OSPF or other multicast protocols over mesh - causes storms

WDS (Wireless Distribution System) enables multi-hop forwarding with four-address frames:

/interface wireless set wlan1 \
mode=ap-bridge \
wds-mode=dynamic-mesh \
wds-default-bridge=none \
frequency=5180 \
ssid=mesh-network \
security-profile=default

WDS Modes:

  • dynamic-mesh - Auto-create WDS links, optimized for mesh (recommended)
  • dynamic - Auto-create WDS on any compatible peer
  • static - Manual WDS links only
/interface mesh add name=mesh1 disabled=no
# Add wireless interface
/interface mesh port add interface=wlan1 mesh=mesh1

Configure identical settings on all mesh participants. They will automatically discover each other and form mesh paths.

Portal configuration (proactive mode) diagram

For networks where most traffic goes to/from a gateway:

On gateway node (portal):

/interface mesh add name=mesh1 disabled=no mesh-portal=yes
/interface mesh port add interface=wlan1 mesh=mesh1
/interface mesh port add interface=ether1 mesh=mesh1

On internal nodes:

/interface mesh add name=mesh1 disabled=no mesh-portal=no
/interface mesh port add interface=wlan1 mesh=mesh1

The portal announces itself via RANN messages. Internal nodes learn default route to portal and forward unknown destinations there.

Mixed WDS and ethernet diagram

Include wired links in the mesh:

/interface mesh add name=mesh1 disabled=no
/interface mesh port add interface=wlan1 mesh=mesh1 port-type=wds
/interface mesh port add interface=ether2 mesh=mesh1 port-type=ethernet path-cost=5

Lower path-cost makes Ethernet preferred over wireless.

Bridge local clients diagram

Connect local clients to the mesh network:

# Create bridge for local clients
/interface bridge add name=bridge-local
# Add local interfaces
/interface bridge port add interface=ether2 bridge=bridge-local
/interface bridge port add interface=wlan2 bridge=bridge-local
# Add bridge to mesh
/interface mesh port add interface=bridge-local mesh=mesh1
PropertyDefaultDescription
mesh-portalnoAct as gateway for proactive mode
reoptimize-pathsnoPeriodically revalidate paths
hwmp-default-hoplimit32Maximum hop count
hwmp-prep-lifetime5mRoute lifetime
hwmp-rann-interval10sPortal announcement interval
PropertyDefaultDescription
path-cost10Routing cost (lower = preferred)
port-typeautowds, ethernet, or wireless
hello-interval10sHWMP+ hello frequency
# Mesh interface status
/interface mesh print
# Mesh ports and neighbors
/interface mesh port print detail
# Forwarding database (learned MACs)
/interface mesh fdb print
# Trace path through mesh
/interface mesh traceroute mesh1 00:11:22:33:44:55
# WDS peer connections
/interface wireless registration-table print

FDB Entry Types:

  • local - MAC on directly connected port
  • neighbor - MAC reachable via mesh neighbor
  • mesh - MAC reachable via multiple hops
  • outsider - MAC outside mesh (via portal)
SymptomCauseSolution
Mesh unstable after few minutesHWMP+ instability with many nodesLimit to 4-6 nodes
No WDS peers connectingWrong WDS mode or SSID mismatchCheck wds-mode=dynamic-mesh, same SSID
Ethernet stuck as “outsider”Port type detection issueSet port-type=ethernet explicitly
WiFi 6 devices don’t meshwifiwave2 not supportedUse legacy wireless driver only
Traffic doesn’t use better pathCost-based routing limitationManual intervention; accept limitation
High CPU usageANI issuesDisable: adaptive-noise-immunity=none
Multicast stormsNo optimized L2 multicastAvoid multicast; don’t run OSPF over mesh
FeatureHWMP+ MeshWDS + RSTPCAPsMAN
Optimal routingYesNo (loop prevention only)N/A
Scalability4-6 nodes6+ nodesMany APs
Self-healingYesYesYes
MulticastPoorBetterGood
WiFi 6 supportNoNoYes
ConfigurationMediumSimpleMedium
  • Does NOT work with wifiwave2 (WiFi 6) interfaces
  • Scaling issues beyond 4-6 nodes
  • Poor multicast/broadcast support
  • Cost-based routing may not function properly
  • Ethernet ports may get stuck as “outsider”
  • No interface hopping for dual-radio mesh

Common Mistakes

  • Don’t expect mesh to scale like enterprise WiFi - it’s designed for small deployments
  • Don’t run multicast protocols (OSPF, mDNS) over mesh - causes network instability
  • Don’t mix wifiwave2 and legacy wireless in the same mesh
  • OSPF - Layer 3 alternative for large networks
  • Static Routes - manual routing through mesh