锐捷无线CAPWAP隧道技术原理

  • CAPWAP简介
    • CAPWAP协议报头格式
    • CAPWAP协议报头字段
    • CAPWAP报文分类
    • CAPWAP控制消息
    • CAPWAP隧道建立过程的状态机
    • CAPWAP隧道建立过程
    • CAPWAP数据报文
      • 1、非加密格式

CAPWAP简介

CAPWAP(Control And Provisioning of Wireless Access Points 无线接入点的控制和配置协议):是由IETF(互联网工程任务组)标准化组织于2009年3月定义。capwap协议是一个通用的协议,定义了AC和WTP通过capwap协议传输机制进行控制和数据平面的通信。使用UDP协议的5246和5247端口用于传输控制消息和数据消息,AP上线的过程就是CAPWAP隧道建立的过程,

CAPWAP协议报头格式

CAPWAP协议报头字段

CAPWAP Preamble:8 位预判码,2 种 CAPWAP 首部的前 8 位为预判码,用于快速判断此报文是否经过 DTLS 加密。前 4 位指明 CAPWAP 版本,目前的版本号为 0;后 4 位值为 1 时是 CAPWAP DTLS 首部,值为 0 时是 CAPWAP 首部。
Version:version of capwap
Type:0-capwap header
1-capwap dtls header
HLEN:5 位首部长度,指明 CAPWAP 首部的长度。
RID:5 位射频标识符,指明此报文的来源射频。
WBID: 5 位无线帧标识符, 指明无线帧类型, 有 IEEE 802.11, IEEE802.16 和 EPC Global 3 种。
T:1 位数据帧标识符,值为 1 时数据帧是由 WBID指明的类型,值为 0 时是 IEEE802.3 数据帧。
F:1 位分组标志,值为 1 时此报文是一个 CAPWAP报文分组(IPV6),需要和其他分组重组成完成的报文。
L:1 位分组结束标志,值为 1 时此报文是最后一个分组。
W:1 位选项标志,值为 1 时存在 Wireless Specific Information 选项。
M:1 位选项标志,值为 1 时存在 Radio MAC Address选项。
K:1 位存活标志,指明此报文用于保持连接存活,不能携带用户数据。
Flags:3 位预留标志。
Fragment ID:16 位分组标识符,识别不同的报文分组,ID 相同的分组属于同一个 CAPWAP 报文
Fragment Offset:13 位分组位移,各分组在该CAPWAP 报文中的位置。
Reserved:3 位预留码。
Radio MAC Address:32 位射频 MAC 地址,不足32 位以全 0 填充。指明报文来源射频的 MAC 地址。
Wireless Specific Information:32 位特殊无线信息,不足 32 位以全 0 填充。包含特殊信息,如与 IEEE 802.11, IEEE802.16 和 EPCGlobal 的关联等。
Payload:数据报文是用户数据,控制报文则是控制消息。

CAPWAP报文分类

  1. 控制消息报文(UDP5246):控制消息作为管理消息在AP与AC间进行交互
  2. 数据消息报文(UDP5247):数据消息被封装成无线帧

CAPWAP控制消息

CAPWAP隧道建立过程的状态机

  1. Discovery阶段
  2. DTLS协商阶段(可选)
  3. Join阶段
  4. Image data
  5. configure
  6. Data check阶段
  7. Run(Data)阶段
  8. Run(Control)阶段

