设为首页   锐捷官网
用其他帐号登录:
查看: 669|回复: 1

[RIIL动态] 技术盛宴|无线CAPWAP隧道技术——理论篇

[复制链接]

151

主题

151

帖子

888

积分

版主

Rank: 7Rank: 7Rank: 7

积分
888
发表于 2021-1-14 11:11:57 | 显示全部楼层 |阅读模式
本文作者:田小杨
锐捷网络技术服务部互联网服务中心

前言

CAPWAP是Control And Provisioning of Wireless Access Points Protocol Specification的缩写,意为无线接入点的控制和配置协议,是无线局域网内最重要的技术之一。很多朋友经常会把CAPWAP协议和IEEE 802.11协议混淆在一起,从全局角度来看,IEEE 802.11协议用来解决STA和AP之间的通信,而CAPWAP协议用来解决AP与AC之间的通信。


CAPWAP协议介绍

本次无线CAPWAP隧道技术的介绍分为理论篇和实践篇,本期理论篇详细介绍了CAPWAP协议报文、状态机、隧道建立过程三部分,帮助大家深入理解CAPWAP协议技术原理。下一期实践篇,将梳理项目中最常遇到的CAPWAP隧道无法建立的可能原因和解决思路。希望本文能够帮助各位读者把CAPWAP协议技术学透彻、用熟练。


CAPWAP协议简介

在瘦AP场景下,AP不能单独工作,需要与AC配合使用,因此AP和AC之间需要一个通信协议可以让它们进行互联。CAPWAP协议用于AC对其所关联的AP的集中管理和控制,为AP和AC之间的互通性提供了一个通用封装和传输机制。


CAPWAP协议主要具备以下几个功能:

  • AP对AC的自动发现;

  • AP和AC的状态机运行和维护;

  • AC对AP进行管理、业务配置下发;

  • STA数据封装CAPWAP隧道进行转发。



CAPWAP协议报文介绍

CAPWAP协议有两种类型的报文:CAPWAP控制报文和数据报文。控制报文主要携带的是信息要素,用于AC对于AP工作参数的配置和CAPWAP隧道的维护;数据报文主要携带终端发送的数据报文,用于传输终端的上层数据。控制报文和数据报文分别传输在不同的UDP端口,控制报文使用端口5246,数据报文使用端口5247。


CAPWAP控制报文


不受DTLS保护的CAPWAP控制报文由CAPWAP前导、CAPWAP首部、控制首部、信息要素组成;受DTLS保护的CAPWAP控制报文由CAPWAP前导、DTLS首部、CAPWAP首部、控制首部、信息要素、DTLS尾部组成。是否受DTLS保护是CAPWAP的可选项, DTLS用于对CAPWAP报文进行加密和验证,提高CAPWAP报文的安全性。锐捷无线设备CAPWAP控制报文DTLS保护默认开启,可在ac-controller模式下通过命令no capwap dtls enable关闭用于故障排查(锐捷设备命令行)。


不受DTLS保护的CAPWAP控制报文格式

受DTLS保护的CAPWAP控制报文格式

CAPWAP前导中只包含Version和Type两个字段,Version始终为0,Type有两个可选参数0(CAPWAP Header)和1(CAPWAP DTLS Header)。CAPWAP前导的作用是通告其后面跟着的载荷类型是CAPWAP首部还是DTLS首部,即通告该CAPWAP报文是否加密。


CAPWAP控制报文中的CAPWAP前导

CAPWAP首部,Header Length指出CAPWAP首部大小;Radio ID用于指出此消息与哪个物理无线电设备关联;Wireless Binding ID用于指出与此无线电设备关联的无线分组的类型;Header Flags标志位目前有六位在用,每一位代表不同含义具体可参考《RFC 5415》;Fragment ID和Fragment Offset用于CAPWAP报文分片时使用。


CAPWAP控制报文中的CAPWAP首部

控制首部,Message Type用于表示CAPWAP控制报文的类型,目前有26种类型控制报文,每种类型控制报文的作用不同且携带的信息元素也不同,具体请查看本文最后的附录1《CAPWAP协议控制报文类型汇总解析》;Sequence Number序列号,用于匹配Request报文和Response报文,Response报文中序列号与其要回复的Request报文中的序列号相同;Message Element Length指出其后携带的信息要素的大小;Flags始终为0。


CAPWAP控制报文中的控制首部

