Wlan——CAPWAP隧道的建立过程

news2024/11/25 7:04:27

CAPWAP基本概念

CAPWAP全称为无线接入点的控制和配置协议(Control And Provisioning of Wireless Access Points Protocol Specification)

CAPWAP协议主要作用

1、AP可以通过CAPWAP实现自动发现AC

2、AC通过CAPWAP协议对AP进行管理、业务配置下发

3、STA的数据通过封装CAPWAP进行转发

CAPWAP隧道的端口号

CAPWAP隧道主要分为控制隧道和数据隧道

控制隧道  用于AP与AC的交互;管理AP

AP的UDP端口 ↔ AC的UDP 5246

用于AC下发AP的配置以及版本信息

数据隧道  用于无线用户与AC之间的交互;转发用户业务数据

AP的UDP端口 ↔  AC的UDP 5247

传输无线用户上网的数据以及无线用户连接无线信号的数据

CAPWAP隧道的转发方式

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转发使得转发效率低,不方便故障定位


CAPWAP隧道的建立

AC是使用隧道地址与AP建立隧道,需要在AC上配置隧道地址

锐捷:默认使用的隧道地址时Loop0接口地址
ac-controller
  capwap ctrl-ip 192.168.1.1       通过此命令更改隧道源为指定地址

华为
  capwap source int vlanif 100     通过此命令更改隧道源为此Vlanif的地址(此Vlan就是管理Vlan)

CAPWAP隧道建立的过程

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

CAPWAP隧道建立的状态

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报文建立控制隧道并保活

瘦AP无法上线故障排查

 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端口是否放通

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一百五十二、Kettle——Kettle9.3.0本地连接Hive3.1.2(踩坑,亲测有效)

一、目的 由于先前使用的kettle8.2版本在Linux上安装后&#xff0c;创建共享资源库点击connect时页面为空&#xff0c;后来采用如下方法&#xff0c;在/opt/install/data-integration/ui/menubar.xul文件里添加如下代码 <menuitem id"file-openZiyuanku" label&…

CKEditor5 爬坑.