CAPWAP隧道建立过程

  1. AP通过DNS、DHCP、静态配置IP地址、广播等方式获取到AC的IP地址

    CAPWAP隧道建立——AP获取地址(四步交互)

    在没有预配置AC IP列表时,则启动AP动态AC发现机制。通过DHCP获取IP地址,并通过DHCP协议中的option返回AC地址列表。

    首先是AP发送discover广播报文,请求DHCP server响应,在DHCP服务器侦听到discover报文后,它会从没有租约的地址范围中,选择最前面的空置IP,连同其他TCP/IP设定,响应AP一个DHCP offer报文,该报文中会包含一个租约期限的信息。

    由于DHCP offer报文既可以是单播报文,也可以是广播报文,当AP端收到多台DHCP Server的响应时,只会挑选其中一个offer(通常是最先抵达的那个),然后向网络中发送一个DHCP request广播报文,告诉所有的offer,并重新发送DHCP,DHCP server它将指定接收哪一台服务器提供的IP地址

    同时,AP也会向网络发送一个ARP封包,查询网络上面有没有其他机器使用该IP地址,如果发现该IP已被占用,AP会发送出一个DHCP Decline封包给DHCP服务器,拒绝接收其DHCP discover 报文。

    当DHCP Server接收到AP的request报文之后,会向AP发送一个DHCP Ack响应,该报文中携带的信息包括了AP的IP地址,租约期限,网关信息,以及DNS server IP等,以此确定租约的正式生效,就此完成DHCP的四步交互工作。

  2. AP发现AC

    CAPWAP隧道建立-AP发现AC(Discovery):

    AP启动CAPWAP协议的发现机制,AP以单播或广播的形式发送Discovery报文请求报文试图关联AC,随后CAPWAP状态机进入Discovery状态,AC收到AP的discovery request以后,会发送一个单播discover response 给AP,AP可以通过discover response中所带的AC优先级或者AC上当前AP的个数等,确定与哪个AC建立会话。


  1. CAPWAP隧道建立-DTLS(可选)

    AP根据此IP地址与AC协商,AP接收到响应消息后开始与AC建立CAPWAP隧道,这个阶段可以选择CAPWAP隧道是否采用DTLS加密传输UDP报文。

    DTLS: Datagram Transport Layer Security(数据报传输层安全协议)



  2. AP请求加入AC

    AP发出Discovery Request报文并得到回应,则开始准备加入到该AC。如果AP发出Discovery Request得到多个AC回应,并且多个AC在该AC上定义的优先级不同,那么AP会优先申请加入到优先级最高的AC。

    AP加入AC前,先进行DTLS验证,当AP与AC之间的DTLS握手成功后,AP发出Join请求开始请求加入。这个过程里面的所有报文均为加密报文。

    AP请求加入AC的六个步骤:

    1、AP将自己的状态更新到DTLS Setup,AC新建状态机,初始值为DTLS Setup状态。

    2、AP和AC之间开始进行DTLS握手,如果 60秒内DTLS握手还是不成功,将自己状态更新成DTLS Teardown。

    3、AP和AC之间 DTLS握手成功后,将自己状态更新为状态,并发出Join Request报文。

    4、AC收到Join Request报文,并回应Join Response报文。如果AC 从DTLS握手开始的时间算起,60秒内还没有收到Join Request,状态更新成DTLS Teardown。

    5、AP收到Join Response报文,如果Result Code为Success,则AP加入AC成功。如果Result Code不为Success,状态机状态更新到DTLS Teardown。如果AP没有收到Join Response报文,并且AP在重传Join Request 报文4次以后,还没有收到Join Response,状态更新成DTLS Teardown。

    6、AP在DTLS Teardown状态持续5秒钟后,进入状态,再等30秒后恢复到Idle状态,AC在5秒钟后,状态机删除。

    在完成DTLS握手后,AC与AP开始建立控制通道,在建立控制的交互过程中,AC回应的Join response报文中会携带用户配置的升级版本号,握手报文间隔/超时时间,控制报文优先级等信息。AC会检查AP的当前版本,如果AP的版本无法与AC要求的相匹配时,AP和AC会进入Image Data状态做固件升级,以此来更新AP的版本,如果AP的版本符合要求,则进入configuration状态。

  3. CAPWAP隧道建立-AP升级(image date(可选))

    AC通过CAPWAP控制报文下发升级版本给AP,而不是通过CAPWAP数据报文

    AP根据协商参数判断当前版本是否是最新版本,如果不是最新版本,则AP将在CAPWAP隧道上开始更新软件版本。AP在软件版本更新完成后重新启动,重复进行AC发现、建立CAPWAP隧道、加入过程。

    AP自动升级的七个步骤:

    1、AP收到Join Response后,先比较当前运行的软件版本和AC要求运行的软件版本是否一致,如果不一致则发送Image Data Request请求进行自动升级。

    2、AP发出Image Data Request后,将状态更新成。如果AP的Image Data Request在传输过程中丢失,重传多次都没有到达AC的情况下,AP和AC的状态机要更新到DTLS Teardown。

    3、AC收到Image Data Request报文后进入状态,并回应Image Data Response报文。

    4、AC将新的主程序通过若干个Image Data Request发送到AP。

    5、AP收到Image Data Response后,30秒后还没有收到AC发来的Image Data Request,则状态转DTLS Teardown。

    6、AP对每一个收到的主程序分片消息响应Image Data Response。

    7、AP升级成功或者失败后,设备重启。

  4. CAPWAP隧道建立-AP配置下发 (configure)

    进入Configuration状态后是为了做AP的现有配置和AC设定配置的匹配检查,AP发送configuration request到AC,该信息中包含了现有AP的配置,当AP的当前配置与AC要求不符合时,AC会通过configuration response通知AP

    过程:

    1、AP收到AC发来的Join Response,其Result Code为Success,且AP当前运行的版本和要求运行的版本一致,AP发出Config Status Request,进入状态。

    2、AC收到Config Status Request后,进入状态。并回应Config Status Response,通知AP按要求进行配置。如果AC在发出Join Response后,60秒内没有收到Config Status Request,则状态转DTLS Teardown。

    3、AP收到Config Status Response,配置同步完成。如果AP发出Config Status Request后,51秒内没有收到Config Status Response,则状态转DTLS Teardown。

  5. CAPWAP隧道建立-AP配置确认 (date check)

    当完成configuration后,AP发送change state event request信息,其中包含了radio,result,code等信息,当AC接收到change state event request后,开始回应change state event response 。
    至此完成data check 后,已经完成管理隧道建立的过程,开始进入run状态。

    主要过程:

    1、AP收到Config Status Response后,状态进入Data Check, 并发送Change State Event Request报告配置执行情况。

    2、AC收到Change State Event Request,如果当前是状态,则状态转Data Check,并回应Change State Event Response。如果AC在发出Config Status Response后,25秒内没有收到Change State Event Request,则状态转DTLS Teardown。

    3、AP收到Change State Event Response后,如果当前是Data Check状态,则状态转Run,并创建CAPWAP数据通道,开始数据转发。
    当AP进入Run状态,说明AP与AC的控制和数据通道建立已成功,用户可根据需要,对指定的AP做配置设置,如创建WLAN、设置信道、调整发射功率等等,并可实时监控AP的运行状态。

  6. CAPWAP隧道维护-run(date)

    AP发送keepalive到AC,AC收到keepalive后表示数据隧道建立,AC回应keepalive,AP进入“normal”状态,开始正常工作。

    AP进入run状态后,同时发送echo request报文给AC,宣布建立好CAPWAP管理隧道并启动echo发送定时器和隧道检测超时定时以检测管理隧道时候异常。当AC收到echo request报文后,同样进入run状态,并回应echo response报文给AP,启动隧道超时定时器。到AP收到echo response报文后,会重设检验隧道超时的定时器。


  7. CAPWAP隧道转发数据

    AP进入Run状态后,AP与AC开始转发用户数据,同时也需要定期检查CAPWAP通道是否正常工作。

    主要过程:
    1、AP进入状态后,开始创建数据通道,并每隔30秒发送1个数据通道保活报文。

    2、AC收到第1个保活报文, 如果当前是Data Check状态,则进入状态,并回应Data Channel 保活报文。如果AC在发出Change State Event Response后,30秒内没有收到第1个Data Channel 保活报文,则状态转DTLS Teardown。

    3、AP和AC收到保活报文后,如果60秒内没有收到第1个数据通道保活报文,则认为数据通道断掉,状态转DTLS Teardown。

    4、当AP或者AC检测到数据通道断掉后,CAPWAP状态机更新到DTLS Teardown。