信息要素载荷是由多个独立的信息要素组成,其中包含的信息要素的类型和数量与CAPWAP控制报文类型有关,每个信息要素由Type、Length、Value及其他字段组成。其中Type指出信息要素的类型,其中1-1023是CAPWAP协议信息要素,1024-2047是IEEE 802.11信息要素,具体请查看本文最后的附录2《CAPWAP协议控制报文消息要素类型汇总解析》。


CAPWAP控制报文中的信息要素


CAPWAP数据报文


不受DTLS保护的CAPWAP数据报文由CAPWAP前导、CAPWAP首部、数据报文组成;受DTLS保护的CAPWAP数据报文由CAPWAP前导、DTLS首部、CAPWAP首部、数据报文、DTLS尾部组成。是否受DTLS保护是CAPWAP的可选项, DTLS用于对CAPWAP报文进行加密和验证,提高CAPWAP报文的安全性。锐捷无线设备CAPWAP数据报文DTLS保护默认关闭,可通过命令开启。


不受DTLS保护的CAPWAP数据报文格式

受DTLS保护的CAPWAP数据报文格式

CAPWAP前导和CAPWAP首部在CAPWAP控制报文中和数据报文中格式封装相同此处不在赘述。


CAPWAP数据报文格式

CAPWAP协议状态机介绍

CAPWAP协议状态机由AC和AP使用,运行CAPWAP协议的AC和AP一共存在以下15种状态机,其中AC或AP在每一种状态下仅允许发送和接收特定的信息报文。


CAPWAP状态机
状态含义
Start状态
AP开始和AC会话的初始状态
Idle状态
AP初始化完成后的状态
Discovery状态
AP进入发现AC的状态,如果AP指定AC,这个状态可以跳过
DTLS Setup状态
DTLS会话建立
Authorize状态
DTLS会话证书认证
DTLS Connect状态
认证通过后进行连接状态
Join状态
会话连接建立完成
Image Date状态
AP从AC下载一个可执行的版本文件,AP可以进行版本升级,升级完会重启,DTLS会话因此断开
Configure状态
AP从AC获取配置
Data Check状态
AP和AC进行消息交换,确认配置
Run状态
进入正常的运行状态
Reset状态
重启设备
Sulking状态
AP不能和AC进行通信切换到该状态,可以进入Discovery状态重新发现AC
DTLS Teardown状态
关闭DTLS会话
Dead状态
完全清除状态

CAPWAP协议AC和AP的状态机


由于CAPWAP协议使用DTLS,CAPWAP状态机的某些指令会触发DTLS状态机中的状态转换,而DTLS状态机中的某些通知会触发CAPWAP状态机中的状态转换。所以如下图所示CAPWAP状态转换情况较多,本文下一小节为各位读者介绍CAPWAP隧道成功建立过程中AC和AP的CAPWAP状态机的变化情况,想了解更多状态机转换条件介绍的读者可以阅读《RFC 5415》。


CAPWAP完整状态机转换图

CAPWAP隧道建立过程介绍

本小节结合报文交互和状态机变化介绍CAPWAP隧道建立过程,读者在阅读时可结合上两小节CAPWAP协议报文介绍和CAPWAP协议状态机介绍共同理解。


CAPWAP隧道建立过程中报文交互和状态机变化

AP启动后状态机处于Idle状态,AP通过多种途径(IPv4单播、IPv4广播、IPv4组播、IPv6组播)明文发送Discovery Request报文,用于发现网络中可用的AC,并提供自己的基本信息给AC。AC收到Discovery Request报文后,使用Discovery Response报文回应,将自己支持的服务告诉给请求AP。因为此时DTLS隧道还未建立,所以Discovery Request报文和Discovery Response报文是使用明文交互的。


随后AP和AC进行DTLS验证建立DTLS加密隧道,隧道建立成功后,之后交互的CAPWAP控制报文全部通过DTLS隧道加密保护,是否受DTLS保护是可选的。


DTLS隧道建立后,AP发出Join Request报文用于申请加入AC。AC收到Join Request报文并回应Join Response报文答复AP是否同意AP加入。


Join Response报文中包括Image Identifier消息要素,指出AC要求AP运行的软件版本。AP收到Join Response报文后,对比当前使用版本和AC要求的版本是否一致,若版本一致状态机进入Configure状态。若版本不一致状态机进入Image Data状态,AP与AC交互Image Data Request报文和Image Data Response报文进行版本传输并升级,升级后AP进行重启,重新与AC进行CAPWAP隧道建立。


