feat: Seamless WiFi roaming — unified SSID/key + 802.11r/k/v

Private WiFi: unified SSID "Parahub" with shared key "parahub.io"
across all nodes (was per-node random SSID/key, breaking roaming).

Added 802.11r (Fast BSS Transition ~50ms), 802.11k (neighbor AP
reports), 802.11v (AP-assisted roaming) with local FT key generation
(no inter-node key sync needed).

Mesh backhaul ID renamed from "parahub-mesh" to "parahub.io/mesh".

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-10 09:28:10 +00:00
parent 29aed6f6f1
commit 6dceb5ffe1

View File

@@ -21,8 +21,8 @@ BASE_MAC=$(cat /sys/class/net/br-lan/address 2>/dev/null || cat /sys/class/net/e
NODE_SUFFIX=$(echo "$BASE_MAC" | awk -F: '{print toupper($5$6)}') NODE_SUFFIX=$(echo "$BASE_MAC" | awk -F: '{print toupper($5$6)}')
HOSTNAME="Parahub-${NODE_SUFFIX}" HOSTNAME="Parahub-${NODE_SUFFIX}"
PRIVATE_SSID="Parahub_${NODE_SUFFIX}" PRIVATE_SSID="Parahub"
MESH_ID="parahub-mesh" MESH_ID="parahub.io/mesh"
PUBLIC_SSID="parahub.io/free" PUBLIC_SSID="parahub.io/free"
# ============================================================================ # ============================================================================
@@ -52,7 +52,8 @@ GUEST_IP="10.${GUEST_O1}.${GUEST_O2}.1"
# 3. KEY GENERATION # 3. KEY GENERATION
# ============================================================================ # ============================================================================
PRIVATE_KEY=$(head -c 128 /dev/urandom | tr -dc 'A-Za-z0-9' | head -c 12) # Shared private WiFi key — same on all nodes for seamless 802.11r roaming
PRIVATE_KEY="parahub.io"
# Shared mesh SAE key — same across all Parahub nodes for auto-peering # Shared mesh SAE key — same across all Parahub nodes for auto-peering
MESH_KEY="ndIPclyqSn9LaCki" MESH_KEY="ndIPclyqSn9LaCki"
@@ -337,7 +338,7 @@ set wireless.mesh_5g.key='${MESH_KEY}'
set wireless.mesh_5g.network='bat0_hardif_mesh1' set wireless.mesh_5g.network='bat0_hardif_mesh1'
WIFI_5G_MESH WIFI_5G_MESH
# Private AP on 5GHz (better throughput) # Private AP on 5GHz (better throughput, 802.11r/k/v for seamless roaming)
uci batch <<-WIFI_5G_PRIV uci batch <<-WIFI_5G_PRIV
set wireless.private_5g=wifi-iface set wireless.private_5g=wifi-iface
set wireless.private_5g.device='${RADIO_5G}' set wireless.private_5g.device='${RADIO_5G}'
@@ -346,6 +347,12 @@ set wireless.private_5g.ssid='${PRIVATE_SSID}'
set wireless.private_5g.encryption='sae' set wireless.private_5g.encryption='sae'
set wireless.private_5g.key='${PRIVATE_KEY}' set wireless.private_5g.key='${PRIVATE_KEY}'
set wireless.private_5g.network='private' set wireless.private_5g.network='private'
set wireless.private_5g.ieee80211r='1'
set wireless.private_5g.ft_over_ds='0'
set wireless.private_5g.ft_psk_generate_local='1'
set wireless.private_5g.mobility_domain='pa01'
set wireless.private_5g.ieee80211k='1'
set wireless.private_5g.ieee80211v='1'
WIFI_5G_PRIV WIFI_5G_PRIV
fi fi