2.5.1 AC发现机制

WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接。

WTP的发现过程是可选的。如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现过程。

WTP首先发送一个 Discovery Request message给受限的广播地址,或者CAPWAP的多播地址(224.0.1.140),或者是预配置的AC的单播地址。在IPV6网络中,由于广播并不存在,因此使用"All ACs multicast address" (FF0X:0:0:0:0: 0:0:18C)来代替。

当接收到Discovery Request message消息,AC发送一个单播Discovery Response message给WTP。

WTP可以通过Discovery Response message中所带的AC优先级,支持的CAPWAP binding来选择与哪个AC建立会话。

除了上面的发现机制,WTP还可以使用DNS或者DHCP来发现AC。

2.5.2 DTLS握手

WTP首先发送一个ClientHello消息来发起握手,说明它支持的密码算法列表、压缩方法及最高协议版本和其他一些需要的消息。

AC回复一个HelloVerifyReuqest 消息,client必须重传添加了cookie的ClientHello。server然后验证cookie,如果有效的话才开始进行握手。

AC回应一个ServerHello消息,包含服务器选择的连接参数,源自客户端初期所提供的ClientHello,确定了这次通信所需要的算法,然后发过去自己的证书(里面包含了身份和自己的公钥)。

Client在收到这个消息后会生成一个秘密消息,用SSL服务器的公钥加密后传过去,SSL服务器端用自己的私钥解密后,会话密钥协商成功,双方可以用同一份会话密钥来通信了。

2.5.3 DTLS认证和授权

DTLS支持终端认证方式为:证书(certificate)和预共享密钥(pre-shared key)。

CAPWAP认证中使用证书支持的算法是

¢   TLS_RSA_WITH_AES_128_CBC_SHA [RFC5246](MUST SUPPORT)

¢   TLS_DHE_RSA_WITH_AES_128_CBC_SHA [RFC5246](SHOULD SUPPORT)

¢   TLS_RSA_WITH_AES_256_CBC_SHA [RFC5246](MAY SUPPORT)

¢   TLS_DHE_RSA_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)

在RFC4279中定义了多种预共享密钥的认证方式,CAPWAP中主要关心下面两种:

¢  Pre-Shared Key (PSK) key exchange algorithm

¢  DHE_PSK key exchange algorithm

同样,CAPWAP定义了预共享密钥支持的算法

¢  TLS_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)

¢  TLS_DHE_PSK_WITH_AES_128_CBC_SHA [RFC5246] (MUST SUPPORT)

¢  TLS_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)

¢  TLS_DHE_PSK_WITH_AES_256_CBC_SHA [RFC5246] ](MAY SUPPORT)

2.5.4 CAPWAP状态机

CAPWAP状态机,是被AC和WTP同时使用的。对于每个定义的状态,只有特定的消息才被允许收发。

因为WTP只会和单个AC通讯,因此只会有一个CAPWAP的状态机。而AC与WTP有很大差别,因为AC同时和许多WTP通讯。

DTLS和CAPWAP的状态机由命令和通告的API接口联系起来。

DTLS状态机的变迁由CAPWAP状态机的命令触发。

CAPWAP状态机的变迁由DTLS状态机的通告触发

CAPWAP状态机:

2.5.4.1 CAPWAP to DTLS Commands

¢  DTLSStart

开启DTLS会话的建立

¢  DTLSListen

监听DTLS会话请求

¢  DTLSAccept

允许DTLS会话建立

¢  DTLSAbortSession

导致正在进行中的DTLS会话的中断

¢  DTLSShutdown

关闭DTLS会话

¢  DTLSMtuUpdate

改变DTLS模块的MTU设定大小。默认大小为1468字节

2.5.4.2 DTLS to CAPWAP Notifications

¢  DTLSPeerAuthorize

DTLS会话建立过程中,通知CAPWAP模块来认证会话。

¢  DTLSEstablished

通知CAPWAP模块DTLS会话已经成功建立

¢  DTLSEstablishFail

DTLS会话建立失败

¢  DTLSAuthenticateFail

DTLS会话建立过程由于认证失败而终止。

¢  DTLSAborted

通知CAPWAP模块它要求的DTLS会话建立过程已经终

¢  DTLSReassemblyFailure

通知CAPWAP模块DTLS分片组装失败

¢  DTLSDecapFailure

通知CAPWAP模块发生了一个解码错误

¢  DTLSPeerDisconnect

通知CAPWAP模块DTLS会话已经关闭

2.5.5 AC线程

AC使用了三个“线程”(thread)的概念。

¢  监听线程:

通过DTLSlisten命令,AC监听线程处理DTLS会话建立请求。创建的时候,监听线程开启DTLS Setup状态。当状态机进入Authorize状态,且DTLS会话生效之后,监听线程创建一个指定的WTP指定会话服务线程和状态空间。

¢  发现线程:

AC的发现线程负责接收和响应发现请求消息。

¢  服务线程

AC的服务进程处理每个WTP的状态和每个WTP连接的线程。这个线程在认证后被监听线程创建。一旦创建,服务线程会继承监听线程的一份状态机空间的拷贝。当与WTP之间的通讯完成后,服务线程关闭,所有的资源都会被释放。

注意,在这里使用了线程这个术语,但是并不代表实现者就必须使用线程。这只是一个实现AC状态机的可用的方法。

capwap学习笔记——初识capwap(二)的更多相关文章

  1. capwap学习笔记——初识capwap(一)(转)

    初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specificat ...

  2. capwap学习笔记——初识capwap(一)

    2 初识CAPWAP 2.1 CAPWAP简介 说了半天CAPWAP,连全称都还没说,汗-- CAPWAP--Control And Provisioning of Wireless Access P ...

  3. capwap学习笔记——初识capwap(四)(转)

    2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...

  4. capwap学习笔记——初识capwap(四)

    2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...

  5. capwap学习笔记——初识capwap(二)(转)

    2.5.1 AC发现机制 WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接. WTP的发现过程是可选的.如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现 ...

  6. capwap学习笔记——初识capwap(五)(转)

    3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...

  7. capwap学习笔记——初识capwap(三)(下)

    2.5.6.25 Image Data to Reset WTP下载image后重启,重新设置DTLS连接 ¢  WTP: ü   当image的下载完成,或者ImageDataStartTimer定 ...

  8. capwap学习笔记——初识capwap(三)(转)

    2.5.6 CAPWAP状态机详解 2.5.6.1 Start to Idle 这个状态变迁发生在设备初始化完成. ¢  WTP: 开启CAPWAP状态机. ¢  AC:  开启CAPWAP状态机. ...

  9. capwap学习笔记——初识capwap(五)

    3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...

随机推荐

  1. 高性能server分析 - Hadoop的RpcServer

    一.Listener Listener线程,当Server处于运行状态时,其负责监听来自客户端的连接,并使用Select模式处理Accept事件. 同时,它开启了一个空闲连接(Idle Connect ...

  2. tapd

    注册公司-TAPD   https://www.tapd.cn/registers/register_company_finish/maolingzhi@meizu.com?type=email_va ...

  3. @Transactional导致AbstractRoutingDataSource动态数据源无法切换的解决办法

    上午花了大半天排查一个多数据源主从切换的问题,记录一下: 背景: 项目的数据库采用了读写分离多数据源,采用AOP进行拦截,利用ThreadLocal及AbstractRoutingDataSource ...

  4. 使用CefSharp在.Net程序中嵌入Chrome浏览器(七)——右键菜单

    一个常用的功能就是禁止浏览器本身的右键菜单,靠在WPF中拦截鼠标事件是不行的,可以通过设置MenuHandler来实现. 首先实现一个IContextMenuHandler. public class ...

  5. HDU 4813 Hard Code(水题,2013年长春现场赛A题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4813 签到题. 把一个字符串按照格式输出就可以了,很水 #include <stdio.h> ...

  6. chrome浏览器调试报错:Failed to load resource: the server responsed width a status of 404 (Not Found)…http://127.0.0.1:5099/favicon.ico

    chrome浏览器在调试的时候默认会查找根目录下的favicon.ico文件,如果不存在就会报错. 解决办法:F12,点击<top frame>左侧漏斗形状的filter,勾选上" ...

  7. Linkedin工程师是如何优化他们的Java代码的

    http://greenrobot.me/devpost/java-faster-less-jvm-garbage/ Linkedin工程师是如何优化他们的Java代码的 最近在刷各大公司的技术博客的 ...

  8. Linux netstat命令具体解释

    简单介绍 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表.接口状态 (Interface Statistics).masquerade 连接,多播成员 (Multicast Memb ...

  9. 动态规划经典问题Java实现

    动态规划问题Java实现 如果我们有面值为1元.3元和5元的硬币若干枚,如何用最少的硬币凑够11元? public class DPProblem { public static void main( ...

  10. git 拉取远程指定分支 pull本地不存在的分支

    默认,git项目只有一个分支,就是master,我们当然可以在本地创建多个分支,并推送到远程git管理平台上,或者将远程git管理平台上的其他分支拉取到自己电脑上. 一.查看本地已有的分支 进入到项目 ...