AP状态机变为Configure状态后,AP发出Config Status Request报文,用于向AC请求配置文件下发,AC收到Config Status Request报文后回应Config Status Response报文,通知AP按要求进行配置。


AC发送Config Status Response报文下发配置后还需要确认配置是否在AP上执行成功,AP收到Config Status Response后,状态机进入Data Check状态, 并发送Change State Event Request报文报告配置执行情况,AC收到Change State Event Request报文后回应Change State Event Response报文,状态机变为Run状态,至此AP与AC的CAPWAP隧道建立成功。


不受DTLS保护的CAPWAP隧道建立过程报文交互

总结

相信读完以上内容,大家对CAPWAP协议的基础理论知识和CAPWAP隧道建立的过程,有了一定的了解。后续的实践篇,作者将从运维的角度,分析在日常工作中最常遇到的CAPWAP隧道无法建立问题的解决思路,敬请期待。


附录1:CAPWAP协议控制报文类型汇总解析


CAPWAP控制报文类型
Message Type
作用
Discovery Request
1
AP发送,用于发现网络中可用的AC,并提供自己的基本信息给AC
Discovery Response
2
AC发送,将自己支持的服务告诉给前来请求的AP
Join Request
3
AP发送,用于申请加入AC
Join Response
4
AC发送,用于对AP加入申请的响应
Configuration Status Request
5
AP发送,用于向AC请求配置文件下发
Configuration Status Response
6
AC发送,用于将自己的配置数据同步给AP
Configuration Update Request
7
AC发送,用于同步AP配置更新
Configuration Update Response
8
AP发送,用于告诉AC更新配置文件的执行情况
WTP Event Request
9
AP用来发送信息给AC,WTP Event Request可能是阶段性发送或者是作为一个AP同步事件的响应
WTP Event Response
10
响应WTP Event Request
Change State Event Request
11
当AP收到来自AC的Configuration Status Response,AP使用Change State Event Request来提供Radio的当前状态,确认AC提供的配置已经成功应用;在Run状态下,AP发送Change State Event Request来告诉AC,AP的Radio发生了意料之外的改变
Change State Event Response
12
AC发送,响应Change State Event Request
Echo Request
13
AP和AC之间发送,在控制报文没有发送的时候,用于CAPWAP隧道的维系
Echo Response
14
AP和AC之间响应,在控制报文没有发送的时候,用于CAPWAP隧道的维系
Image Data Request
15
AP发送,用于镜像文件的申请
Image Data Response
16
AC发送,用于对AP镜像文件申请的响应
Reset Request
17
AP重启请求
Reset Response
18
AC对AP重启请求的响应
Primary Discovery Request
19
AP发送,判断他首选(或配置的)AC是否可用或者执行一个Path MTU Discovery
Primary Discovery Response
20
AC发送,告诉AP自己当前可用与支持的服务
Data Transfer Request
21
AP将自己的调试信息发送给AC
Data Transfer Response
22
AC对Data Transfer Request消息的响应
Clear Configuration Request
23
AC发送,用于告诉AP将自己的配置恢复至出厂默认值
Clear Configuration Response
24
AP发送,恢复出厂默认配置之后,发送给AC确认
Station Configuration Request
25
AC用于创建、修改、删除AP上的Station会话状态
Station Configuration Response
26
响应Station Configuration Request

附录2:CAPWAP协议控制报文消息要素类型汇总解析

