摘要:本文針對無線局域網(wǎng)用戶在接入點之間的漫游問題,深入分析了IEEE 802.11f協(xié)議所推薦的接入點內(nèi)部協(xié)議IAPP,闡述了IAPP協(xié)議的操作流程,并對IAPP操作所用到的RADIUS服務(wù)進(jìn)行了探討,最后著重研究了IAPP協(xié)議在接入點上實現(xiàn)。
1 引言
IEEE 802.11協(xié)議制定了無線局域網(wǎng)MAC層和物理層的規(guī)范及其基本結(jié)構(gòu),但并沒有對無線局域網(wǎng)的構(gòu)建做出規(guī)定。這給接入點AP和由其組成的分布式系統(tǒng)在功能設(shè)計留出了很大的自由空間,但同時也給無線站點STA的移動帶來了問題,使STA不能自由地在不同廠商生產(chǎn)的AP間移動。為了解決這個問題,IEEE工作組制定了802.11f協(xié)議,詳細(xì)闡述了接入點內(nèi)部協(xié)議IAPP(Inter-Access Point Protocol),IAPP協(xié)議旨在向用戶提供AP間的移動功能,以滿足用戶對移動性日益增長的需求。
IAPP協(xié)議只是解決了用戶移動而帶來的鏈路層通信的問題,要想保證移動用戶IP層通信的暢通,需要使用移動IP或DHCP技術(shù)。將 IAPP協(xié)議功能和這些技術(shù)結(jié)合起來,可以向用戶提供一個完整的移動性解決方案。
2 IEEE 802.11f協(xié)議簡介
在無線局域網(wǎng)中,站點STA的移動行為可能會產(chǎn)生如下幾個問題:
1) 舊AP(STA上次接入的AP)會認(rèn)為自己與STA還有連接,當(dāng)接收到STA的報文時,它仍會在本地BSS內(nèi)發(fā)送該報文。這會導(dǎo)致無線資源的浪費和AP資源的占用。因此新的AP(接收 STA重連接請求報文的AP)需要將STA的切換情況通知舊AP,讓它釋放掉與STA的單邊連接。
2) STA在舊AP上進(jìn)行MAC層認(rèn)證或其他認(rèn)證(比如 802.1x認(rèn)證)時,將會在舊AP上留下相應(yīng)的用戶信息,當(dāng) STA切換到新AP時,如果還要進(jìn)行耗時的認(rèn)證過程,將導(dǎo)致切換效率不高。因此,當(dāng)STA發(fā)生AP切換時,新AP需要從舊AP上獲得STA的用戶信息,然后重建STA的工作環(huán)境,以對STA進(jìn)行正確的管理。
3) 由于STA在切換時只是向新AP提供舊AP的MAC地址(即舊BSSID),要與舊AP通信,新AP還需要知道舊AP 的IP地址等信息,所以要求新AP能夠根據(jù)舊AP的BSSID查詢到它的IP地址。
4) 在與AP連接的有線網(wǎng)絡(luò)中可能存在諸如網(wǎng)橋、交換機(jī)等二層轉(zhuǎn)發(fā)設(shè)備。當(dāng)STA從網(wǎng)橋的一個端口連接的子網(wǎng)段移動到另一個端口的子網(wǎng)段時,如果網(wǎng)橋的轉(zhuǎn)發(fā)表不能得到更新,將導(dǎo)致其他網(wǎng)絡(luò)節(jié)點發(fā)送給STA的報文不能被正確送達(dá)STA現(xiàn)在所處的位置,造成STA的報文丟失。因此需要新AP在處理STA的重連接請求時通知這些二層設(shè)備更新轉(zhuǎn)發(fā)表。
為了解決上述問題,需要使用IEEE 802.11f協(xié)議中推薦的接入點內(nèi)部協(xié)議IAPP。IAPP協(xié)議是IEEE 802.11工作組制訂的用于AP間互通的協(xié)議.它的主要功能是便于擴(kuò)展服務(wù)集ESS的創(chuàng)建和維護(hù),支持802.11移動站點在AP間的移動,保證每個移動站點在確定時刻與AP間只有一個連接關(guān)系。包含有IAPP的AP協(xié)議結(jié)構(gòu)如下圖所示:
圖1 包含IAPP的AP協(xié)議結(jié)構(gòu)
在上圖中,陰影部分表示模塊間沒有連接關(guān)系。APME(AP management entity)是AP中的管理實體,它負(fù)責(zé)管理和協(xié)調(diào)AP中的各個協(xié)議功能模塊和與AP連接的802.11站點管理實體SME(Station management entity),并通過服務(wù)訪問點IAPP SAP調(diào)用IAPP服務(wù)。IAPP是AP上支持STA移動的主要協(xié)議模塊,同時它又支持了一個RADIUS客戶端。當(dāng)AP初始化加入一個ESS,或AP的802.11 MAC層向APME指示有 STA切換到本AP時,APME使用IAPP服務(wù)原語,調(diào)用IAPP協(xié)議模塊發(fā)送RADIUS報文與RADIUS服務(wù)器交互,或廣播基于TCP/IP或UDP/IP的IAPP報文來與DS域中的其它AP通信完成IAPP操作。
RADIUS協(xié)議是IAPP模塊進(jìn)行安全正確操作所必需的。特別是當(dāng)給定了其它AP的BSSID后,IAPP應(yīng)能夠通過查詢RADIUS服務(wù)器,找出ESS中的其它AP的IP地址,并獲得相關(guān)安全信息以保護(hù)特定IAPP數(shù)據(jù)包的內(nèi)容。網(wǎng)絡(luò)中的設(shè)備除了802.11 AP可能用到IAPP協(xié)議操作外,二層網(wǎng)絡(luò)設(shè)備如網(wǎng)橋和交換機(jī)等,也會受到IAPP協(xié)議操作的影響。
3 IAPP協(xié)議的操作流程
在AP上使用IAPP協(xié)議就可以支持STA在子網(wǎng)內(nèi)的移動,下面分STA向AP發(fā)起連接和重連接請求兩種情況對IAPP協(xié)議的操作流程進(jìn)行分析。
1) STA發(fā)起連接請求時的IAPP操作流程
圖2 STA發(fā)起連接請求時的IAPP操作流程
當(dāng)本地AP的APME接收到BSS中的STA向AP發(fā)起802.11 MAC層連接請求后,如果同意連接,并在STA返回ASSOCIATE.indication后,向本地IAPP發(fā)起ADD.request請求。本地IAPP在接收到APME的ADD.request請求后,啟動確認(rèn)定時器,并向本地子網(wǎng)廣播源MAC地址為STA MAC地址的XID幀和包含STA MAC地址和連接序號的IAPP ADD-notify報文。當(dāng)對端AP的IAPP收到ADD-notify報文后,提取STA的MAC地址和連接序號,封裝在IAPP ADD.indication原語中發(fā)給自身的APME,APME收到后會對自己的連接列表進(jìn)行檢查,如果還保留有與該STA的連接關(guān)系,而且連接序號比ADD.indication原語所包含序號還舊的話則將之釋放,但是如果連接序號比ADD.indication原語所包含序號新的話則對端AP將重復(fù)前述過程,重新向本地子網(wǎng)廣播源MAC地址為STA MAC地址的XID幀和包含STA MAC地址的IAPP ADD-notify報文,同時通知原來的AP中斷與STA的連接。
XID幀是鏈路層標(biāo)識交換更新響應(yīng)幀,當(dāng)子網(wǎng)上的二層設(shè)備,如網(wǎng)橋、交換機(jī)等接收到該幀后,根據(jù)該幀的源MAC地址來更新自己的轉(zhuǎn)發(fā)表。如果在定時器超時前,IAPP收到子網(wǎng)上的二層設(shè)備和其它AP的應(yīng)答后,則調(diào)用ADD.confirm原語通知本地APME與STA的連接成功。否則表示連接失敗,APME將中斷與STA的連接。
2) STA發(fā)起重連接請求時的IAPP操作流程
圖3 STA發(fā)起重連接請求時的IAPP操作流程
當(dāng)AP的802.11 MAC層接收到來自STA的重連接請求后,它將調(diào)用MLME原語REASSOCIATE.indication通知本地APME。本地APME提取請求報文中舊AP的BSSID、STA的MAC地址和連接序號等,封裝在IAPP原語MOVE.request向IAPP發(fā)起連接通知請求。IAPP收到MOVE.request請求后,發(fā)送RADIUS ACCESS-REQUEST報文與RADIUS服務(wù)器交互,或在本地,通過查詢預(yù)先配置于AP中的ESS中AP MAC地址和IP地址的對應(yīng)關(guān)系,將舊AP的BSSID解析為IP地址。新AP接收到舊AP的IP地址后,向STA原先連接的舊AP以TCP會話方式發(fā)送IAPP MOVE-Notify報文,在報文中包含了STA的MAC地址。舊AP響應(yīng)后,將自己保存的有關(guān)STA的上下文信息用MOVE-response報文發(fā)送給新AP,并且釋放掉自己與STA的連接。新AP接收到舊AP的響應(yīng)報文后,重建STA的用戶環(huán)境,然后在本地子網(wǎng)廣播源MAC地址為STA的XID幀,子網(wǎng)上的二層設(shè)備接收到XID幀后,將根據(jù)該幀的源MAC地址更新轉(zhuǎn)發(fā)表中的相應(yīng)記錄。IAPP向網(wǎng)絡(luò)廣播通知報文后,調(diào)用MOVE.confirm原語通知APME。
如果要對IAPP MOVE-Response報文進(jìn)行加密,RADIUS服務(wù)器在對新AP回復(fù)中,除了包括舊AP的IP地址外,還包括有安全域。這些安全域不僅包含了新舊AP通信的共享密鑰,而且還用RADIUS注冊表中的AP的口令進(jìn)行了加密。新AP接收到RADIUS服務(wù)器的回復(fù)后,把安全域作為Send-Security-Block報文發(fā)送給舊AP,這也是AP間IAPP TCP交換的第一個信息。舊AP返回ACK-Security-Block報文,這樣新舊AP都有了共享密鑰,可以對AP間會話所有報文進(jìn)行加密。
4 RADIUS協(xié)議支持
IAPP可以為ESS提供三種不同級別的支持:第一級不提供管理或安全支持;第二級支持BSSID到IP地址的動態(tài)映射;第三級提供IAPP消息的加密和認(rèn)證。第一級支持僅適用于小規(guī)模的ESS。對于大多數(shù)ESS而言,需要IAPP提供第二或第三級支持,這要求在ESS中至少設(shè)置一個RADIUS服務(wù)器來提供地址映射和認(rèn)證、加密等服務(wù)。
ESS中的每一個AP都可以作為RADIUS客戶端,它與RADIUS服務(wù)器之間擁有一個不同于其它AP的共享密碼。此外,RADIUS服務(wù)器還為每一個BSSID保留了如下信息:
a) 基本服務(wù)組標(biāo)識BSSID;
b) 至少為160位RADIUS BSSID密碼;
c) BSSID的DSM IP地址或DNS域名;
d) 用于IAPP通信加密的AP所支持的加密套件。
IAPP操作中用到的RADIUS服務(wù)可以分為兩大類:ESS管理和地址動態(tài)映射。而ESS又可以分為AP注冊和認(rèn)證、IAPP密鑰管理和分發(fā)以及STA的接入管理。
1. AP注冊和認(rèn)證
圖4 AP的RADIUS注冊接入過程
AP為了加入一個ESS,首先由自身的IAPP向ESS中的RADIUS服務(wù)器發(fā)送攜帶AP IP地址、IAPP注冊服務(wù)類型和加入ESS的SSID的RADIUS注冊接入請求報文,該報文以AP的BSSID作為用戶名,以AP的BSSID密碼作為用戶口令,還包含了AP所支持的封裝安全負(fù)荷協(xié)議ESP和認(rèn)證頭協(xié)議AH的模式列表。RADIUS服務(wù)器在接收到該報文后,將對AP的身份進(jìn)行鑒別,同時對報文中的ESP列表進(jìn)行檢查,如果AP支持ESP加密和ESP認(rèn)證算法,并證實AP身份有效,RADIUS服務(wù)器將AP的BSSID注冊成為ESS中的一部分,同時向AP返回RADIUS注冊接入許可報文。在該報文中不僅確認(rèn)了AP成為ESS的有效成員,而且還向AP提供了多項安全域,用于構(gòu)建一條安全的IAPP組播信道。
如果RADIUS服務(wù)器對ESP列表檢查后,判定AP不支持ESP加密和ESP認(rèn)證算法,或者AP身份無效,則向AP發(fā)送RADIUS注冊接入拒絕報文,拒絕AP加入本ESS。當(dāng)AP要脫離ESS時,需要向RADIUS服務(wù)器發(fā)送注銷報文,注銷AP的ESS成員身份。
2. STA的接入管理
當(dāng)AP的802.11 MAC向APME指示有STA切換到本AP,并且接收到由STA發(fā)出的IAPP MOVE-Request請求后,該AP會向所在ESS中的RADIUS服務(wù)器發(fā)送包含STA先前連接AP的 BSSID(舊BSSID)的RADIUS接入請求報文。RADIUS服務(wù)器收到新AP接入請求報文后,將會檢查舊BSSID是否是當(dāng)前ESS中的有效成員。如果RAIDUS服務(wù)器判定新AP和舊AP可以用IAPP互通,則向新AP返回一個RADIUS接入許可報文。該報文不僅確認(rèn)了舊BSSID是當(dāng)前ESS中一個有效成員,而且還包含了新、舊BSSID的安全域用于新舊AP之間安全信道的構(gòu)建。
如果RAIDUS服務(wù)器對舊BSSID檢查后,認(rèn)為新AP和舊AP不能通過IAPP互通,則向新AP返回RADIUS接入拒絕報文,新AP接收到RADIUS服務(wù)器的接入拒絕響應(yīng)后,向申請連接的STA發(fā)送MLME REASSOCIATE.confirm原語,并指示連接失敗。
3. IAPP密鑰的管理和分發(fā)
在允許一個AP加入ESS后,RADIUS服務(wù)器會保存該AP的BSSID密碼,并向該AP回復(fù)RADIUS注冊接入許可報文。在該報文中包含了一些可選屬性,指定了AP的ESP加/解密密鑰和認(rèn)證密鑰、ESP加/解密算法號和認(rèn)證算法號等。利用這些密鑰和算法,AP可以對發(fā)送和接收的ADD-Notify報文進(jìn)行加密和解密操作,從而構(gòu)建一條安全的IAPP組播信道。
RADIUS服務(wù)器還為新舊AP之間的通信提供安全支持。在RADIUS接入許可報文的可選屬性中,New-BSSID-Security-Block包含了RADIUS服務(wù)器為新AP指定的用于ESP加密和認(rèn)證的一系列安全信息,并用新AP的BSSID密碼進(jìn)行加密;Old-BSSID-Security-Block包含了RADIUS服務(wù)器為舊AP指定的用于ESP加密和認(rèn)證的一系列安全信息,用舊AP的BSSID密碼進(jìn)行了加密;新舊AP的IAPP利用這些屬性,就可以建立一條安全連接進(jìn)行通信。
4. 地址動態(tài)映射
每一個AP在加入ESS時,都會向ESS中的RADIUS服務(wù)器發(fā)送RADIUS注冊接入請求報文,在該報文中包含了AP的BSSID和AP的IP地址等信息。RADIUS在接收到AP的RADIUS注冊接入請求報文后,會對其進(jìn)行檢查。如果通過檢查,RADIUS服務(wù)器將AP的BSSID注冊成為ESS中的一部分,同時還保留了AP的的BSSID和IP地址等信息。這樣,ESS中的每一個AP都可以通過RADIUS服務(wù)器來查詢其它AP的IP地址了。
如果沒有在RADIUS服務(wù)器進(jìn)行注冊,AP將不能使用RADIUS服務(wù)器的地址解析功能將AP的BSSID解析為DSM的IP地址。
5 IAPP協(xié)議在AP上的實現(xiàn)分析
為了在AP上實現(xiàn)IAPP協(xié)議的功能,需要在AP中設(shè)置專門的IAPP模塊來執(zhí)行IAPP操作和RADIUS服務(wù)。IAPP模塊在AP中完成的主要功能是:
(1) 初始化功能
主要是完成IAPP協(xié)議和RADIUS客戶端的初始化,同時打開用于IAPP操作的TCP/UDP端口;
。2) 聲明功能
a) 當(dāng)有STA向本AP發(fā)起連接請求時,IAPP模塊將向DS廣播IAPP ADD-notify報文,使得至少在本地子網(wǎng)內(nèi)的其它AP都不會再有與該STA的連接關(guān)系。
b) 當(dāng)有STA向本AP發(fā)起連接或重連接請求時向有線網(wǎng)絡(luò)廣播XID幀,更新本地子網(wǎng)中二層設(shè)備的轉(zhuǎn)發(fā)表,使得它們可以正確轉(zhuǎn)發(fā)目的地址為STA的數(shù)據(jù)包。
(3) 移交功能
當(dāng)有STA向AP發(fā)起重連接請求時,IAPP模塊向舊AP發(fā)送IAPP MOVE-notify報文,通知舊AP以前與其連接的STA切換到了新AP。舊AP的IAPP模塊將用IAPP MOVE-response報文將該STA的有關(guān)信息返回給新AP,同時清除與該STA的連接關(guān)系。新AP根據(jù)收到的報文獲得用戶信息重建STA的工作環(huán)境。
。4) 支持ESS管理和AP的IP地址查詢功能。
當(dāng)ESS中配有RADIUS服務(wù)器時,IAPP還需要實現(xiàn)RADIUS客戶端功能才保證IAPP的正確操作,為此,IAPP模塊還需要實現(xiàn):
a) IAPP初始化時,用RADIUS Registration Access-Request報文向RADIUS服務(wù)器注冊。
b) 當(dāng)有STA切換到本AP時,向RADIUS服務(wù)器發(fā)送RADIUS Access-Request報文,查詢STA原屬AP的IP地址。
c) 當(dāng)AP要脫離ESS時,向RADIUS服務(wù)器發(fā)送注銷報文,同時關(guān)閉IAPP端口。
為了實現(xiàn)上述IAPP功能,IAPP模塊要分成三個子模塊:IAPP主模塊、RADIUS通信模塊和接口模塊。IAPP主模塊負(fù)責(zé)偵聽和處理IAPP端口通信,指定給IAPP的端口號是3517。RADIUS通信模塊支持與RADIUS服務(wù)器的交互和AP的IP地址查詢,偵聽和處理RADIUS端口通信。接口模塊向MAC層協(xié)議模塊的連接和重連接操作提供調(diào)用接口。除此之外,MAC層模塊、橋接模塊和802.1x控制模塊還將向IAPP模塊提供功能接口,支持IAPP讀取、配置和管理該模塊內(nèi)的用戶信息。
圖5 IAPP功能模塊圖
IAPP主模塊的執(zhí)行流程如下圖所示:
圖6 IAPP主模塊的執(zhí)行流程
6 存在的問題
IAPP協(xié)議能較好地支持STA在子網(wǎng)內(nèi)AP間的散步,但是發(fā)生AP切換時,STA的QoS并不能得到可靠地保證。另外,當(dāng)STA跨子網(wǎng)漫游時,IAPP還必須結(jié)合移動IP和DHCP等技術(shù)來提供網(wǎng)絡(luò)層通信的漫游支持。這些問題都有待于將來作深入的研究。
參考文獻(xiàn)
[1] IEEE Standards Department.Draft Recommended Practice for Multi-Vendor Access Point Interoperability via an Inter-Access Point Protocol Across Distribution Systems Supporting IEEE 802.11 Operation.IEEE P802.11F/D4.1, November 2002
[2] Jin Xiaohui, Li Jiandong.IAPP enhancement protocol.Info-tech and Info-net, 2001. Proceedings. ICII 2001 - Beijing, 2001 International Conferences on , Volume: 2 , 2001
[3] Jim Geier.《無線局域網(wǎng)》,王群等譯.北京:人民郵電出版社,2001
摘自 賽迪網(wǎng)