capwap学习笔记——初识capwap(三)(转)
2.5.6 CAPWAP状态机详解
2.5.6.1 Start to Idle
这个状态变迁发生在设备初始化完成。
¢ WTP: 开启CAPWAP状态机。
¢ AC: 开启CAPWAP状态机。
2.5.6.2 Idle to Discovery
这个状态变迁发生是为了支持CAPWAP发现进程。
¢ WTP:
WTP进入发现状态是为了优先去传输第一个Discovery Request message。在进入这个状态之前,WTP设置发现DiscoveryInterval timer,将DiscoveryCount counter为0.同时清理以前的发现过程中可能会从AC收到的所有信息。
¢ AC:
由发现线程执行,且发生在收到一个发现请求报文的时候。此时,AC需要给这个报文响应一个Discovery Response message 。
2.5.6.3 Discovery to Discovery
在这个发现状态,WTP决定连接哪个AC。
¢ WTP:
这个状态变迁发生在发现DiscoveryInterval timer触发的时候。对于这个事件的每次变迁,DiscoveryCount counter会递增。一旦WTP发送了Discovery Request message,WTP重启DiscoveryInterval timer。
¢ AC:
对于AC来说,这个状态变迁是无效的。
2.5.6.4 Discovery to Idle
当发现过程完毕的时候,AC的发现线程将会触发这个变迁。
¢ WTP:
对于WTP来说,这个状态变迁是无效的。
¢ AC:
这个状态变迁由AC发现线程执行,当发现线程传输了一个给Discovery Request回送了一个Discovery Response的时候,就会触发这个过程。
2.5.6.5 Discovery to Sulking
当WTP发现AC失败的时候会触发这个状态变迁。
¢ WTP:
发生在DiscoveryInterval timer超时的时候。 且此时DiscoveryCount变量等于MaxDiscoveries 。在进入这个状态之前,WTP必须开启SilentInterval timer 。当在Sulking状态的时候,所有收到的CAPWAP协议报文都会被忽略。
¢ AC:
对于AC来说,这个状态变迁是无效的。
2.5.6.6 Sulking to Idle
这个状态变迁发生在WTP需要重新启动发现过程的时候。
¢ WTP:
当SilentInterval timer触发,WTP进入到这个状态。FailedDTLSSessionCount, DiscoveryCount和FailedDTLSAuthFailCount计数器被清零。
¢ AC:
对于AC来说,这是一个无效的状态变迁。
2.5.6.7 Sulking to Sulking
sulking状态提供安静时段,最小化DOS攻击的危险。
¢ WTP:
在sulking状态收到的所有来自AC得报文都会被忽略。
¢ AC:
对于AC来说,这是一个无效的状态变迁
2.5.6.8 Idle to DTLS Setup
这个状态变迁发生在跟对端建立安全的DTLS会话的时候。
¢ WTP:
WTP通过调用DTLSStart命令来初始化这个状态变迁,开始与选定AC进行DTLS会话,且开启WaitDTLS timer。此时,忽略了发现过程,假设WTP有本地配置的AC。
¢ AC:
从start状态进入Idle状态,监听线程自动变迁至DTLS Setup状态,调用DTLSListen命令,并且开启WaitDTLS timer。
2.5.6.9 Discovery to DTLS Setup
¢ WTP:
WTP调用DTLSStart命令来初始化这个变迁,开始与指定AC建立DTLS会话。
¢ AC:
对于AC来说,这是一个无效的状态变迁。
2.5.6.10 DTLS Setup to Idle
当DTLS连接失败的时候发生这个状态变迁。
¢ WTP:
此时WTP接收到DTLSEstablishFail通知,并且FailedDTLSSessionCount或者FailedDTLSAuthFailCount counter 没有达到MaxFailedDTLSSessionRetry值。这个错误通知终止了DTLS会话的建立。当接收到这个通知,FailedDTLSSessionCount计时器会递增。
这个状态变迁也会发生在WaitDTLS timer超时的情况下。
¢ AC:
对于AC来说,这是一个无效的状态变迁。
2.5.6.11 DTLS Setup to Sulking
当重复尝试建立DTLS连接失败的时候,会发生此状态变迁。
¢ WTP:
当FailedDTLSSessionCount或者FailedDTLSAuthFailCount到达最大值MaxFailedDTLSSessionRetry的时候,WTP进入此状态变迁。进入这个状态,WTP必须开启SilentInterval定时器,且所有接收到的CAPWAP和DTLS协议报文将会被忽略。
¢ AC:
对于AC来说,这是一个无效的状态变迁。
2.5.6.12 DTLS Setup to DTLS Setup
当DTLS会话建立失败的时候会发生这个状态变迁。
¢ WTP:
对于WTP来说,这是一个无效的状态变迁
¢ AC:
当接收到一个来自DTLS的DTLSEstablishFail通知,AC监听线程初始化这个状态变迁。当收到这个通告,FailedDTLSSession Count会递增,监听线程然后调用DTLSListen命令。
2.5.6.13 DTLS Setup to Authorize
这个状态变迁发生在当一个正在建立DTLS会话需要认证才能继续进行的时候。
¢ WTP:
当WTP接收到DTLSPeerAuthorize通告的时候,开始这个状态变迁。在进入这个状态之前,WTP对AC的证书执行一个认证检查。
¢ AC:
当DTLS模块初始化DTLSPeerAuthorize通告的时候,AC监听线程处理这个状态变迁。监听线程fork一个服务线程和一个状态机内容的拷贝,然后,服务线程会对WTP证书执行认证。
2.5.6.14 Authorize to DTLS Setup
当监听线程对新进入的会话开始监听的时候,发生这个状态变迁。
¢ WTP:
对于WTP来说,这是个无效的状态变迁
¢ AC:
当AC监听线程创建WTP内容空间和服务线程后,发生这个状态变迁。监听线程然后调用DTLSListen命令 。
2.5.6.15 Authorize to DTLS Connect
当通知DTLS栈会话将要建立的时候发生这个状态变迁。
¢ WTP:
当AC证书被WTP认证成功的时候,会发生这个状态变迁。调用DTLSAccept命令来完成。
¢ AC:
当WTP证书成功通过AC认证的时候发生这个状态变迁。调用DTLSAccept来完成。
2.5.6.16 DTLS Connect to DTLS Teardown
当DTLS会话建立失败的时候发生。
¢ WTP:
当WTP接收到一个DTLSAborted或者DTLSAuthenticateFail通告,告知这个DTLS会话建立不成功的时候,发生这个状态变迁。当因为DTLSAuthenticateFail通告发生的状态变迁,FailedDTLSAuthFailCount会增加,否则,FailedDTLSSessionCount计数器增加。这个状态变迁也在WaitDTLS 定时器超时的时候发生,此时WTP开启DTLSSessionDelete定时器。
¢ AC:
当WTP接收到一个DTLSAborted或者DTLSAuthenticateFail通告,告知这个DTLS会话建立不成功,此时FailedDTLSAuthFailCount和FailedDTLSSessionCount 不等于MaxFailedDTLSSessionRetry的时候,发生这个状态变迁。 这个状态变迁也在WaitDTLS定时器超时的时候发生。
2.5.6.17 DTLS Connect to Join
当会话成功建立的时候发生。
¢ WTP:
当WTP接收到一个DTLSEstablished通告,表明这个DTLS会话成功建立的时候,发生这个状态变迁。当接收到这个通告FailedDTLSSessionCount计时器被设置为0.WTP进入join状态,传输Join Request给AC。WTP停止WaitDTLS定时器。
¢ AC:
当AC接收到DTLSEstablished通告,表明这个DTLS会话成功建立的时候,发生这个状态变迁。当接收到这个通告,FailedDTLSSessionCount计时器被设置为0.AC停止WaitDTLS定时器,开启WaitJoin定时器。
2.5.6.18 Join to DTLS Teardown
当Join过程失败的时候发生。
¢ WTP:
当WTP接收到一个带有错误代码消息单元的Join响应消息,或者在Join响应中由AC提供的Image与WTP现在运行的版本不一样,且WTP的non-volatile memory中有这个请求的版本号.这个导致WTP初始化DTLSShutdown命令。当WTP接收到下面任何一个通告的时候,也会发生这个过程:DTLSAborted, DTLSReassemblyFailure, or DTLSPeerDisconnect.WTP开启DTLSSessionDelete 定时器。
¢ AC:
发生在WaitJoin超时或者AC传送了一个带有错误码的Join Response的时候。AC初始化DTLSShutdown命令。当AC收到下面任何一个DTLS通告的时候,也会发生这个过程:DTLSAborted, DTLSReassemblyFailure, DTLSPeerDisconnect。 此时,AC开启DTLSSessionDelete定时器。
2.5.6.19 Join to Image Data
WTP和AC下载可执行的firmware时使用这个状态变迁。
¢ WTP:
当WTP收到了一个成功的Join Response message,告知它当前运行的版本与要求的不一样的时候,发生这个状态变迁。且此时,WTP的non-volatile storage中也没有要求的image版本。WTP初始化EchoInterval计时器。
¢ AC:
当AC发送一个Join Response给WTP之后,从WTP接受到一个Image Data Request报文,发生这个状态变迁。AC停止WaitJoin定时器,发送一个Image Data Response message给WTP。
2.5.6.20 Join to Configure
WTP和AC使用这个状态变迁来交换配置信息。
¢ WTP:
当WTP收到了一个successful Join Response message,且此时当前运行的版本与要求的一致。WTP发送一个Configuration Status Request message给AC,消息中包含了当前配置信息。
¢ AC:
当从WTP接收到Configuration Status Request message,且消息中包含指定消息元素需要覆盖WTP的配置。AC停止WaitJoin定时器,发送Configuration Status Response message,并且开启ChangeStatePendingTimer定时器。
2.5.6.21 Configure to Reset
这个状态变迁被用来重启连接。这个可能被配置阶段发生的错误导致,或者是WTP决定它有需要来重启让新的配置生效。CAPWAP Reset命令用来告诉对端它将会初始化一个DTLSteardown。
¢ WTP:
WTP接收到Configuration Status Response message告诉它有错误发生或者觉得有需要重新让新配置生效的时候,WTP进入reset 状态。
¢ AC:
AC接收到一个来自WTP的Change State Event message,当这个消息包含了因为AC的策略而不允许WTP提供服务的错误的时候,AC变迁到reset状态。这个状态变迁也会在ChangeStatePendingTimer定时器超时的时候发生。
2.5.6.22 Authorize to DTLS Teardown
这个状态变迁为了通知DTLS会话将要终止。
¢ WTP:
当WTP认证失败的时候,发生这个状态变迁。WTP然后调用DTLSAbortSession命令终止这个DTLS会话。这个状态变迁也会发生在WaitDTLS定时器超时的情况下。WTP开启DTLSSessionDelete定时器。
¢ AC:
这个状态变迁发生在AC认证失败的时候。AC调用DTLSAbortSession命令终止DTLS会话。这个状态变迁也会发生在WaitDTLS定时器超时的时候。AC开启DTLSSessionDelete定时器。
2.5.6.23 Configure to DTLS Teardown
这个变迁发生在因为DTLS错误导致的配置过程终止的时候。
¢ WTP:
当接收到下列任一DTLS通告:DTLSAborted,DTLSReassemblyFailure, 或者 DTLSPeerDisconnect,WTP进入这个状态。如果它接收到频繁的DTLSDecapFailure通告,WTP也有可能会终止DTLS会话。此时,WTP开启DTLSSessionDelete定时器。
¢ AC:
当接收到下列任一DTLS通告:DTLSAborted,DTLSReassemblyFailure,或者DTLSPeerDisconnect,AC进入这个状态。如果它接收到频繁的DTLSDecapFailure通告,WTP也有可能会终止DTLS会话。AC开启DTLSSessionDelete定时器。
2.5.6.24 Image Data to Image Data
image数据状态在WTP和AC在firmware下载阶段的时候使用。
¢ WTP:
ü 当WTP接收到一个表明AC有更多数据要发送的Image Data Response message的时候,WTP进入Image Data state。
ü WTP 接收到频繁的Image Data Requests,此时,它将会重新设置ImageDataStartTimer的时间来保证它接收到下一个来自AC的Image Data Request。
ü WTP的EchoInterval 超时的时候,这会导致WTP传输一个Echo Request message,并且重新设置它的EchoInterval定时器。
ü WTP接收到一个来自AC的Echo Response。
¢ AC:
ü 当AC在Image数据状态下接收到来自WTP的Image Data Response message。
ü 当AC接收到一个来自WTP的Echo Request。这个会导致AC用一个Echo Response来进行响应,然后重新设置EchoInterval定时器。
capwap学习笔记——初识capwap(三)(转)的更多相关文章
- capwap学习笔记——初识capwap(一)(转)
初识CAPWAP 2.1 CAPWAP简介 CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specificat ...
- capwap学习笔记——初识capwap(一)
2 初识CAPWAP 2.1 CAPWAP简介 说了半天CAPWAP,连全称都还没说,汗-- CAPWAP--Control And Provisioning of Wireless Access P ...
- capwap学习笔记——初识capwap(四)(转)
2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...
- capwap学习笔记——初识capwap(四)
2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...
- capwap学习笔记——初识capwap(三)(下)
2.5.6.25 Image Data to Reset WTP下载image后重启,重新设置DTLS连接 ¢ WTP: ü 当image的下载完成,或者ImageDataStartTimer定 ...
- capwap学习笔记——初识capwap(三)
2.5.6 CAPWAP状态机详解 2.5.6.1 Start to Idle 这个状态变迁发生在设备初始化完成. ¢ WTP: 开启CAPWAP状态机. ¢ AC: 开启CAPWAP状 ...
- capwap学习笔记——初识capwap(五)(转)
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...
- capwap学习笔记——初识capwap(二)(转)
2.5.1 AC发现机制 WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接. WTP的发现过程是可选的.如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现 ...
- capwap学习笔记——初识capwap(五)
3. CAPWAP Binding for IEEE 802.11 ¢ CAPWAP协议本身并不包括任何指定的无线技术.它依靠绑定协议来扩展对特定无线技术的支持. ¢ RFC5416就是用来扩展CAP ...
随机推荐
- 如何取得ChipmunkConstraint实例对象的私有属性
在 如何用代码禁用SpriteBuilder中创建的关节 一篇中提到了要想禁用一个关节就需要将其无效化. 然后我们在重新创建新关节时,可以参考该关节的原始参数. 但是代码中只能直接访问到bodyA和b ...
- 关于iOS socket的讲解介绍
socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...
- androd输入管理系统机制解析
android的输入管理系统主要完成按键.触摸板.鼠标等输入设备的事件输入,功能包括,输入设备的事件输入及向焦点窗口和焦点视图的事件派发,事件的插入,事件的过滤,事件的拦截等功能. 整个输入系统 ...
- 集群增量会话管理器——DeltaManager
DeltaManager会话管理器是tomcat默认的集群会话管理器,它主要用于集群中各个节点之间会话状态的同步维护,由于相关内容涉及到集群,可能会需要一些集群通信相关知识,如果有疑问可结合集群相关章 ...
- apktool动态破解apk
那么今天我们就用另外一种方式来破解apk:动态方式,关于动态方式其实很广义的,因为动态方式相对于静态方式来说,难度大一点,但是他比静态方式高效点,能够针对更过的破解范围.当然动态方式很多,所以这里就分 ...
- 【nginx】4xx,5xx 保持自定义header
问题 nginx使用中,如果请求返回的状态code类似404或者50x这种,仍然返回自定义的header. 分析和解决 nginx文档中关于 add_header的部分 有这么一句 Adds the ...
- javascript中如何让类工厂和构造函数变成同一个函数
我们知道在js中可以用一个函数来定义对象的类,该函数称之为对象的构造函数,我们在需要create对象的时候直接调用这个构造函数即可: var Man = funciton(name){ this.na ...
- ios中block访问外部变量的一些注意点
Block类型是一个C级别的语法和运行机制.它与标准的C函数类似,不同之处在于,它除了有可执行代码以外,它还包含了与堆.栈内存绑定的变量.因此,Block对象包含着一组状态数据,这些数据在程序执行时用 ...
- mongodb3.6 (五)net 客户端访问mongodb设置超时时间踩过的“坑”
前言 在上一篇文章中,我们有提到net访问mongodb连接超时默认为30秒,这个时间在实际项目中肯定是太长的.而MongoClientSettings 也确是提供了超时属性,如下图: 可实际使用中, ...
- 【转载】详解 $_SERVER 函数中QUERY_STRING和REQUEST_URI区别
实例:1,http://localhost/aaa/ (打开aaa中的index.php)结果:$_SERVER['QUERY_STRING'] = "";$_SERVER['RE ...