CAPWAP控制报文信息要素类型
Type
作用
AC Descriptor
1
AC描述符消息要素由AC用于通知它目前的状态
AC IPv4 List
2
AC IPv4列表消息要素用于为AP配置可供AP加入的最新AC列表
AC IPv6 List
3
AC IPv6列表消息要素用于为AP配置可供AP加入的最新AC列表
AC Name
4
AC名称消息要素包含以UTF-8格式表示的AC身份
AC Name with Priority
5
带优先权的AC名称消息要素的AC Name由AC发送给AP,以便配置优先的AC
AC Timestamp
6
AC时间戳消息要素由AC发送,用于同步AP时钟
Add MAC Access Control List (ACL) Entry
7
添加MAC ACL条目消息要素由AC用于在AP上添加MAC ACL列表条目,确保AP不再为该消息中给出的MAC地址提供服务
Add Station
8
添加终端消息要素由AC用于通知AP它应当转发终端的流量
CAPWAP Control IPv4 Address
10
CAPWAP控制IPv4地址消息要素由AC在Discovery处理期间发送给AP,以及由AC用于提供该AC上的可用接口和提供目前连接的AP数量
CAPWAP Control IPv6 Address
11
CAPWAP控制IPv6地址消息要素由AC在Discovery处理期间发送给AP,以及由AC用于提供该AC上的可用接口和提供目前连接的AP数量
CAPWAP Timers
12
CAPWAP计时器消息要素由AC用于配置AP上的CAPWAP计时器
Data Transfer Data
13
数据传输数据消息要素由AP用于提供信息给AC用于调试
Data Transfer Mode
14
数据传输模式消息要素由AP用于指出它正在发送到AC用于调试的数据传输信息类型
Decryption Error Report
15
解密错误报告消息要素的值由AP用于通知解密出错的AC,这些错误是自上次报告以来发生的
Decryption Error Report Period
16
解密错误报告周期消息要素值由AC用于通知AP,它应当多长时间发送一次解密错误报告消息
Delete MAC ACL Entry
17
删除MAC ACL条目消息要素由AC用于在AP上删除MAC ACL条目,确保AP向在该消息中给出的MAC地址提供服务
Delete Station
18
删除终端消息要素由AC用于通知AP,它不应当再对特定终端提供服务。
Discovery Type
20
发现类型消息要素由AP用于简要说明,它是如何最终知道存在一个AC,它正在向该AC发送Discovery Request消息
Duplicate IPv4 Address
21
重复的IPv4地址消息要素由AP用于通知AC,该AP已经检测到另一台设备,该设备使用的IP地址与此AP目前正在使用的相同
Duplicate IPv6 Address
22
重复的IPv6地址消息要素由AP用于通知AC,该AP已经检测到另一台设备,该设备使用的IP地址与此AP目前正在使用的相同
Idle Timeout
23
空闲超时消息要素由AC发送给AP,向其提供Idle Timeout值,AP在它所有激活的站中应当强制执行此值
Image Data
24
映像数据消息要素出现在AC发送的Image Data Request消息中
Image Identifier
25
映像标识符消息要素由AC发送给AP,指出预期将在AP上运行的激活软件版本
Image Information
26
映像信息消息要素出现在由AC发送给AP的Image Data Response 消息中
Initiate Download
27
启动下载消息要素由AP用于通知AC,AC应当发起固件更新
Location Data
28
位置数据消息要素是字节长度可变UTF-8编码串,包含用户定义的位置信息
Maximum Message Length
29
最大消息长度消息要素由AP包括在Join Request消息中,用于告诉AC该AP支持的最大CAPWAP消息长度
CAPWAP Local IPv4 Address
30
CAPWAP本地IPv4地址消息要素由AP在Join Request中发送,或者由AC在Join Response中发送
Radio Administrative State
31
无线电设备管理状态消息要素用于传递特定无线电设备的状态
Radio Operational State
32
无线电设备运行状态消息要素由AP发送给AC,传递无线电设备的运行状态
Result Code
33
结果代码消息要素是32位整数值,包括Request消息结果,该 Request消息对应Response消息中含有的序列号
Returned Message Element
34
返回的消息要素由AP在Change State Event Request消息中发送,用于通知AC它不能在本地使用Configuration Status Response中的哪些消息要素
Session ID
35
会话ID消息要素值包含随机产生的无符号128位整数
Statistics Timer
36
统计量计时器消息要素值由AC用于告诉AP,AP将以此频次收到的它盼望的最新统计数据
Vendor Specific Payload
37
特定供应商净荷消息要素用于在AP和AC间传递特定供应商信息
WTP Board Data
38
AP主板数据消息要素由AP发送给AC,包括目前硬件信息
WTP Descriptor
39
AP描述符消息要素由AP用于传递它目前的硬件和软件(固件)配置
WTP Fallback
40
AP回退消息要素由AC发送给AP,用于AP检测到它的首选AC时,开启或关闭自动CAPWAP回退
WTP Frame Tunnel Mode
41
AP帧隧道模式消息要素使AP能够告诉AC,它支持的隧道化运行模式
WTP MAC Type
44
AP MAC类型消息要素使AP能够将它的运行模式告诉AC
WTP Name
45
AP名称消息要素是可变长度UTF-8编码字节串
WTP Radio Statistics
47
AP无线电设备统计量消息要素由AP发送给AC,传递关于无线电设备行为的统计数据,以及重新设置AP无线电设备的原因
WTP Reboot Statistics
48
AP重启统计量消息要素由AP发送给AC,传递AP发生重新启动的原因
WTP Static IP Address Information
49
AP静态IP地址信息消息要素由AC用于在AP上配置或删除先前配置的静态IP地址
CAPWAP Local IPv6 Address
50
CAPWAP本地IPv6地址消息要素由AP在Join Request中发送,或者由AC在Join Response中发送
CAPWAP Transport Protocol
51
CAPWAP传输协议消息要素如果CAPWAP在IPv6上运行,可以使用UDP-Lite或UDP传输
MTU Discovery Padding
52
MTU发现填充消息要素用作填充,执行MTU发现,必须包含值为0xFF,长度任意的八位位组
ECN Support
53
ECN支持消息要素由AP和AC发送,指出它们支持Explicit Congestion Notification (ECN)位
IEEE 802.11 Add WLAN
1024
由AC发往AP,由AC用来在AP上定义一个新的WLAN
IEEE 802.11 Antenna
1025
由AP向AC通信来提供天线可用信息,同时AC可以使用该消息元素来重新配置AP的天线
IEEE 802.11 Assigned WTP BSSID
1026
是AP在IEEE 802.11 WLAN Configuration Request报文中含有IEEE 802.11 Add WLAN消息元素时进行包含
IEEE 802.11 Delete WLAN
1027
用来告知AP以前建立的一个WLAN被删除
IEEE 802.11 Direct Sequence Control
1028
是一个双向的消息元素,当由AP发送时,包含现在的状态;由AC发送时,AP必须保证AC所提供的值
IEEE 802.11 Information Element
1029
用于传送任何802.11协议中定义的IE。数据字段中里面包含将会存在于IEEE 802.11 MAC管理消息中的原始IE
IEEE 802.11 MAC Operation
1030
由AC发送来设置AP上IEEE 802.11MAC的参数
IEEE 802.11 MIC Countermeasures
1031
由AP发送给AC表明一个MIC失败发生
IEEE 802.11 Multi-Domain Capability
1032
被AC用来告诉AP调整的极限,AC会在每一个频段里发送一个消息元素来表明在该域里面进行调整的范围约束
IEEE 802.11 OFDM Control
1033
是一个双向的消息元素,当由AP发送时,包含当前的状态。当由AC发送时,AP必须支持所接受到的值
IEEE 802.11 Rate Set
1034
由AC发送,包含了所支持的速率
IEEE 802.11 RSNA Error Report From Station
1035
被AP用来向AC发送RSN错误报告,如果没有错误,AP不需要任何报告
IEEE 802.11 Station
1036
伴随着Add Station消息元素,用来从AC向AP发送IEEE 802.11 STA策略,最新的IEEE 802.11消息元素会覆盖之前接受到的任何消息元素
IEEE 802.11 Station QoS Profile
1037
含STA可能用到的最大的IEEE 802.11e优先级标识符
IEEE 802.11 Station Session Key
1038
用于AC决定STA加密必须在AP上执行
IEEE 802.11 Statistics
1039
由AP发送,用来传输自己当前的统计信息
IEEE 802.11 Supported Rates
1040
由AP发送,来表示他支持的速率
IEEE 802.11 Tx Power
1041
当由AP发送时,是Radio的当前功率;当由AC发送时,包含AP必须要支持的功率
IEEE 802.11 Tx Power Level
1042
由AP发送,包含所有支持的不同的功率
IEEE 802.11 Update Station QoS
1043
用来在AP上改变一个指定STA的服务质量策略
IEEE 802.11 Update WLAN
1044
由AC来使用在AP上来定义一个无线局域网
IEEE 802.11 WTP Quality of Service
1045
由AC发向AP,用于通信QOS的配置信息
IEEE 802.11 WTP Radio Configuration
1046
由AC用来在AP上配置一个Radio;或者AP用来发送其Radio配置信息给AC
IEEE 802.11 WTP Radio Fail Alarm Indication
1047
是由AP在检测到一个Radio错误发送给AC
IEEE 802.11 WTP Radio Information
1048
用来为AP里的每个Radio传递Radio信息





点评

请看x.co/kpp(网址) 肺炎,外媒报道国内民众求救的一线视频的图片...... git.io/gkkkk (网址)  发表于 2021-2-10 19:53
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则