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


IEEE 802.11协议制定了无线局域网MAC层和物理层的规范及其基本结构,但并没有对无线局域网的构建做出规定。这给接入点AP和 由其组成的分布式系统在功能设计留出了很大的自由空间,但同时也给无线站点STA的移动带来了问题,使STA不能自由地在不同厂商生产的AP间移动。为了 解决这个问题,IEEE工作组制定了802.11f协议,详细阐述了接入点内部协议IAPP(Inter-Access Point Protocol),IAPP协议旨在向用户提供AP间的移动功能,以满足用户对移动性日益增长的需求。 IAPP协议只是解决了用户移动而带来的链路层通信的问题,要想保证移动用户IP层通信的畅通,需要使用移动IP或DHCP技术。将 IAPP协议功能和这些技术结合起来,可以向用户提供一个完整的移动性解决方案。

IEEE 802.11f协议简介

在无线局域网中,站点STA的移动行为可能会产生如下几个问题:

1) 旧AP(STA上次接入的AP)会认为自己与STA还有连接,当接收到STA的报文时,它仍会在本地BSS内发送该报文。这会导致无线资源的浪费和AP资 源的占用。因此新的AP(接收 STA重连接请求报文的AP)需要将STA的切换情况通知旧AP,让它释放掉与STA的单边连接。

2) STA在旧AP上进行MAC层认证或其他认证(比如 802.1x认证)时,将会在旧AP上留下相应的用户信息,当 STA切换到新AP时,如果还要进行耗时的认证过程,将导致切换效率不高。因此,当STA发生AP切换时,新AP需要从旧AP上获得STA的用户信息,然 后重建STA的工作环境,以对STA进行正确的管理。

3) 由于STA在切换时只是向新AP提供旧AP的MAC地址(即旧BSSID),要与旧AP通信,新AP还需要知道旧AP 的IP地址等信息,所以要求新AP能够根据旧AP的BSSID查询到它的IP地址。

4) 在与AP连接的有线网络中可能存在诸如网桥、交换机等二层转发设备。当STA从网桥的一个端口连接的子网段移动到另一个端口的子网段时,如果网桥的转发表 不能得到更新,将导致其他网络节点发送给STA的报文不能被正确送达STA现在所处的位置,造成STA的报文丢失。因此需要新AP在处理STA的重连接请 求时通知这些二层设备更新转发表。 为了解决上述问题,需要使用IEEE 802.11f协议中推荐的接入点内部协议IAPP。IAPP协议是IEEE 802.11工作组制订的用于AP间互通的协议.它的主要功能是便于扩展服务集ESS的创建和维护,支持802.11移动站点在AP间的移动,保证每个移 动站点在确定时刻与AP间只有一个连接关系。包含有IAPP的AP协议结构如下图所示:

图1 包含IAPP的AP协议结构

包含IAPP的AP协议结构

在上图中,阴影部分表示模块间没有连接关系。APME(AP management entity)是AP中的管理实体,它负责管理和协调AP中的各个协议功能模块和与AP连接的802.11站点管理实体SME(Station management entity),并通过服务访问点IAPP SAP调用IAPP服务。IAPP是AP上支持STA移动的主要协议模块,同时它又支持了一个RADIUS客户端。当AP初始化加入一个ESS,或AP的 802.11 MAC层向APME指示有 STA切换到本AP时,APME使用IAPP服务原语,调用IAPP协议模块发送RADIUS报文与RADIUS服务器交互,或广播基于TCP/IP或 UDP/IP的IAPP报文来与DS域中的其它AP通信完成IAPP操作。 RADIUS协议是IAPP模块进行安全正确操作所必需的。特别是当给定了其它AP的BSSID后,IAPP应能够通过查询RADIUS服务器,找出 ESS中的其它AP的IP地址,并获得相关安全信息以保护特定IAPP数据包的内容。网络中的设备除了802.11 AP可能用到IAPP协议操作外,二层网络设备如网桥和交换机等,也会受到IAPP协议操作的影响。

IAPP协议的操作流程

在AP上使用IAPP协议就可以支持STA在子网内的移动,下面分STA向AP发起连接和重连接请求两种情况对IAPP协议的操作流程进行分析。

1) STA发起连接请求时的IAPP操作流程

图2 STA发起连接请求时的IAPP操作流程

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操作流程

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间会话所有报文进行加密。


相关内容