本發(fā)明屬于無線網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別是涉及用戶終端上下線的處理方法及無線接入設(shè)備。
背景技術(shù):
在無線網(wǎng)絡(luò)中,當(dāng)用戶終端STA上線關(guān)聯(lián)上無線接入設(shè)備(無線AP)時(shí),無線接入設(shè)備上內(nèi)核無線協(xié)議棧將通知用戶終端上線;當(dāng)用戶終端STA和無線接入設(shè)備解除上線關(guān)聯(lián)時(shí),無線接入設(shè)備上內(nèi)核無線協(xié)議棧將通知用戶終端下線。
但在上線關(guān)聯(lián)或解除上線關(guān)聯(lián)時(shí),由于每個(gè)廠商的終端行為不一樣,用戶終端STA會(huì)多次上線關(guān)聯(lián)無線接入設(shè)備,或用戶終端STA從無線接入設(shè)備上多次解除上線關(guān)聯(lián);會(huì)導(dǎo)致內(nèi)核無線協(xié)議棧上通知發(fā)生錯(cuò)亂,使得用戶上下線事件無法一一對(duì)應(yīng);進(jìn)而影響用戶終端STA在無線接入設(shè)備上運(yùn)行狀態(tài),嚴(yán)重影響了用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供的技術(shù)方案如下:
本發(fā)明提供一種用戶終端上下線的處理方法,包括以下步驟:S10、在用戶終端上線或下線時(shí),接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文或下線請(qǐng)求報(bào)文;S20、根據(jù)接收到的上線請(qǐng)求報(bào)文或下線請(qǐng)求報(bào)文,構(gòu)造用戶上線事件消息或用戶下線事件消息;S40、檢查所述用戶上線事件消息或用戶下線事件消息中用戶終端標(biāo)識(shí)信息是否存在于無線接入設(shè)備上;S50、當(dāng)所述用戶終端標(biāo)識(shí)信息不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,對(duì)所述用戶終端進(jìn)行上線處理;S60、當(dāng)所述用戶終端標(biāo)識(shí)信息存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,對(duì)所述用戶終端進(jìn)行下線處理。
進(jìn)一步優(yōu)選的,所述步驟S40進(jìn)一步還包括:S41、當(dāng)所述用戶終端標(biāo)識(shí)信息為用戶終端MAC地址時(shí),檢查所述用戶上線事件消息中用戶終端MAC地址是否存在于所述無線接入設(shè)備上;
所述步驟S50進(jìn)一步還包括:S511、當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,在用戶管理進(jìn)程上創(chuàng)建用戶終端對(duì)應(yīng)的上線用戶終端對(duì)象;S512、根據(jù)創(chuàng)建的上線用戶終端對(duì)象,在內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行創(chuàng)建所述上線用戶終端對(duì)象對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的上線處理。
進(jìn)一步優(yōu)選的,在所述步驟S60進(jìn)一步還包括:S611、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,進(jìn)一步檢查所述用戶上線事件消息中SSID名字與所述無線接入設(shè)備上保存的歷史SSID名字是否相同;S612、當(dāng)所述SSID名字與所述歷史SSID名字相同時(shí),則更新所述用戶終端的上線狀態(tài)信息;S613、當(dāng)所述SSID名字與所述歷史SSID名字不同時(shí),則在所述用戶管理進(jìn)程上刪除已保存的歷史上線終端對(duì)象后,執(zhí)行步驟S511。
進(jìn)一步優(yōu)選的,所述步驟S60進(jìn)一步還包括:S621、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,進(jìn)一步檢查所述用戶下線事件消息中空口名字與所述無線接入設(shè)備上保存的歷史空口名字是否相同;S622、當(dāng)所述空口名字與所述歷史空口名字相同時(shí),則在所述內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行刪除所述用戶終端對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的下線處理。
進(jìn)一步優(yōu)選的,還包括以下步驟:S70、在所述內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建或刪除所述轉(zhuǎn)發(fā)表項(xiàng)后,對(duì)所述用戶終端進(jìn)行上線狀態(tài)管理或下線狀態(tài)管理。
進(jìn)一步優(yōu)選的,還包括以下步驟:S30、在構(gòu)建所述用戶上線事件消息后,檢查所述無線接入設(shè)備上接入的用戶終端數(shù)是否超過預(yù)設(shè)用戶終端數(shù);S31、當(dāng)所述用戶終端數(shù)超過預(yù)設(shè)用戶終端數(shù)時(shí),則禁止所述用戶終端接入無線接入設(shè)備;否則,執(zhí)行步驟S41。
進(jìn)一步優(yōu)選的,所述步驟S20進(jìn)一步包括:S21、利用內(nèi)核無線協(xié)議棧構(gòu)造所述用戶上線事件消息或用戶下線事件消息;S22、發(fā)送所述用戶上線事件消息或用戶下線事件消息給用戶管理進(jìn)程。
本發(fā)明還提供一種處理用戶終端上下線的無線接入設(shè)備,包括:接收模塊,用于在用戶終端上線或下線時(shí),接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文或下線請(qǐng)求報(bào)文;消息構(gòu)造模塊,用于根據(jù)接收到的上線請(qǐng)求報(bào)文或下線請(qǐng)求報(bào)文,構(gòu)造用戶上線事件消息或用戶下線事件消息;檢查模塊,用于檢查所述用戶上線事件消息或用戶下線事件消息中用戶終端標(biāo)識(shí)信息是否存在于無線接入設(shè)備上;處理模塊,用于當(dāng)所述用戶終端標(biāo)識(shí)信息不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,對(duì)所述用戶終端進(jìn)行上線處理;所述處理模塊,還用于當(dāng)所述用戶終端標(biāo)識(shí)信息存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,對(duì)所述用戶終端進(jìn)行下線處理。
進(jìn)一步優(yōu)選的,所述檢查模塊,用于當(dāng)所述用戶終端標(biāo)識(shí)信息為用戶終端MAC地址時(shí),檢查所述用戶上線事件消息中用戶終端MAC地址是否存在于所述無線接入設(shè)備上;
所述處理模塊包括:對(duì)象創(chuàng)建子模塊,用于當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,在用戶管理進(jìn)程上創(chuàng)建用戶終端對(duì)應(yīng)的上線用戶終端對(duì)象;表項(xiàng)創(chuàng)建子模塊,用于根據(jù)創(chuàng)建的上線用戶終端對(duì)象,在內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行創(chuàng)建所述上線用戶終端對(duì)象對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的上線處理。
進(jìn)一步優(yōu)選的,所述檢查模塊,還用于當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息,進(jìn)一步檢查所述用戶上線事件消息中SSID名字與所述無線接入設(shè)備上保存的歷史SSID名字是否相同;所述處理模塊還包括更新子模塊,用于當(dāng)所述SSID名字與所述歷史SSID名字相同時(shí),則更新所述用戶終端的上線狀態(tài)信息;所述處理模塊還包括對(duì)象刪除子模塊,用于當(dāng)所述SSID名字與所述歷史SSID名字不同時(shí),則在所述用戶管理進(jìn)程上刪除已保存的歷史上線終端對(duì)象;所述檢查模塊,還用于當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,進(jìn)一步檢查所述用戶下線事件消息中空口名字與所述無線接入設(shè)備上保存的歷史空口名字是否相同;所述處理模塊還包括表項(xiàng)刪除子模塊,用于當(dāng)所述空口名字與所述歷史空口名字相同時(shí),則在所述內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行刪除所述用戶終端對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的下線處理。
與現(xiàn)有技術(shù)相比,本發(fā)明提供一種用戶終端上下線的處理方法及無線接入設(shè)備,具有以下有益效果:
1)本發(fā)明中當(dāng)用戶終端連入無線接入設(shè)備后,會(huì)保存用戶終端標(biāo)識(shí)信息;根據(jù)用戶終端發(fā)送的上下線請(qǐng)求報(bào)文構(gòu)造用戶上下線事件消息,檢查用戶上下線事件消息中用戶終端標(biāo)識(shí)信息是否存在于無線接入設(shè)備上;當(dāng)用戶終端標(biāo)識(shí)信息不在無線接入設(shè)備上時(shí),對(duì)用戶終端進(jìn)行上線處理;當(dāng)用戶終端標(biāo)識(shí)信息在無線接入設(shè)備上時(shí),對(duì)用戶終端進(jìn)行下線處理;從而避免已上線的用戶終端,用戶終端再多次上線;以及已下線的用戶終端,用戶終端再多次下線等情況發(fā)生;確保用戶終端正常上下線,提高用戶體驗(yàn)。
2)本發(fā)明中當(dāng)用戶終端MAC地址不存在于無線接入設(shè)備上時(shí),用戶終端未接入無線接入設(shè)備,根據(jù)用戶上線事件消息,在用戶管理進(jìn)程上創(chuàng)上線用戶終端對(duì)象,以及在內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng);進(jìn)而為用戶終端構(gòu)建上線環(huán)境。
3)本發(fā)明中在用戶終端上線處理過程中,當(dāng)用戶終端MAC地址存在于無線接入設(shè)備上時(shí),用戶終端已連入無線接入設(shè)備,由于同一無線接入設(shè)備上可以設(shè)置多個(gè)SSID名字;檢查用戶終端需要連入的SSID名字與用戶終端已連入的歷史SSID名字相同時(shí),僅需更新用戶終端連入該SSID名稱下的2.4G無線網(wǎng)絡(luò)、5G無線網(wǎng)絡(luò),用戶終端無需再次連接。
當(dāng)用戶終端需要連入的SSID名字與用戶終端已連入的歷史SSID名字不同時(shí),需先在用戶管理進(jìn)程上刪除歷史上線終端對(duì)象,也即先對(duì)用戶終端進(jìn)行下線處理;再對(duì)用戶終端進(jìn)行上線處理;從而防止出現(xiàn)多次上線的情況發(fā)生,保證用戶終端能夠正常上線。
4)本發(fā)明中在用戶終端下線處理過程中,當(dāng)用戶終端MAC地址存在于無線接入設(shè)備上時(shí),用戶終端已連入無線接入設(shè)備;判斷用戶終端是否需要從已連入的空口名字上進(jìn)行下線,當(dāng)用戶終端需要從已連入的空口名字上進(jìn)行下線時(shí),直接刪除轉(zhuǎn)發(fā)表項(xiàng);當(dāng)用戶終端需要從非已連入的空口名字上進(jìn)行下線時(shí),則該用戶下線事件消息無效、不對(duì)用戶終端進(jìn)行任何處理。當(dāng)用戶終端MAC地址不存在于無線接入設(shè)備上時(shí),該用戶下線事件消息無效、不對(duì)用戶終端進(jìn)行任何處理;從而防止用戶終端進(jìn)行多次下線的發(fā)生;避免了由于用戶終端上下線的亂序而導(dǎo)致用戶終端的離線,以及避免了影響用戶體驗(yàn)。
附圖說明
下面將以明確易懂的方式,結(jié)合附圖說明優(yōu)選實(shí)施方式,對(duì)一種用戶終端上下線的處理方法及無線接入設(shè)備的上述特性、技術(shù)特征、優(yōu)點(diǎn)及其實(shí)現(xiàn)方式予以進(jìn)一步說明。
圖1是本發(fā)明一種用戶終端上下線的處理方法的流程示意圖;
圖2是本發(fā)明再一種用戶終端上下線的處理方法的流程示意圖;
圖3是本發(fā)明另一種用戶終端上下線的處理方法的流程示意圖;
圖4是本發(fā)明中用戶終端上下線的處理方法的部分流程示意圖;
圖5是本發(fā)明一種處理用戶終端上下線的無線接入設(shè)備的組成結(jié)構(gòu)示意圖;
圖6是本發(fā)明中處理模塊的組成結(jié)構(gòu)示意圖;
圖7是本發(fā)明中用戶終端上線處理方法的流程示意圖;
圖8是本發(fā)明中用戶終端下線處理方法的流程示意圖。
附圖標(biāo)號(hào)說明:
10、接收模塊,20、消息構(gòu)造模塊,30、發(fā)送模塊,40、檢查模塊,50、處理模塊,60、接入禁止模塊,70、狀態(tài)管理模塊;
51、對(duì)象創(chuàng)建子模塊,52、表項(xiàng)創(chuàng)建子模塊,53、對(duì)象刪除子模塊,54、表項(xiàng)刪除子模塊,55、對(duì)更新子模塊。
具體實(shí)施方式
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)照附圖說明本發(fā)明的具體實(shí)施方式。顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖,并獲得其他的實(shí)施方式。
為使圖面簡潔,各圖中只示意性地表示出了與本發(fā)明相關(guān)的部分,它們并不代表其作為產(chǎn)品的實(shí)際結(jié)構(gòu)。另外,以使圖面簡潔便于理解,在有些圖中具有相同結(jié)構(gòu)或功能的部件,僅示意性地繪示了其中的一個(gè),或僅標(biāo)出了其中的一個(gè)。在本文中,“一個(gè)”不僅表示“僅此一個(gè)”,也可以表示“多于一個(gè)”的情形。
如圖1所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種用戶終端上下線的處理方法,包括以下步驟:S10、在用戶終端上線或下線時(shí),無線接入設(shè)備接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),所述上線請(qǐng)求報(bào)文(Association Request報(bào)文)、下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文)均包括用戶終端標(biāo)識(shí)信息、無線網(wǎng)絡(luò)信息,用戶終端標(biāo)識(shí)信息包括用戶終端MAC地址,無線網(wǎng)絡(luò)信息包括2.4G無線網(wǎng)絡(luò)、5G無線網(wǎng)絡(luò);
S20、無線接入設(shè)備根據(jù)接收到的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),利用內(nèi)核無線協(xié)議棧構(gòu)造用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息);
S40、無線接入設(shè)備檢查所述用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息)中用戶終端標(biāo)識(shí)信息是否存在于無線接入設(shè)備上;在用戶終端接入無線接入設(shè)備后,在無線接入設(shè)備上保存有該用戶終端對(duì)應(yīng)的用戶終端標(biāo)識(shí)信息;
S50、當(dāng)所述用戶終端標(biāo)識(shí)信息不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),對(duì)所述用戶終端進(jìn)行上線處理;
S60、當(dāng)所述用戶終端標(biāo)識(shí)信息存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息(client out消息),對(duì)所述用戶終端進(jìn)行下線處理。
具體的,在用戶終端上線或下線時(shí),用戶終端會(huì)發(fā)送上線請(qǐng)求報(bào)文(也可以是關(guān)聯(lián)請(qǐng)求報(bào)文)或下線請(qǐng)求報(bào)文(也可以是關(guān)聯(lián)解除請(qǐng)求報(bào)文)。接收上線請(qǐng)求報(bào)文(也可以是關(guān)聯(lián)請(qǐng)求報(bào)文)或下線請(qǐng)求報(bào)文(也可以是關(guān)聯(lián)解除請(qǐng)求報(bào)文)后,構(gòu)造用戶上線事件消息或用戶下線事件消息。
用戶定義用戶上線事件消息(client in消息)、用戶下線事件消息(client out消息)均包括:
netlink消息頭:包含消息長度和消息類型(上線消息類型、下線消息類型),該netlink消息頭的長度為16字節(jié);
MAC:用戶終端MAC地址,該MAC的長度為6字節(jié);
SSIDName:用戶終端所關(guān)聯(lián)無線接入設(shè)備的SSID名字,該SSIDName的長度為64字節(jié);SSID名字呈現(xiàn)在用戶終端上,在同一無線接入設(shè)備上,用戶可以自定義設(shè)置多個(gè)SSID名字;
Bassid:用戶終端關(guān)聯(lián)上無線接入設(shè)備的SSID MAC地址,該Bassid的長度為6字節(jié);
Rssi:無線接入設(shè)備掃描到用戶終端上的終端信號(hào)強(qiáng)度,該Rssi的長度為1字節(jié);
is2_4G:用戶終端關(guān)聯(lián)上無線接入設(shè)備的2.4G無線網(wǎng)絡(luò)還是5G無線網(wǎng)絡(luò),2.4G無線網(wǎng)絡(luò)置1,5G無線網(wǎng)絡(luò)置0,該is2_4G的長度為1字節(jié);
intfName:用戶終端關(guān)聯(lián)上無線接入設(shè)備的空口名字,該intfName的長度為16字節(jié);空口名字呈現(xiàn)在無線接入設(shè)備上,空口名字與SSID名字相對(duì)應(yīng),只是二者存在于不同設(shè)備上。
時(shí)間戳:記錄收到用戶終端上線事件消息的時(shí)間或用戶終端下線事件消息的時(shí)間,該時(shí)間戳的長度為4字節(jié)。
如圖2所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種用戶終端上下線的處理方法,包括以下步驟:S10、在用戶終端上線或下線時(shí),無線接入設(shè)備接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),所述上線請(qǐng)求報(bào)文(Association Request報(bào)文)、下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文)均包括用戶終端標(biāo)識(shí)信息、無線網(wǎng)絡(luò)信息,用戶終端標(biāo)識(shí)信息包括用戶終端MAC地址,無線網(wǎng)絡(luò)信息包括2.4G無線網(wǎng)絡(luò)、5G無線網(wǎng)絡(luò);
S20、無線接入設(shè)備根據(jù)接收到的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),利用內(nèi)核無線協(xié)議棧構(gòu)造用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息);
S41、當(dāng)所述用戶終端標(biāo)識(shí)信息為用戶終端MAC地址時(shí),檢查所述用戶上線事件消息(client in消息)中用戶終端MAC地址是否存在于所述無線接入設(shè)備上;
S511、當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),在用戶管理進(jìn)程上創(chuàng)建用戶終端對(duì)應(yīng)的上線用戶終端對(duì)象;
S512、根據(jù)創(chuàng)建的上線用戶終端對(duì)象,通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行創(chuàng)建所述上線用戶終端對(duì)象對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的上線處理。
S611、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),進(jìn)一步檢查所述用戶上線事件消息(client in消息)中SSID名字與所述無線接入設(shè)備上保存的歷史SSID名字是否相同;
S612、當(dāng)所述SSID名字與所述歷史SSID名字相同時(shí),則更新所述用戶終端的上線狀態(tài)信息,所述上線狀態(tài)信息包括2.4G無線網(wǎng)絡(luò)狀態(tài)信息、5G無線網(wǎng)絡(luò)狀態(tài)信息;
S613、當(dāng)所述SSID名字與所述歷史SSID名字不同時(shí),則在所述用戶管理進(jìn)程上刪除已保存的歷史上線終端對(duì)象后,執(zhí)行步驟S511。
S621、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息(client out消息),進(jìn)一步檢查所述用戶下線事件消息(client out消息)中空口名字與所述無線接入設(shè)備上保存的歷史空口名字是否相同;當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,無線接入設(shè)備對(duì)用戶終端不做任何處理。
S622、當(dāng)所述空口名字與所述歷史空口名字相同時(shí),則通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在所述內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行刪除所述用戶終端對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的下線處理。當(dāng)所述空口名字與所述歷史空口名字不同時(shí),則無線接入設(shè)備對(duì)用戶終端不做任何處理。
具體的,在用戶終端上線處理過程中,首先判斷在無線接入設(shè)備上是否已保存需要上線的用戶終端的用戶終端MAC地址;當(dāng)用戶終端MAC地址未保存在無線接入設(shè)備上,說明該用戶終端未連入該無線接入設(shè)備。直接根據(jù)用戶上線事件消息在用戶管理進(jìn)程上創(chuàng)建上線用戶終端對(duì)象,以及在內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng),從而為用戶終端上線創(chuàng)建上線基礎(chǔ)條件。
當(dāng)用戶終端MAC地址已保存在無線接入設(shè)備上,說明該用戶終端已連入該無線接入設(shè)備。再通過判斷SSID名字與歷史SSID名字是否相同,判斷該用戶終端具體已連入無線接入設(shè)備上的哪個(gè)SSID。當(dāng)用戶終端再次連入無線接入設(shè)備時(shí),其再次需要接入的SSID與已接入的SSID相同時(shí),用戶終端不在再次上線,僅更新用戶終端在該SSID名字下的2.4G無線網(wǎng)絡(luò)狀態(tài)信息、5G無線網(wǎng)絡(luò)狀態(tài)信息。當(dāng)再次需要接入的SSID與已接入的SSID不同時(shí),則刪除歷史上線終端對(duì)象,也即先解除用戶之前的上線狀態(tài)后,再實(shí)現(xiàn)用戶終端的再次上線;從而防止用戶終端多次上線的情況發(fā)生。
在用戶終端下線處理過程中,首先判斷在無線接入設(shè)備上是否已保存需要上線的用戶終端的用戶終端MAC地址;當(dāng)用戶終端MAC地址未保存在無線接入設(shè)備上,說明該用戶終端未連入該無線接入設(shè)備,則不對(duì)用戶終端做出任何處理。當(dāng)用戶終端MAC地址已保存在無線接入設(shè)備上,說明該用戶終端已連入該無線接入設(shè)備,則通過判斷空口名字與歷史空口名字,來判斷用戶終端需要具體從哪個(gè)空口名字(空口名字與SSID名字對(duì)應(yīng),只是二者在不同的設(shè)備上進(jìn)行顯示)上進(jìn)行下線,當(dāng)空口名字與歷史空口名字相同時(shí),用戶終端需要從已連入的空口名字上進(jìn)行下線處理,下線處理包括在內(nèi)核轉(zhuǎn)發(fā)模塊上刪除轉(zhuǎn)發(fā)表項(xiàng);當(dāng)空口名字與歷史空口名字不同時(shí),該用戶下線事件消息無效,不會(huì)對(duì)用戶終端進(jìn)行下線處理;從而防止用戶終端出現(xiàn)多次下線,進(jìn)而擾亂用戶終端的正常上線或下線狀態(tài)。
如圖3、圖4所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種用戶終端上下線的處理方法,包括以下步驟:S10、在用戶終端上線或下線時(shí),無線接入設(shè)備接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),所述上線請(qǐng)求報(bào)文(Association Request報(bào)文)、下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文)均包括用戶終端標(biāo)識(shí)信息、無線網(wǎng)絡(luò)信息,用戶終端標(biāo)識(shí)信息包括用戶終端MAC地址,無線網(wǎng)絡(luò)信息包括2.4G無線網(wǎng)絡(luò)、5G無線網(wǎng)絡(luò);
S21、無線接入設(shè)備根據(jù)接收到的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),利用內(nèi)核無線協(xié)議棧構(gòu)造用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息);
S22、內(nèi)核通過netlink機(jī)制發(fā)送所述用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息)給用戶管理進(jìn)程。
S30、在構(gòu)建所述用戶上線事件消息(client in消息)后,檢查所述無線接入設(shè)備上接入的用戶終端數(shù)是否超過預(yù)設(shè)用戶終端數(shù);
S31、當(dāng)所述用戶終端數(shù)超過預(yù)設(shè)用戶終端數(shù)時(shí),則禁止所述用戶終端接入無線接入設(shè)備;否則,執(zhí)行步驟S41。
S41、當(dāng)所述用戶終端標(biāo)識(shí)信息為用戶終端MAC地址時(shí),檢查所述用戶上線事件消息(client in消息)中用戶終端MAC地址是否存在于所述無線接入設(shè)備上;
S511、當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),在用戶管理進(jìn)程上創(chuàng)建用戶終端對(duì)應(yīng)的上線用戶終端對(duì)象;
S512、根據(jù)創(chuàng)建的上線用戶終端對(duì)象,通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行創(chuàng)建所述上線用戶終端對(duì)象對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的上線處理。
S611、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),進(jìn)一步檢查所述用戶上線事件消息(client in消息)中SSID名字與所述無線接入設(shè)備上保存的歷史SSID名字是否相同;
S612、當(dāng)所述SSID名字與所述歷史SSID名字相同時(shí),則更新所述用戶終端的上線狀態(tài)信息,所述上線狀態(tài)信息包括2.4G無線網(wǎng)絡(luò)狀態(tài)信息、5G無線網(wǎng)絡(luò)狀態(tài)信息;
S613、當(dāng)所述SSID名字與所述歷史SSID名字不同時(shí),則在所述用戶管理進(jìn)程上刪除已保存的歷史上線終端對(duì)象后,執(zhí)行步驟S511。
S621、當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息(client out消息),進(jìn)一步檢查所述用戶下線事件消息(client out消息)中空口名字與所述無線接入設(shè)備上保存的歷史空口名字是否相同;當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,無線接入設(shè)備對(duì)用戶終端不做任何處理。
S622、當(dāng)所述空口名字與所述歷史空口名字相同時(shí),則通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在所述內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行刪除所述用戶終端對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的下線處理。當(dāng)所述空口名字與所述歷史空口名字不同時(shí),則無線接入設(shè)備對(duì)用戶終端不做任何處理。
S70、在所述內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建所述轉(zhuǎn)發(fā)表項(xiàng)后,對(duì)所述用戶終端進(jìn)行上線狀態(tài)管理;或者,在所述內(nèi)核轉(zhuǎn)發(fā)模塊上刪除所述轉(zhuǎn)發(fā)表項(xiàng)后,對(duì)所述用戶終端進(jìn)行下線狀態(tài)管理。
具體的,利用內(nèi)核無線協(xié)議棧構(gòu)造用戶上下線事件消息,再轉(zhuǎn)發(fā)給用戶管理進(jìn)程;有助于降低開發(fā)難度。在實(shí)現(xiàn)用戶終端上線前,首先判斷無線接入設(shè)備上已經(jīng)接入的用戶終端數(shù)是否超過預(yù)設(shè)用戶終端數(shù),可以根據(jù)網(wǎng)絡(luò)寬帶情況,以及用戶終端上網(wǎng)的需要,設(shè)定預(yù)設(shè)用戶終端數(shù);在用戶終端數(shù)超過預(yù)設(shè)用戶終端數(shù)時(shí),禁止新的用戶終端上線;從而保證用戶終端的上網(wǎng)要求。
在內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)后,為用戶終端上線創(chuàng)建了上線基礎(chǔ)條件;在內(nèi)核轉(zhuǎn)發(fā)模塊上刪除轉(zhuǎn)發(fā)表項(xiàng)后,為用戶終端下線創(chuàng)建了下線條件;在用戶終端上下線的處理方法用于商業(yè)時(shí),會(huì)對(duì)用戶終端的上線狀態(tài)或下線狀態(tài)進(jìn)行管理;例如:在為用戶終端上線創(chuàng)建了上線基礎(chǔ)條件后,對(duì)用戶終端的上線時(shí)間進(jìn)行管理(定義用戶終端可以上線多長時(shí)間);在為用戶終端下線創(chuàng)建下線基礎(chǔ)條件后,對(duì)用戶終端的下線時(shí)間進(jìn)行管理(定義用戶終端在多長時(shí)間內(nèi)不能再次上線);不僅可以防止某一用戶終端一直處于上線狀態(tài),導(dǎo)致其他用戶終端上線;還可以借此插入商家公眾信息,供用戶閱讀。
如圖5、圖6所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種處理用戶終端上下線的無線接入設(shè)備,包括處理模塊50,還包括:
接收模塊10,用于在用戶終端上線或下線時(shí),無線接入設(shè)備接收所述用戶終端已發(fā)送的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),所述上線請(qǐng)求報(bào)文(Association Request報(bào)文)、下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文)均包括用戶終端標(biāo)識(shí)信息、無線網(wǎng)絡(luò)信息,用戶終端標(biāo)識(shí)信息包括用戶終端MAC地址,無線網(wǎng)絡(luò)信息包括2.4G無線網(wǎng)絡(luò)、5G無線網(wǎng)絡(luò);
消息構(gòu)造模塊20,用于無線接入設(shè)備根據(jù)接收到的上線請(qǐng)求報(bào)文(Association Request報(bào)文)或下線請(qǐng)求報(bào)文(Disassociation Request報(bào)文),利用內(nèi)核無線協(xié)議棧構(gòu)造用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息);
發(fā)送模塊30,用于內(nèi)核通過netlink機(jī)制發(fā)送所述用戶上線事件消息(client in消息)或用戶下線事件消息(client out消息)給用戶管理進(jìn)程。
檢查模塊40,用于在構(gòu)建所述用戶上線事件消息(client in消息)后,檢查所述無線接入設(shè)備上接入的用戶終端數(shù)是否超過預(yù)設(shè)用戶終端數(shù);
接入禁止模塊60,用于當(dāng)所述用戶終端數(shù)超過預(yù)設(shè)用戶終端數(shù)時(shí),則禁止所述用戶終端接入無線接入設(shè)備。
所述檢查模塊40,還用于當(dāng)所述用戶終端數(shù)未超過預(yù)設(shè)用戶終端數(shù)時(shí),當(dāng)所述用戶終端標(biāo)識(shí)信息為用戶終端MAC地址時(shí),檢查所述用戶上線事件消息(client in消息)中用戶終端MAC地址是否存在于所述無線接入設(shè)備上;
所述處理模塊50包括對(duì)象創(chuàng)建子模塊51,用于當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),在用戶管理進(jìn)程上創(chuàng)建用戶終端對(duì)應(yīng)的上線用戶終端對(duì)象;
所述處理模塊50還包括表項(xiàng)創(chuàng)建子模塊52,用于根據(jù)創(chuàng)建的上線用戶終端對(duì)象,通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行創(chuàng)建所述上線用戶終端對(duì)象對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的上線處理。
所述檢查模塊40,還用于當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶上線事件消息(client in消息),進(jìn)一步檢查所述用戶上線事件消息(client in消息)中SSID名字與所述無線接入設(shè)備上保存的歷史SSID名字是否相同;
所述處理模塊50還包括更新子模塊55,用于當(dāng)所述SSID名字與所述歷史SSID名字相同時(shí),則更新所述用戶終端的上線狀態(tài)信息,所述上線狀態(tài)信息包括2.4G無線網(wǎng)絡(luò)狀態(tài)信息、5G無線網(wǎng)絡(luò)狀態(tài)信息;
所述處理模塊50還包括對(duì)象刪除子模塊53,用于當(dāng)所述SSID名字與所述歷史SSID名字不同時(shí),則在所述用戶管理進(jìn)程上刪除已保存的歷史上線終端對(duì)象后,執(zhí)行步驟S511。
所述檢查模塊40,用于當(dāng)所述用戶終端MAC地址存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息(client out消息),進(jìn)一步檢查所述用戶下線事件消息(client out消息)中空口名字與所述無線接入設(shè)備上保存的歷史空口名字是否相同;當(dāng)所述用戶終端MAC地址不存在于所述無線接入設(shè)備上時(shí),則根據(jù)所述用戶下線事件消息,無線接入設(shè)備對(duì)用戶終端不做任何處理。
所述處理模塊50還包括表項(xiàng)刪除子模塊54,用于當(dāng)所述空口名字與所述歷史空口名字相同時(shí),則通過用戶管理進(jìn)程接口ioctl下發(fā)內(nèi)核轉(zhuǎn)發(fā)模塊創(chuàng)建轉(zhuǎn)發(fā)表項(xiàng)的創(chuàng)建指令,在所述內(nèi)核轉(zhuǎn)發(fā)模塊上進(jìn)行刪除所述用戶終端對(duì)應(yīng)的轉(zhuǎn)發(fā)表項(xiàng)的下線處理。當(dāng)所述空口名字與所述歷史空口名字不同時(shí),則無線接入設(shè)備對(duì)用戶終端不做任何處理。
狀態(tài)管理模塊70,用于在所述內(nèi)核轉(zhuǎn)發(fā)模塊上創(chuàng)建所述轉(zhuǎn)發(fā)表項(xiàng)后,對(duì)所述用戶終端進(jìn)行上線狀態(tài)管理;或者,在所述內(nèi)核轉(zhuǎn)發(fā)模塊上刪除所述轉(zhuǎn)發(fā)表項(xiàng)后,對(duì)所述用戶終端進(jìn)行下線狀態(tài)管理。
如圖7、圖8所示,根據(jù)本發(fā)明的一個(gè)實(shí)施例,一種用戶終端上下線的處理方法,包括以下步驟:用戶上線事件的過濾流程如下,如圖7所示:
1)AP收到終端的關(guān)聯(lián)(Assocaition)報(bào)文;
2)內(nèi)核無線協(xié)議棧構(gòu)造用戶上線事件(Client in)消息;
3)內(nèi)核通過netlink機(jī)制發(fā)送用戶上線事件給用戶管理進(jìn)程;
4)用戶管理進(jìn)程接收用戶終端上線事件;
5)檢查AP的SSID用戶數(shù)是否已達(dá)最大連接數(shù);
6)如超過該AP的SSID最大用戶數(shù),不允許終端接入;
7)檢查終端Mac是否已經(jīng)在用戶管理進(jìn)程存在;
8)如存在,檢查SSID名字是否相同;
9)如相同,認(rèn)為是重復(fù)上報(bào)的Client in信息,需進(jìn)行過濾,只是更新用戶管理進(jìn)程里的終端信息;
10)如SSID名字不相同,則認(rèn)為終端已經(jīng)切換了SSID,但沒有上報(bào)下線消息,需刪除用戶管理進(jìn)程里的終端信息;
11)如終端Mac不存在或由于SSID名字不相同,則認(rèn)為是新的終端上線,需在用戶管理進(jìn)程創(chuàng)建新的終端對(duì)象(obj);
12)用戶管理進(jìn)程通過IOCTL下發(fā)終端信息到內(nèi)核轉(zhuǎn)發(fā)模塊;
13)用戶管理進(jìn)程發(fā)送終端上線信息給其它模塊進(jìn)行處理。
用戶下線事件處理流程如下,如圖8所示:
1)AP收到終端解關(guān)聯(lián)報(bào)文(Disassociation);
2)內(nèi)核無線協(xié)議棧構(gòu)造自定義的用戶下線事件消息(Client out);
3)內(nèi)核通過netlink消息發(fā)送用戶下線消息給用戶管理進(jìn)程;
4)用戶管理進(jìn)程接收到用戶下線消息;
5)通過終端Mac檢查終端在用戶管理進(jìn)程是否存在;
6)如不存在,認(rèn)為是重復(fù)的用戶下線事件,需過濾,不做任何處理;
7)如存在,需檢查消息中的空口名字是否相同;
8)如相同,則認(rèn)為是正確的用戶下線消息,需通知內(nèi)核轉(zhuǎn)發(fā)模塊,刪除該終端;
9)用戶管理進(jìn)程發(fā)送用戶下線事件給其它進(jìn)程繼續(xù)處理。
用戶上下線事件消息定義:
Netlink消息頭:包含消息長度和消息類型(Client in or out),16字節(jié);
MAC:收到終端的MAC地址,6字節(jié);
SSIDName:終端關(guān)聯(lián)上的SSID名字,64字節(jié);
bssid:終端關(guān)聯(lián)上的SSID MAC地址,6字節(jié);
rssi:AP掃描到的終端信號(hào)強(qiáng)度,1字節(jié);
is2_4G:終端關(guān)聯(lián)上AP是2.4G還是5G,2.4G為1,5G為0,1字節(jié);
intfName:終端關(guān)聯(lián)上AP的空口名字,16字節(jié);
時(shí)間戳:記錄收到終端上下線事件的時(shí)間,4字節(jié)。
本發(fā)明通過構(gòu)造自定義的用戶終端上下線事件消息,在用戶管理進(jìn)程基于消息中攜帶的信息;終端上線事件通過用戶進(jìn)程檢查終端Mac地址和SSID名字,過濾掉冗余的上線事件;終端下線事件通過用戶進(jìn)程檢查終端Mac地址和無線空口名字,過濾掉冗余的下線事件;對(duì)終端上下線事件進(jìn)行過濾,避免了由于終端上下線事件的亂序,影響了終端的運(yùn)行狀態(tài),避免影響用戶體驗(yàn)。
本發(fā)明在內(nèi)核無線協(xié)議棧構(gòu)造終端上線(Client in)和下線(Client out)事件,通過netlink消息發(fā)送給用戶管理進(jìn)程,用戶管理進(jìn)程對(duì)終端上下線事件進(jìn)行過濾,避免終端多次Client in或out,對(duì)終端運(yùn)行狀態(tài)產(chǎn)生影響;同時(shí),由于目前大多數(shù)終端已同時(shí)支持2.4G和5G WIFI網(wǎng)絡(luò),這兩種網(wǎng)絡(luò)的Client in或out事件,如果不加區(qū)分,將使終端的運(yùn)行狀態(tài)產(chǎn)生混亂。
應(yīng)當(dāng)說明的是,上述實(shí)施例均可根據(jù)需要自由組合。以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。