第136篇:无线漫游:二层漫游与三层漫游

关键词:无线漫游、二层漫游、三层漫游、Fast Roam、802.11r、PMK 缓存、锚点 AP、FMPC、华为漫游


一、引言

在第135篇中,我们学习了 AP、AC 和 CAPWAP 隧道的基础架构。但一个完整的企业 WLAN 部署中,用户会在大楼内移动:从会议室走到走廊、从一楼走到二楼、甚至从一个建筑走到另一个建筑。在这个过程中,手机和笔记本需要从一个 AP 切换到另一个 AP——这就是无线漫游。

如果漫游处理不当,会导致通话中断、视频卡顿、甚至重新认证耗时数秒。本文将深入探讨二层漫游和三层漫游的原理与配置。

二、核心概念

2.1 漫游的基本流程

漫游的基本流程 - 图示

2.2 二层漫游与三层漫游

特性 二层漫游(L2 Roam) 三层漫游(L3 Roam)
漫游范围 同一 VLAN/同一子网 不同 VLAN/不同子网
IP 地址 不变 需要重新获取或保持
数据路径 直接在接入层交换 需要隧道转发或重新锚定
切换时间 短(< 100ms) 较长(受认证影响)
场景 同楼层 AP 间切换 跨楼层/跨楼栋切换

二层漫游与三层漫游 - 图示

2.3 快速漫游技术

技术 标准 说明 漫游延迟
PMK 缓存 802.11i 在 AC 内缓存 PMK,漫游时复用 < 100ms
802.11r (FT) 802.11r 预认证,在漫游前完成密钥协商 < 50ms
802.11k 802.11k 邻区报告,STA 快速选择目标 AP 辅助
802.11v 802.11v BSS 过渡,AC 引导 STA 漫游 辅助

三、技术细节

3.1 二层漫游数据转发

二层漫游最简单:STA 从一个 AP 漫游到同 VLAN 的另一个 AP,IP 地址不变,数据流直接在二层交换。

步骤 说明
1 STA 检测到新 AP 信号更强
2 STA 向新 AP 发送 Re-Association Request
3 新 AP 通过 CAPWAP 通知 AC
4 AC 在 PMK 缓存中查找 STA 的密钥(无需重新认证)
5 AC 更新 STA 的绑定关系(旧 AP → 新 AP)
6 AC 向旧 AP 发送卸载指令
7 后续数据直接由新 AP 转发

3.2 三层漫游数据转发

三层漫游复杂得多,STA 跨子网漫游后需要解决 IP 可达性问题:

三层漫游数据转发 - 图示

方案 说明 适用场景
重新获取 IP STA 重新 DHCP,获得新子网 IP 可容忍断线的应用(网页浏览)
锚点隧道(Mobility Anchor) 漫游后的数据通过隧道回传到原 AP(锚点) 实时业务(语音/视频)
无状态三层漫游 AC 在数据面建立二层隧道,对网络透明 AC 统一管理,推荐方案
FMPC 方案 转发移动感知控制器集中转发 大规模跨 AC 漫游

3.3 三层漫游的华为实现(无状态三层漫游)

华为 AC 支持无状态三层漫游(Stateless L3 Roaming),其核心思想是:AC 在所有 AP 间建立二层隧道,对上层网络透明。

三层漫游的华为实现(无状态三层漫游) - 图示

四、实战配置/案例分析

4.1 二层漫游配置

# ========== 二层漫游:同 VLAN 内 AP 间漫游 ==========

# AC 侧配置
[AC] wlan
[AC-wlan-view] roam
[AC-wlan-view-roam] enable

# 配置漫游组(同一漫游组内 AP 支持二层漫游)
[AC-wlan-view] roam-group name roam-group-1
[AC-wlan-view-roam-group-roam-group-1] roam-domain 1
[AC-wlan-view-roam-group-roam-group-1] quit

# 配置 PMK 缓存(快速漫游)
[AC-wlan-view] pmk-cache
[AC-wlan-view-pmk-cache] pmkcache age-time 1440
[AC-wlan-view-pmk-cache] pmkcache max-entry 4096
[AC-wlan-view-pmk-cache] quit

# 在 AP 组中绑定漫游组
[AC-wlan-view] ap-group name office-group
[AC-wlan-ap-group-office-group] roam-group roam-group-1
[AC-wlan-ap-group-office-group] quit
[AC-wlan-view] quit

# 验证
[AC] display roam-group name roam-group-1
[AC] display pmkcache all

4.2 三层漫游配置

# ========== 三层漫游:跨 VLAN/子网的 AP 间漫游 ==========

# AC 侧配置

# Step 1: 创建漫游域
[AC] wlan
[AC-wlan-view] roam
[AC-wlan-view-roam] enable
[AC-wlan-view-roam] roam-domain-id 1
[AC-wlan-view-roam] l3-roam enable
[AC-wlan-view-roam] quit

# Step 2: 配置二层漫游组(同 VLAN 内)
[AC-wlan-view] roam-group name floor1-group
[AC-wlan-view-roam-group-floor1-group] roam-domain 1
[AC-wlan-view-roam-group-floor1-group] vlan 200
[AC-wlan-view-roam-group-floor1-group] quit

