Wlan——CAPWAP隧道的建立过程

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-controllercapwap 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.hqwc.cn/news/66400.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电信流失用户画像

三大运营商电信、联通、移动,都想扩大自己的客户群体。据研究,获取新客户所需的成本远高于保留现有客户的成本。因此为了满足在激烈竞争中的优势,提前预测出用户是否会流失,采取保留措施成为一大挑战。本文和你一起探索电信流失客…

7.1 动手实现AlexNet

AlexNet引入了dropput层 代码 import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 样本数为1,通道数为96,11x11的卷积核,步幅为4,减少输出的高度和深度。 LeNet的通道数才6,此处96,为什么要增加这么多通…

VS2017 查看dll

dumpbin /exports xxxx.dll 导出函数 dumpbin /dependents xxxx.dll 依赖关系

打造数字化营销闭环,破解精准获客难题

现阶段,企业需要进行数字化营销闭环,以实现更精确的客户获取。随着数字技术的迅猛发展,企业需要将在线广告、社交媒体营销和数据分析等工具相互结合,建立一个完整的数字化营销流程。通过使用客户细分、精准定位和个性化广告等手段…

layui的基本使用-日期控件的业务场景使用入门实战案例一

效果镇楼&#xff1b; 1 前端UI层面&#xff1b; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&…

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

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

学C的第三十三天【C语言文件操作】

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第三十二天【动态内存管理】_高高的胖子的博客-CSDN博客 1 . 为什么要使用文件 以前面写的通讯录为例&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删…

Java课题笔记~ JSP开发模型

MVC 1.JSP演化历史 1. 早期只有servlet&#xff0c;只能使用response输出标签数据&#xff0c;非常麻烦 2. 后来有了jsp&#xff0c;简化了Servlet的开发&#xff0c;如果过度使用jsp&#xff0c;在jsp中即写大量的java代码&#xff0c;有写html表&#xff0c;造成难于维护&…

生信豆芽菜-单基因与基因集的关系

网址&#xff1a;http://www.sxdyc.com/panCancerGeneSet 该工具主要用于查看单基因在泛癌中与各个不同基因集的相关性 提交后等待运行成功即可&#xff0c;还可以关注公众号&#xff1a;豆芽数据分析

runtime error: member access within misaligned address(力扣最常见错误之一)

runtime error: member access within misaligned address&#xff08;力扣最常见错误之一&#xff09; 前言原因和解决办法总结 前言 最近博主在刷力扣时&#xff0c;明明代码逻辑都没问题&#xff0c;但总是报下面这个错误&#xff1a; runtime error: member access within…

vscode的ros拓展(插件)无法渲染urdf

文章目录 1.事件背景2.资料调查3.解决方案3.1.使用0.9.4版本3.2.使用脚本自己调用rviz渲染 1.事件背景 之前在vscode中一直用得好好的urdf预览功能&#xff0c;突然在某一天&#xff0c;不行了。 执行 URDF Preview之后&#xff0c;虽然弹出了一个URDF Preview的窗口&#xff…

JAVA Android 正则表达式

正则表达式 正则表达式是对字符串执行模式匹配的技术。 正则表达式匹配流程 private void RegTheory() {// 正则表达式String content "1998年12月8日&#xff0c;第二代Java平台的企业版J2EE发布。1999年6月&#xff0c;Sun公司发布了第二代Java平台(简称为Java2) &qu…