CAPWAP全称为无线接入点的控制和配置协议(Control And Provisioning of Wireless Access Points Protocol Specification)
CAPWAP协议主要作用
1、AP可以通过CAPWAP实现自动发现AC
2、AC通过CAPWAP协议对AP进行管理、业务配置下发
3、STA的数据通过封装CAPWAP进行转发
CAPWAP隧道主要分为控制隧道和数据隧道
控制隧道 用于AP与AC的交互;管理AP
AP的UDP端口 ↔ AC的UDP 5246
用于AC下发AP的配置以及版本信息
数据隧道 用于无线用户与AC之间的交互;转发用户业务数据
AP的UDP端口 ↔ AC的UDP 5247
传输无线用户上网的数据以及无线用户连接无线信号的数据
CAPWAP隧道主要有直接转发和隧道转发两种方式
先了解一些基本的概念
管理Vlan
AC建立CAPWAP隧道源的VLAN
AP的IP地址所在的Vlan(AP可以由AC、交换机、路由器分配)
如果由AC为AP分配IP地址,则AP的IP地址所在的Vlan就是AC建立隧道源的Vlan
如果不是AC为AP分配IP地址,则AP的IP地址与AC建立隧道源不在同一网段(不在同一Vlan)
业务Vlan
STA地址所在的Vlan(可以由AC、交换机、路由器分配)
直接转发(本地转发)
AC只对AP进行管理,无线业务数据不需要经过CAPWAP封装送给AC,由本地直接转发
STA数据从AP出来所携带的Tag为业务Vlan,源目IP就是自己的源加上目的地址(即:数据包没有发生变化)
AC和SWB之间的接口为Trunk口,放通管理Vlan
SWA和SWB相连接口为Trunk口,放通管理Vlan和业务Vlan
SWA连接AP的接口为Trunk口,PVID为管理Vlan,放通管理Vlan和业务Vlan
SWB连接Router接口为Trunk口,放通业务Vlan
隧道转发(集中转发)
AC除了管理AP之外,还作为无线业务流量的转发中枢
业务数据报文由AP统一封装后送到AC,再通过AC解封装之后发送出去来实现转发
STA数据从AP出来所携带的Tag为AP所在Vlan,源IP是AP的地址,目的IP是AC的隧道源地址
AC和SWB之间的接口为Trunk口,放通业务Vlan和管理Vlan
SWA和SWB相连接口为Trunk口,放通管理Vlan
SWA连接AP的接口为Access口,PVID为管理Vlan
SWB连接Router接口为Trunk口,放通业务Vlan
两种方式的区别
直接转发
转发效率高,方便故障定位,报文不需要经过多次封装与解封装
安全性不够,业务数据不便于集中管理和控制
隧道转发
业务数据通过CAPWAP的DTLS加密,安全性高,业务数据便于集中管理和控制;
业务数据必须经过AC转发使得转发效率低,不方便故障定位
AC是使用隧道地址与AP建立隧道,需要在AC上配置隧道地址
锐捷:默认使用的隧道地址时Loop0接口地址
ac-controller
capwap ctrl-ip 192.168.1.1 通过此命令更改隧道源为指定地址
华为
capwap source int vlanif 100 通过此命令更改隧道源为此Vlanif的地址(此Vlan就是管理Vlan)
1.AP接口获取IP地址
可以通过静态、DHCP、SLAAC(IPV6无状态地址自动配置)来获取IP地址
默认AP接口通过DHCP获取IP地址
DHCP与DHCPv6讲解_dhcp ipv6_静下心来敲木鱼的博客-CSDN博客
2.AP发现AC(Discover报文)
AP可以通过静态、DHCP、DNS方式、广播、组播(224.0.1.140)方式去获取到AC的地址
当使用DHCP时,华为使用option43字段来传输AC的IP地址,锐捷使用option138来传输AC的IP地址(锐捷后续设备支持43传输)
AP通过广播、组播、单播发送Discover报文发现AC
如果AC回应了Discover报文,则AP将此AC的地址加入到AC列表中,并为其指定不同的优先级(越小越优先);然后会选取最优的AC去建立CAPWAP隧道
通过DHCP动态获取到的AC地址并得到此AC的回应 优先级为8
通过静态指定的AC的地址,并得到此AC的回应,优先级为7
通过广播、组播发现的AC,优先级为9
AP获取IP地址的配置
锐捷
锐捷静态配置AP的IP地址和AC的IP地址(AP上配置)
apip ipv4 192.168.1.2 255.255.255.0 192.168.1.1
acip ipv4 1.1.1.1
锐捷动态配置AC的IP地址(AC上配置)
ip dhcp pool pool1
option 138 ip 1.1.1.1
3 .AP与AC 进行DTLS握手
AP与最优的AC建立CAPWAP隧道,此阶段主要协商是否需要DTLS加密
如果DTLS加密,则可以通过DTLS加密来传输后续的报文信息
控制报文加密
华为设备默认开启
华为设备更改控制报文加密的DTLS密码
AC端:capwap dtls psk admin 配置DTLS密码
capwap dtls control-link encrypt 开启控制报文加密
AP端:capwap dtls psk cipher admin 配置DTLS密码
锐捷设备默认开启
数据报文加密
华为设备默认没有开启
可以通过capwap dtls data-link encrypt开启数据通道的DTLS加密
锐捷设备默认开启
4.AP加入到AC请求接入控制(Join报文)
AP发送Join报文请求加入AC,AC确认AP认证通过后回应Join报文
在交互过程中,AC回应的Join报文会携带用户要求AP的升级版本号信息、控制报文优先级等信息
AC认证AP的方式:MAC认证、SN认证、不认证
5.AP版本升级(Image date报文)
AP加入AC后,AP根据AC的Join报文信息,检测自身版本是否是最新版本(如果AC上有AP的版本,并开起来自动升级,则会AC会通过Image Data报文发送软件版本给AP进行更新)
AP升级结束后(无论成功)进行重启,然后重复进行发现AC、建立CAPWAP隧道、加入AC的过程
注意
AC通过CAPWAP控制报文下发升级版本给AP,而不是CAPWAP数据报文
6.AP请求AC进行配置下发(Configuration报文)
AP发送的Configuration报文包含AP的现有配置
如果AP的当前配置与AC的要求不符合时,AC会通过Configuration通知AP
7、AP配置确认(Data Check报文)
AP收到AC的下发的Configuration报文后,更改自身配置
AP配置更改完成后,发送Data Check给AC(其中包含了radio、result、code等信息)
AC收到后回应Data Check报文;
8、数据隧道建立成功(Keepalive报文)
AP发送Keepalive报文,AC收到后回应Keepalive报文,表示数据隧道建立成功
此时AP进入normal状态,开始正常工作
9、控制隧道建立成功(Echo报文)
AP进入Run数据之后,发送Echo报文给AC,宣布建立CAPWAP控制隧道
AC收到Echo后回应Echo报文,CAPWAP控制隧道建立成功
10.CAPWAP隧道维持(Keepalive、Echo报文)
业务平面:使用Kepplive报文维持 30秒发一次(不同厂商可能不同)
控制平面:使用Echo报文维持 30秒发一次(不同厂商可能不同
注意事项
AP可以发现多个AC,但是只可以加入一个AC
IDLE
初始化状态
Discovery
AP发现AC的状态(如果AP静态指定了AC,此状态可以跳过)
AP 发出Discovery Request 报文为 Discovery 状态
AC收到Discovery Request报文为Discovery状态,并发送Discovery Response 报文
DTLS状态
AP收到Discovery Response 报文后,AP 和 AC 之间开始进行 DTLS 握手,都进入DTLS状态;其中细分为DTLS Setup状态、Authorize状态、DTLS Connect状态
DTLS Setup状态: DTLS开始建立
Authorize状态: DTLS会话进行证书认证
DTLS Connect状态: DTLS认证通过, 进入DTL连接状态
Join状态
AP和AC的DTLS握手成功,AP进入Join状态,发送Join Request报文
AC收到AP发送的Join Request报文,AC进入Join状态,并回应Join Response报文,
Image Data状态
AP 收到Join Response 报文后,先比较当前运行的软件版本和 AC 要求运行的软件版本是否一致,如果不一致则发送Image Data Request 报文请求进行自动升级,进入Image Data状态(版本一致或从Join报文中发现AC不检查软件版本,直接跳到Config状态)
AC 收到Image Data Request 报文报文后进入Image Data状态,并回应Image Data Response 报文,下发AP的版本信息
Config状态
AP升级结束后重启(或者AP版本是最新的没有进行升级),收到AC发来的Join Response 报文,AP发出Config Status Request 报文,进入Config状态
AC 收到Config Status Request 报文后,进入Config状态,并回应Config Status Response 报文
Data Check状态
AP 收到Config Status Response 报文后进入Data Check状态, 并发送Change State Event Request报文
AC 收到Change State Event Request 报文转为Data Check状态,并回应 Change State Event Response 报文
Run状态
AP 收到Change State Event Response 报文后转为Run;开始创建数据隧道,每间隔一定周期发送一个数据通道保活报文Keepalive
AC 收到第 1 个Keepalive报文进入Run状态,并回应 Keepalive保活报文
AP和AC建立成功数据隧道后,互发Echo报文建立控制隧道并保活
1、AP是否获取到IP地址(直接电脑接入AP查看,或者电脑代替AP接入对应网络上查看电脑是否获取到地址)
2、AP是否获取到AC的地址(登录到AP上通过命令查看、或者查看DHCP有无配置option 138、Option 43)
3、检查AP和AC是否可以互通;AC上配置的隧道地址是否和AP上获取的AC的地址一致
4、检查AC的授权是否有问题(纳管AP的数量是否上限)
5、AP的软件版本是否满足要求
4、中间是否有防火墙,相应的CAPWAP的UDP端口是否放通