[AC-wlan-view] roam-group name floor2-group
[AC-wlan-view-roam-group-floor2-group] roam-domain 1
[AC-wlan-view-roam-group-floor2-group] vlan 201
[AC-wlan-view-roam-group-floor2-group] quit

# Step 3: 绑定 AP 组到漫游组
[AC-wlan-view] ap-group name floor1-group
[AC-wlan-ap-group-floor1-group] roam-group floor1-group
[AC-wlan-ap-group-floor1-group] quit

[AC-wlan-view] ap-group name floor2-group
[AC-wlan-ap-group-floor2-group] roam-group floor2-group
[AC-wlan-ap-group-floor2-group] quit

# Step 4: 配置无状态三层漫游隧道
[AC-wlan-view-roam] tunnel source-ip 10.10.1.1
[AC-wlan-view-roam] quit

# Step 5: 配置 802.11r 快速漫游
[AC-wlan-view] security-profile name office-sec
[AC-wlan-security-profile-office-sec] ftm mode ckpm
[AC-wlan-security-profile-office-sec] ft over-the-ds enable
[AC-wlan-security-profile-office-sec] ft overwrite r0-key-id
[AC-wlan-security-profile-office-sec] ft overwrite pmk-id
[AC-wlan-security-profile-office-sec] quit

# 验证
[AC] display roam-group all
[AC] display l3-roam statistics

4.3 故障案例:漫游后通话中断

场景:IP 电话用户在楼层内移动时,从 AP-01 漫游到 AP-02 后通话立即中断。

排查:

# 1. 查看 STA 漫游历史
[AC] display station mac 0011-2233-4455
# Station 关联在 AP-02
# 之前关联在 AP-01

# 2. 检查漫游组配置
[AC] display roam-group all
# AP-01 和 AP-02 不在同一漫游组
# roam-group-1 包含 AP-01
# roam-group-2 包含 AP-02
# 跨漫游组漫游退化为重新关联,非快速漫游

# 3. 检查 PMK 缓存
[AC] display pmkcache all
# 跨漫游组没有 PMK 缓存

根因:AP-01 和 AP-02 属于不同漫游组,不支持 PMK 缓存复用,漫游退化为完整 4 次握手认证。

处理:将两个 AP 加入同一漫游组:

[AC] wlan
[AC-wlan-view] roam-group name office-roam
[AC-wlan-view-roam-group-office-roam] roam-domain 1
[AC-wlan-view-roam-group-office-roam] quit

[AC-wlan-view] ap-group name office-group
[AC-wlan-ap-group-office-group] ap-id 1 ap-mac 00e0-fc01-0001
[AC-wlan-ap-group-office-group] ap-id 2 ap-mac 00e0-fc01-0002
[AC-wlan-ap-group-office-group] roam-group office-roam

4.4 故障案例:三层漫游后无法上网

场景:用户从一楼(VLAN 200)走到二楼(VLAN 201)后,WiFi 连接显示正常,但无法上网。

排查:

# 1. 查看 STA 状态
[AC] display station mac 0011-2233-4455
# STA 关联在二楼 AP
# Service VLAN: 201
# IP Address: 10.10.200.10 (旧 IP,仍属于 VLAN 200)

# 2. 检查 VLAN 201 的网关
[AC] display ip interface brief | include Vlanif201
# Vlanif201 存在,IP 10.10.201.1

# 3. 检查三层漫游隧道状态
[AC] display l3-roam tunnel
# 三层漫游隧道未建立

根因:三层漫游配置不完整,STA 漫游后仍使用旧 VLAN 的 IP 地址,但数据从新 VLAN 发出,导致路由不可达。

处理:启用无状态三层漫游,确保 AC 建立隧道转发。

五、总结

项目 说明
二层漫游 同 VLAN 内 AP 间切换,IP 不变,延迟 < 100ms
三层漫游 跨 VLAN AP 间切换,需要隧道转发或重新获取 IP
快速漫游 PMK 缓存(复用密钥)、802.11r(预认证)
漫游组 同一漫游组内的 AP 支持快速漫游
华为实现 roam-group + pmk-cache + l3-roam tunnel
关键配置 漫游域、漫游组、AP 组绑定、PMK 缓存
语音漫游 延迟要求 < 50ms,需要 802.11r + PMK 缓存
辅助标准 802.11k(邻区报告)、802.11v(BSS 过渡)

思考

  1. 二层漫游中 PMK 缓存的作用是什么?如果 AC 重启后 PMK 缓存丢失,漫游延迟会增加多少?

  2. 三层漫游使用隧道转发时,数据包会绕行(从新 AP → AC → 锚点 → 原网关)。这种绕行对延迟和带宽有什么影响?在什么场景下可以接受?

  3. 802.11r(FT)要求所有 AP 使用相同的 PMK 派生密钥。如果 AC 有多个 SSID,每个 SSID 是否需要单独配置 802.11r?

下篇预告:第137篇:无线信道规划与 5G/2.4G 差异