CKEditor5 爬坑 exportpdf.d.ts ChatGPT 推荐我使用CKEditor,确实比UEditor高不少档次。 但是如果你想使用控件中的 PDF导出,Word导入导出。 你可能需要三思。 因为其PDF导出是通过美国云服务的。 exportpdf.d.ts /*** license Copyright (c) 2003-2023, CKSource Holding sp.…

ROSpider机器人评测报告

ROSpider机器人评测报告 最近入手了一款ROSpider六足仿生机器人&#xff0c;ROSpider是一款基于ROS 操作系统开发的智能视觉六足机器人。 外观 外观上ROSpider六足机器人如同名字一样有六只机械腿&#xff0c;整体来看像一只六腿的蜘蛛。腿上的关节处用了明亮的橙黄色很是显…

小红书运营 公司账号怎么做?

大家好&#xff0c;我是网媒智星&#xff0c;今天跟大家讨论一下一个人如何运营公司小红书账号&#xff1f; 之前有位同事告诉我&#xff1a;“老板对小红书不太了解&#xff0c;所以我一个人负责整个新媒体部门的运营工作&#xff0c;包括小红书、公众号、微博和抖音。就像一个…

黑客必备的操作系统——kali linux安装

大家经常会在电视里面看到各种炫酷的黑客操作&#xff0c;那么黑客一般用什么操作系统呢&#xff1f;今天小训带大家来安装黑客必备的kali linux-2022操作系统&#xff0c;有兴趣的一起来学习下吧&#xff01; 1、安装前准备 1.1 VMware下载 VMware官网下载&#xff1a; ht…

租车服务小程序DIY,让你成为租车平台的主人

汽车租赁行业正迎来快速发展的时代&#xff0c;随着人们对出行方式需求的增加&#xff0c;汽车租赁成为了一种便捷、经济的选择。而随着移动互联网的普及&#xff0c;微信小程序成为了一种理想的平台&#xff0c;为汽车租赁企业打造一个高效的租车平台。 首先&#xff0c;我们需…

P1955 [NOI2015] 程序自动分析

题目 思路 第一眼&#xff1a;非常简单的并查集 看看标签 6 为什么离散化会WARE呢 首先&#xff0c;并查集是根据f数组来联系两点的&#xff0c;类似于f[x]y&#xff0c;但是在这个题中我们不能确定x是否为非负整数&#xff0c;而且x过大也会炸内存 那就加一个离散化吧 输入…

Linux服务使用宝塔面板搭建网站,通过内网穿透实现公网访问

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 前言 宝塔面板作为简单好用的服务器运维管理面板&#xff0c;它支持Linux/Windows系统&#xff0c;我们可用它来一键配置LAMP/LNMP环境、网站、数据库、FTP等&…

案例16 基于Spring Boot实现学生新增案例

基于Spring Boot实现学生新增。 1. 创建Spring Boot项目 创建Spring Boot项目&#xff0c;项目名称为case16-springboot-student01。 ​ 2. 设置项目信息 ​ 3. 选择依赖 选择Lombok ​ 选择Spring Web ​ 4. 设置项目名称 ​ 5. Maven依赖 <?xml version"1.0&qu…

SyntaxError: Cannot use import statement outside a module

node环境运行报错&#xff1a; 解决步骤&#xff1a; 1. npm init -y 2. 在 package.json 文件中加入一条&#xff1a;"type": "module", 3. 保存后再执行即可 附&#xff1a;最好是不要在node用import&#xff0c;否则需要上次配置 建议1&#xff1a;用re…

【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 上篇文章对TCP可靠性机制讲解了一部分&#xff0c;这篇文章接着继续讲解。 &#x1f3a8;滑动窗口 在…

手动实现线性回归例子

转自&#xff1a;https://www.cnblogs.com/BlairGrowing/p/15061912.html 刚开始接触深度学习和机器学习&#xff0c;由于是非全日制&#xff0c;也没有方向感&#xff0c;缺乏学习氛围、圈子&#xff0c;全靠自己业余时间瞎琢磨&#xff0c;犹如黑夜中摸索着石头过河。 本文…

探讨uniapp的数据缓存问题

异步就是不管保没保存成功&#xff0c;程序都会继续往下执行。同步是等保存成功了&#xff0c;才会执行下面的代码。使用异步&#xff0c;性能会更好&#xff1b;而使用同步&#xff0c;数据会更安全。 1 uni.setStorage(OBJECT) 将数据存储在本地缓存中指定的 key 中&#x…

Oracle切割字符串的方法,SQL语句完成。

Oracle用正则的方式循环切割字符串 需求&#xff1a;有一个这样子的 Str “‘CNJ-520-180500000001|CNJ-520-181200000001|CNJ-520-190300000001|CNJ-520-190100000001|CNJ-520-181200000002’” &#xff0c;然后我需要拿到每一个单号&#xff0c;每一个单号都要走一遍固定的…

基于K8S环境部署Dolphinscheduler及简单应用

一、Dolphinscheduler简介 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用…

SOPC之NIOS Ⅱ遇到的问题

记录NIOS Ⅱ中遇到的报错 一、NIOS II中Eclipse头文件未找到 问题&#xff1a;Unresolved inclusion: "system.h"等 原因&#xff1a;编译器无法找到头文件所在路径 解决方法&#xff1a; 在文件夹中找到要添加的头文件&#xff0c;并记录下其路径&#xff0c;如…

8.14 作业

1. .text .globl _start_start:mov r0,#0x9mov r1,#0xfbl loop loop:cmp r0,r1beq stopsubhi r0,r1subls r1,r0mov pc,lr stop:b stop 2.实现1-100的和 .text .globl _start_start:mov r0,#0x1bl loop loop:cmp r0,#0x64bhi stopaddls r1,r0addls r0,#0x1mov pc,lr stop:b sto…

Android app专项测试之耗电量测试

前言 耗电量指标 待机时间成关注目标 提升用户体验 通过不同的测试场景&#xff0c;找出app高耗电的场景并解决 01、需要的环境准备 1、python2.7(必须是2.7&#xff0c;3.X版本是不支持的) 2、golang语言的开发环境 3、Android SDK 此三个的环境搭建这里就不详细说了&am…

C++之map的emplace与pair插入键值对用法(一百七十四)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

【openwrt学习笔记】dnsmasq源码阅读

目录 一、DHCP(Dynamic Host Configuration Protocol)1.1 前置知识1.2 参考链接1.3 IP地址分配代码分析rfc2131.cdhcp-common.cdhcp.c 1.4 几个小问题1.4.1 连续IP模式&#xff08;sequential_ip&#xff09;1.4.2 重新连接使用IP地址1.4.3 续约租期1.4.4 不同的MAC地址分配到相…