锐捷CAPWAP隧道
锐捷CAPWAP隧道
CAPWAP(Control and Provisioning of Wireless Access Points)是一种用于无线接入点(AP)与无线控制器(AC)之间通信的协议。它主要用于实现对无线网络的集中管理和控制,通过建立CAPWAP隧道,可以实现对AP的配置、监控和数据转发等功能。本文将详细介绍CAPWAP隧道的原理、建立过程和数据转发方式。
CAPWAP隧道原理
无线接入点的控制和配置协议
CAPWAP基本概念
CAPWAP 是应用层协议;
CAPWAP分为控制隧道和数据隧道;
控制隧道:AP的配置以及版本的下发通过这个隧道,AC 使用端口 UDP 5246,AP 使用端口 UDP 10000
数据隧道:无线用户上网的一些数据通过这个隧道,AC 使用端口 UDP 5247,AP 使用端口 UDP 10001
CAPWAP隧道建立
- AP 获取 IP 地址(AP本身的 IP 地址)
- AP 获取 AC 地址(Discovery)
- AP 请求加入 AC(Join)(会自动选择优先级高的 AC 去上线)
- AP 自动升级(如 AC 上有上传 AP 版本,AP加入AC后自动升级,升级完之后自动重启,重新进一下状态)
- AP 配置下发(AP 请求AC 下发配置 AC 下发 AP 配置)
- AP 配置确认(AP 配置收到后,执行配置,配置执行完之后发报文告知 AC 配置情况)
- 建立 CAPWAP 隧道,进行数据转发,隧道分为:控制隧道和数据隧道
详细解释比较重要的就是前三个阶段,故障排查、组网配置等
1、AP 获取 IP 地址
使用 DHCP 服务器或者是手动在 AP 上进行配置
AP 默认瘦 AP,DHCP 获取方式
DHCP 服务器给 AP 分配地址需要指定 Option 138 选项指定 AC 地址
2、AP 发现 AC
AP 获取到地址之后肯定会向 AC 发起一个建立隧道的请求,假设环境中有静态配置 IP 的 AC 和动态获取 IP 的 AC,那么 AP 发送 Discovery 的时候目的 IP 是单播的,两个 IP 同时发,优先级的问题是在接入阶段,哪个优先就选择哪个 AC
视频中的环境是通过 Option 138 获取到的 AC IP 为 1.1.1.1 发送的时候 Discovery 有三个:
- 一个是 1.1.1.1 动态获取到的
- 另外两个都是默认的,一个 255.255.255.255 广播,一个 224.0.1.140 组播
- 即使没有获取到 AC IP,它也会去发送两个默认的 Discovery
CAPWAP 状态: - 最开始的状态都是IDLE的
- 当 AP 获取到 AC IP,AP 发送 Discovery Request 之后状态变为Discovery
- AC 收到后,回复 AP 一个 Discovery Response 源地址为隧道地址,之后双方的状态变为DTLS Setup,隧道地址默认 Loopback 0,
隧道地址也可以通过命令去指定:
Ruijie(config)# ac-controller
Ruijie(config)# capwap ctrl-ip 192.168.1.1 //指定建立 CAPWAP 隧道的源 IP 地址为 192.168.1.1 - 如果环境中有多个 AC,AC 都给 AP 回复,AP 就把AC记录在它发现的 AC 记录表中,发现的 AC 是有优先级的(静态>动态>广播)选择一个优先级最高的 AC 去进行加入
3、AP 请求加入 AC
- AP 加入 AC 之前,AP 要与 AC 建立 DTLS 连接,那么后续交互的报文都是加密的,DTLS 建立之后,AP 开始加入 AC
- AP 发出 Join Request 去跟优先级最高的 AC 建立隧道,里面包含 AP 版本信息,之后双方状态变为Join
之后 AC 根据 AP 的版本是否满足要求,满足则回复一个 Join Response,如不满足要求,回复 Join Rssponse 请求加入失败,如果 AC 上有上传 AP 的版本,并开启自动更新,会告诉 AP 需要进行版本升级
4、AP 自动升级
- AP 发送 Image data request 给 AC,之后 AC 回复 Image data response ,状态变为Image Data,意思为 AP 请求升级
- 之后 AC 通过多个 Image data Request 多个这样的报文,同时 AP 也会有多个 Image data Response 进行回应,将版本下发给 AP 去进行升级
- 升级完之后,AP 设备会自动进行重启,重启完之后,又会进入前几个步骤
5、AP 配置下发
- AP 将配置请求 Request 的报文发给 AC,此时 AP 的状态为Config,AC 状态也是Config
- 之后 AC 给 AP 回复一个 Response 配置下发的报文,AP 收到报文后状态变为data check
- 之后 AP 去执行配置,执行完之后把状态告诉给 AC,AC收到之后状态变为data check
- 之后 AC 回复 AP 一个响应,AP 收到响应后状态变为 Run,就成功建立起了 CAPWAP 隧道
6、通过 CAPWAP 隧道转发数据
- 30秒之后,AP会发 keep-alive 报文给 AC
- 当 AC 收到 keep-alive 报文之后,回复 AP 一个 keep-alive 报文,之后才真正的建立起了隧道(包括 数据隧道、控制隧道)
- 后续的每隔 30 秒,都会去发送保活的报文
- 使用 keep-alive 去保活数据隧道
- 使用 echo request、echo response 去保活控制隧道
- 到这里 AP 和 AC 的隧道就建立成功了
CAPWAP数据转发
本地转发
本地转发不经过数据隧道,直接从 AP 到外网
重点:
集中转发
通过 CAPWAP 隧道去进行转发,经过 AC 进行转发,需要进行 CAPWAP 的封装
AP 到 AC 之间去外网的数据是进行 CAPWAP 封装的
AP 到 AC 走的是 CAPWAP 封装,走的是 AP 的 VLAN
重点:
两者区别
集中转发:全部数据由 AP 转发给 AC ,由 AC 进行转发,走 CAPWAP 隧道
本地转发:全部数据由本地的 AP 进行转发,不走 CAPWAP 隧道
本地转发
- 数据到达 ISP 跳数更少,延迟更小
- 转发性能取决于用户网络,不易形成瓶颈,转发性能更高
- 大多数情况下 AC 不做数据转发,减少转发的瓶颈与压力
- 对 AC 和 AP 的性能要求较低
- 转发性能相对较高
集中转发
- 数据到达 ISP 要先到达 AC,再由 AC 上行延迟更大
- 转发性能取决于 AC,易在 AC 处形成瓶颈,性能偏低
- 对 AC 的数据转发能力是大挑战
- 对 AC 和 AP 的性能要求较高
- 转发性能相对较低