接入点内部协议及其在接入点上的实现( 二 )


3 IAPP协议的操作流程
在AP上使用IAPP协议就可以支持STA在子网内的移动 , 下面分STA向AP发起连接和重连接请求两种情况对IAPP协议的操作流程进行分析 。
1) STA发起连接请求时的IAPP操作流程
 
图2 STA发起连接请求时的IAPP操作流程
当本地AP的APME接收到BSS中的STA向AP发起802.11 MAC层连接请求后 , 假如同意连接 , 并在STA返回ASSOCIATE.indication后 , 向本地IAPP发起ADD.request请求 。本地IAPP在接收到APME的ADD.request请求后 , 启动确认定时器 , 并向本地子网广播源MAC地址为STA MAC地址的XID帧和包含STA MAC地址和连接序号的IAPP ADD-notify报文 。当对端AP的IAPP收到ADD-notify报文后 , 提取STA的MAC地址和连接序号 , 封装在IAPP ADD.indication原语中发给自身的APME , APME收到后会对自己的连接列表进行检查 , 假如还保留有与该STA的连接关系 , 而且连接序号比ADD.indication原语所包含序号还旧的话则将之释放 , 但是假如连接序号比ADD.indication原语所包含序号新的话则对端AP将重复前述过程 , 重新向本地子网广播源MAC地址为STA MAC地址的XID帧和包含STA MAC地址的IAPP ADD-notify报文 , 同时通知原来的AP中断与STA的连接 。
XID帧是链路层标识交换更新响应帧 , 当子网上的二层设备 , 如网桥、交换机等接收到该帧后 , 根据该帧的源MAC地址来更新自己的转发表 。假如在定时器超时前 , IAPP收到子网上的二层设备和其它AP的应答后 , 则调用ADD.confirm原语通知本地APME与STA的连接成功 。否则表示连接失败 , APME将中断与STA的连接 。
2) STA发起重连接请求时的IAPP操作流程
 
图3 STA发起重连接请求时的IAPP操作流程
当AP的802.11 MAC层接收到来自STA的重连接请求后 , 它将调用MLME原语REASSOCIATE.indication通知本地APME 。本地APME提取请求报文中旧AP的BSSID、STA的MAC地址和连接序号等 , 封装在IAPP原语MOVE.request向IAPP发起连接通知请求 。IAPP收到MOVE.request请求后 , 发送RADIUS ACCESS-REQUEST报文与RADIUS服务器交互 , 或在本地 , 通过查询预先配置于AP中的ESS中AP MAC地址和IP地址的对应关系 , 将旧AP的BSSID解析为IP地址 。新AP接收到旧AP的IP地址后 , 向STA原先连接的旧AP以TCP会话方式发送IAPP MOVE-Notify报文 , 在报文中包含了STA的MAC地址 。旧AP响应后 , 将自己保存的有关STA的上下文信息用MOVE-response报文发送给新AP , 并且释放掉自己与STA的连接 。新AP接收到旧AP的响应报文后 , 重建STA的用户环境 , 然后在本地子网广播源MAC地址为STA的XID帧 , 子网上的二层设备接收到XID帧后 , 将根据该帧的源MAC地址更新转发表中的相应记录 。IAPP向网络广播通知报文后 , 调用MOVE.confirm原语通知APME 。
假如要对IAPP MOVE-Response报文进行加密 , RADIUS服务器在对新AP回复中 , 除了包括旧AP的IP地址外 , 还包括有安全域 。这些安全域不仅包含了新旧AP通信的共享密钥 , 而且还用RADIUS注册表中的AP的口令进行了加密 。新AP接收到RADIUS服务器的回复后 , 把安全域作为Send-Security-Block报文发送给旧AP , 这也是AP间IAPP TCP交换的第一个信息 。旧AP返回ACK-Security-Block报文 , 这样新旧AP都有了共享密钥 , 可以对AP间会话所有报文进行加密 。
4 RADIUS协议支持
IAPP可以为ESS提供三种不同级别的支持:第一级不提供治理或安全支持;第二级支持BSSID到IP地址的动态映射;第三级提供IAPP消息的加密和认证 。第一级支持仅适用于小规模的ESS 。对于大多数ESS而言 , 需要IAPP提供第二或第三级支持 , 这要求在ESS中至少设置一个RADIUS服务器来提供地址映射和认证、加密等服务 。
ESS中的每一个AP都可以作为RADIUS客户端 , 它与RADIUS服务器之间拥有一个不同于其它AP的共享密码 。此外 , RADIUS服务器还为每一个BSSID保留了如下信息:

推荐阅读