注:现在数据通道断不会导致隧道断,而是控制通道断开才会导致CAPWAP隧道断开,因此,步骤3、步骤4不会导致状态机变化。事实上,Keepalive在数据通道传输,是数据通道的保活报文,而控制通道是依靠Echo进行保活。

CAPWAP数据报文

用户数据通过CAPWAP数据通道传输。CAPWAP数据报文分为以下两种格式:

1、非加密格式

非加密格式,其中Wireless Payload为用户的数据报文,由于它是非加密的,所以这种数据报文只能应用在Wireless Payload内的无线数据已做过安全加密的基础之上。例如无线信号已经采用了WEP、WPA或者WPA2进行了加密。(这里的无线数据加密指的是无线信号的加密,目的是为了别人即使在空气中获取到该报文也很难破解出Wireless Payload的用户数据。而当AP将无线报文(802.11的数据报文)转为802.3有线以太网的数据报文后,Wireless Payload内的数据是不加密的) 因此通过抓包分析,我们可以看到用户的交互数据。抓包可以直观看到用户的PING报文如何被封装成CAPWAP数据报文。

锐捷无线CAPWAP隧道技术原理相关推荐

  1. 上网部署(锐捷无线篇)

    大家好,我是小杜(不问今天怎么还来的还是朋友), 师傅今天潇洒去了,说是以我的能力没有问题,"我就知道,有事说的好听,明天肯定会说你现在还不行",想到这,瞬间早餐就不香了.不过没关 ...

  2. 酷特智能携手锐捷无线打造可以“复制”的智慧工厂

    青岛酷特智能股份有限公司(以下简称:酷特)是面向工业4.0时代的制造业典范,它以数据为生产驱动,实现网络设计.下单,定制数据传输全部数字化,创造了革命性的"酷特模式".作为酷特模式 ...

  3. Wi-Fi 6连续两年出货量国内登顶,锐捷无线靠什么这么6?

    近日,国际数据咨询公司IDC发布<2020年第四季度中国企业级WLAN市场跟踪报告>.数据显示,锐捷网络Wi-Fi 6产品全年出货量超过70万,位列Wi-Fi 6品类出货量第一,市场占比3 ...

  4. WIN7下破解锐捷无线共享上网(谨以此文献给浙理各位被锐捷搞疯掉的同学)

    众所周知,浙理的锐捷客户端变态异常,绑定MAC地址,一端口一户,换端口必断,开双网卡共享必断.以前在用华为客户端的时候尚可以通过无线共享,寝室五个人共用一个账户,现在也被锐捷废掉了.       现在 ...

  5. 锐捷无线AC虚拟化配置-VAC

    锐捷无线AC虚拟化配置 拓扑 AC使用WS板卡插在N18K上,AC使用内连口与核心交换机互联 规划好AC的优先级:优先级最高的在18K-1,次高的在18K-2,第3高的18K-1,最低的18K-2,这 ...

  6. 锐捷无线地勘系统安装并新建项目(ChinaSkills国赛题解)

    锐捷无线地勘系统安装并新建项目 安装锐捷无线地勘软件 新建项目 安装锐捷无线地勘软件 首先我们先需要下载一个锐捷无线地勘软件,这就有人问了在哪呀.你猜猜,当然在我的资源库里呀.(如果资源库不给你下载私 ...

  7. 无线充电的技术原理和发展现状

    虽然"隔空充电"听起来非常"黑科技",但它其实就是无线充电的一种. 2009年,首款无线充电手机上市:2011年,脱离5V1A有线慢速充电的手机也开始出现. 随 ...

  8. 锐捷无线-胖AP配置脚本

    锐捷无线-胖AP配置脚本 胖AP路由模式脚本-静态地址上网/DHCP自动获取地址上网 使用CRT或者xhsell工具telnet或者插cons线到AP上 admin //默认的cons和telnet密 ...

  9. 【无线】锐捷无线默认地址密码大全

    [无线]锐捷无线默认地址密码大全 锐捷无线产品从1b19p2 167368版本正式支持web管理,相应的特性如下: 1.AP320I.AP330I.AP530I.Wall-AP:默认管理地址192.1 ...

最新文章

  1. oracle查看字典结构体,Oracle数据字典的实操
  2. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题
  3. python采集_Python3做采集
  4. 【Spark】开发Spark选择Java还是Scala?
  5. parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池
  6. alook浏览器js扩展网站_备用浏览器Alook所能实现的功能果真强大(文末有alook兑换码抽奖)...
  7. 罗永浩担任“大局官”,小米双十一狂发补贴
  8. 关于Android学习要问的一些问题
  9. ggbiplot设置分组_prcomp和ggbiplot:无效的’rot’值
  10. SAI钢笔工具如何使用,入门篇
  11. POI导入Excel文档试题案例
  12. 设计模式 - 代理模式、委托模式
  13. 如何快速判断奇数和偶数
  14. 设计模式常用的七大原则之③【依赖倒转】原则
  15. (精华)2020年8月7日 微信小程序 直播功能的实现
  16. PlatformIO开发之STM32点灯(基于arduino框架)
  17. 如何定制App Store榜单优化策略?
  18. 分享3:hanzi-writer(演示汉字笔画顺序的 JS 库)
  19. 安卓手机如何投屏到电脑--直播 反控 玩游戏
  20. leetcode之-题17

热门文章

  1. vsnprintf长度
  2. 【避碰】基于人工势场法的船舶自动避碰系统附matlab代码
  3. OTT TV与IPTV的不同
  4. 使用微擎自带的函数生成二维码
  5. 产品卖不出去?这7招提高你的营销能力
  6. iOS定位服务系列之一:获取当前位置信息
  7. 数据结构(C语言版)——二叉树的顺序存储结构(代码版)
  8. python爬虫__简单小案例
  9. android相关技术总结
  10. 多个文件中如何共用一个全局变量