[0035] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。
[0036] 为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。
[0037] 如图1所示,根据本发明的一个实施例,一种用户终端上下线的处理方法,包括以下步骤:S10、在用户终端上线或下线时,无线接入设备接收所述用户终端已发送的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),所述上线请求报文(Association Request报文)、下线请求报文(Disassociation Request报文)均包括用户终端标识信息、无线网络信息,用户终端标识信息包括用户终端MAC地址,无线网络信息包括2.4G无线网络、5G无线网络;
[0038] S20、无线接入设备根据接收到的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),利用内核无线协议栈构造用户上线事件消息(client in消息)或用户下线事件消息(client out消息);
[0039] S40、无线接入设备检查所述用户上线事件消息(client in消息)或用户下线事件消息(client out消息)中用户终端标识信息是否存在于无线接入设备上;在用户终端接入无线接入设备后,在无线接入设备上保存有该用户终端对应的用户终端标识信息;
[0040] S50、当所述用户终端标识信息不存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),对所述用户终端进行上线处理;
[0041] S60、当所述用户终端标识信息存在于所述无线接入设备上时,则根据所述用户下线事件消息(client out消息),对所述用户终端进行下线处理。
[0042] 具体的,在用户终端上线或下线时,用户终端会发送上线请求报文(也可以是关联请求报文)或下线请求报文(也可以是关联解除请求报文)。接收上线请求报文(也可以是关联请求报文)或下线请求报文(也可以是关联解除请求报文)后,构造用户上线事件消息或用户下线事件消息。
[0043] 用户定义用户上线事件消息(client in消息)、用户下线事件消息(client out消息)均包括:
[0044] netlink消息头:包含消息长度和消息类型(上线消息类型、下线消息类型),该netlink消息头的长度为16字节;
[0045] MAC:用户终端MAC地址,该MAC的长度为6字节;
[0046] SSIDName:用户终端所关联无线接入设备的SSID名字,该SSIDName的长度为64字节;SSID名字呈现在用户终端上,在同一无线接入设备上,用户可以自定义设置多个SSID名字;
[0047] Bassid:用户终端关联上无线接入设备的SSID MAC地址,该Bassid的长度为6字节;
[0048] Rssi:无线接入设备扫描到用户终端上的终端信号强度,该Rssi的长度为1字节;
[0049] is2_4G:用户终端关联上无线接入设备的2.4G无线网络还是5G无线网络,2.4G无线网络置1,5G无线网络置0,该is2_4G的长度为1字节;
[0050] intfName:用户终端关联上无线接入设备的空口名字,该intfName的长度为16字节;空口名字呈现在无线接入设备上,空口名字与SSID名字相对应,只是二者存在于不同设备上。
[0051] 时间戳:记录收到用户终端上线事件消息的时间或用户终端下线事件消息的时间,该时间戳的长度为4字节。
[0052] 如图2所示,根据本发明的一个实施例,一种用户终端上下线的处理方法,包括以下步骤:S10、在用户终端上线或下线时,无线接入设备接收所述用户终端已发送的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),所述上线请求报文(Association Request报文)、下线请求报文(Disassociation Request报文)均包括用户终端标识信息、无线网络信息,用户终端标识信息包括用户终端MAC地址,无线网络信息包括2.4G无线网络、5G无线网络;
[0053] S20、无线接入设备根据接收到的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),利用内核无线协议栈构造用户上线事件消息(client in消息)或用户下线事件消息(client out消息);
[0054] S41、当所述用户终端标识信息为用户终端MAC地址时,检查所述用户上线事件消息(client in消息)中用户终端MAC地址是否存在于所述无线接入设备上;
[0055] S511、当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),在用户管理进程上创建用户终端对应的上线用户终端对象;
[0056] S512、根据创建的上线用户终端对象,通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在内核转发模块上进行创建所述上线用户终端对象对应的转发表项的上线处理。
[0057] S611、当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),进一步检查所述用户上线事件消息(client in消息)中SSID名字与所述无线接入设备上保存的历史SSID名字是否相同;
[0058] S612、当所述SSID名字与所述历史SSID名字相同时,则更新所述用户终端的上线状态信息,所述上线状态信息包括2.4G无线网络状态信息、5G无线网络状态信息;
[0059] S613、当所述SSID名字与所述历史SSID名字不同时,则在所述用户管理进程上删除已保存的历史上线终端对象后,执行步骤S511。
[0060] S621、当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户下线事件消息(client out消息),进一步检查所述用户下线事件消息(client out消息)中空口名字与所述无线接入设备上保存的历史空口名字是否相同;当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户下线事件消息,无线接入设备对用户终端不做任何处理。
[0061] S622、当所述空口名字与所述历史空口名字相同时,则通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在所述内核转发模块上进行删除所述用户终端对应的转发表项的下线处理。当所述空口名字与所述历史空口名字不同时,则无线接入设备对用户终端不做任何处理。
[0062] 具体的,在用户终端上线处理过程中,首先判断在无线接入设备上是否已保存需要上线的用户终端的用户终端MAC地址;当用户终端MAC地址未保存在无线接入设备上,说明该用户终端未连入该无线接入设备。直接根据用户上线事件消息在用户管理进程上创建上线用户终端对象,以及在内核转发模块上创建转发表项,从而为用户终端上线创建上线基础条件。
[0063] 当用户终端MAC地址已保存在无线接入设备上,说明该用户终端已连入该无线接入设备。再通过判断SSID名字与历史SSID名字是否相同,判断该用户终端具体已连入无线接入设备上的哪个SSID。当用户终端再次连入无线接入设备时,其再次需要接入的SSID与已接入的SSID相同时,用户终端不在再次上线,仅更新用户终端在该SSID名字下的2.4G无线网络状态信息、5G无线网络状态信息。当再次需要接入的SSID与已接入的SSID不同时,则删除历史上线终端对象,也即先解除用户之前的上线状态后,再实现用户终端的再次上线;从而防止用户终端多次上线的情况发生。
[0064] 在用户终端下线处理过程中,首先判断在无线接入设备上是否已保存需要上线的用户终端的用户终端MAC地址;当用户终端MAC地址未保存在无线接入设备上,说明该用户终端未连入该无线接入设备,则不对用户终端做出任何处理。当用户终端MAC地址已保存在无线接入设备上,说明该用户终端已连入该无线接入设备,则通过判断空口名字与历史空口名字,来判断用户终端需要具体从哪个空口名字(空口名字与SSID名字对应,只是二者在不同的设备上进行显示)上进行下线,当空口名字与历史空口名字相同时,用户终端需要从已连入的空口名字上进行下线处理,下线处理包括在内核转发模块上删除转发表项;当空口名字与历史空口名字不同时,该用户下线事件消息无效,不会对用户终端进行下线处理;从而防止用户终端出现多次下线,进而扰乱用户终端的正常上线或下线状态。
[0065] 如图3、图4所示,根据本发明的一个实施例,一种用户终端上下线的处理方法,包括以下步骤:S10、在用户终端上线或下线时,无线接入设备接收所述用户终端已发送的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),所述上线请求报文(Association Request报文)、下线请求报文(Disassociation Request报文)均包括用户终端标识信息、无线网络信息,用户终端标识信息包括用户终端MAC地址,无线网络信息包括2.4G无线网络、5G无线网络;
[0066] S21、无线接入设备根据接收到的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),利用内核无线协议栈构造用户上线事件消息(client in消息)或用户下线事件消息(client out消息);
[0067] S22、内核通过netlink机制发送所述用户上线事件消息(client in消息)或用户下线事件消息(client out消息)给用户管理进程。
[0068] S30、在构建所述用户上线事件消息(client in消息)后,检查所述无线接入设备上接入的用户终端数是否超过预设用户终端数;
[0069] S31、当所述用户终端数超过预设用户终端数时,则禁止所述用户终端接入无线接入设备;否则,执行步骤S41。
[0070] S41、当所述用户终端标识信息为用户终端MAC地址时,检查所述用户上线事件消息(client in消息)中用户终端MAC地址是否存在于所述无线接入设备上;
[0071] S511、当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),在用户管理进程上创建用户终端对应的上线用户终端对象;
[0072] S512、根据创建的上线用户终端对象,通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在内核转发模块上进行创建所述上线用户终端对象对应的转发表项的上线处理。
[0073] S611、当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),进一步检查所述用户上线事件消息(client in消息)中SSID名字与所述无线接入设备上保存的历史SSID名字是否相同;
[0074] S612、当所述SSID名字与所述历史SSID名字相同时,则更新所述用户终端的上线状态信息,所述上线状态信息包括2.4G无线网络状态信息、5G无线网络状态信息;
[0075] S613、当所述SSID名字与所述历史SSID名字不同时,则在所述用户管理进程上删除已保存的历史上线终端对象后,执行步骤S511。
[0076] S621、当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户下线事件消息(client out消息),进一步检查所述用户下线事件消息(client out消息)中空口名字与所述无线接入设备上保存的历史空口名字是否相同;当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户下线事件消息,无线接入设备对用户终端不做任何处理。
[0077] S622、当所述空口名字与所述历史空口名字相同时,则通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在所述内核转发模块上进行删除所述用户终端对应的转发表项的下线处理。当所述空口名字与所述历史空口名字不同时,则无线接入设备对用户终端不做任何处理。
[0078] S70、在所述内核转发模块上创建所述转发表项后,对所述用户终端进行上线状态管理;或者,在所述内核转发模块上删除所述转发表项后,对所述用户终端进行下线状态管理。
[0079] 具体的,利用内核无线协议栈构造用户上下线事件消息,再转发给用户管理进程;有助于降低开发难度。在实现用户终端上线前,首先判断无线接入设备上已经接入的用户终端数是否超过预设用户终端数,可以根据网络宽带情况,以及用户终端上网的需要,设定预设用户终端数;在用户终端数超过预设用户终端数时,禁止新的用户终端上线;从而保证用户终端的上网要求。
[0080] 在内核转发模块上创建转发表项后,为用户终端上线创建了上线基础条件;在内核转发模块上删除转发表项后,为用户终端下线创建了下线条件;在用户终端上下线的处理方法用于商业时,会对用户终端的上线状态或下线状态进行管理;例如:在为用户终端上线创建了上线基础条件后,对用户终端的上线时间进行管理(定义用户终端可以上线多长时间);在为用户终端下线创建下线基础条件后,对用户终端的下线时间进行管理(定义用户终端在多长时间内不能再次上线);不仅可以防止某一用户终端一直处于上线状态,导致其他用户终端上线;还可以借此插入商家公众信息,供用户阅读。
[0081] 如图5、图6所示,根据本发明的一个实施例,一种处理用户终端上下线的无线接入设备,包括处理模块50,还包括:
[0082] 接收模块10,用于在用户终端上线或下线时,无线接入设备接收所述用户终端已发送的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),所述上线请求报文(Association Request报文)、下线请求报文(Disassociation Request报文)均包括用户终端标识信息、无线网络信息,用户终端标识信息包括用户终端MAC地址,无线网络信息包括2.4G无线网络、5G无线网络;
[0083] 消息构造模块20,用于无线接入设备根据接收到的上线请求报文(Association Request报文)或下线请求报文(Disassociation Request报文),利用内核无线协议栈构造用户上线事件消息(client in消息)或用户下线事件消息(client out消息);
[0084] 发送模块30,用于内核通过netlink机制发送所述用户上线事件消息(client in消息)或用户下线事件消息(client out消息)给用户管理进程。
[0085] 检查模块40,用于在构建所述用户上线事件消息(client in消息)后,检查所述无线接入设备上接入的用户终端数是否超过预设用户终端数;
[0086] 接入禁止模块60,用于当所述用户终端数超过预设用户终端数时,则禁止所述用户终端接入无线接入设备。
[0087] 所述检查模块40,还用于当所述用户终端数未超过预设用户终端数时,当所述用户终端标识信息为用户终端MAC地址时,检查所述用户上线事件消息(client in消息)中用户终端MAC地址是否存在于所述无线接入设备上;
[0088] 所述处理模块50包括对象创建子模块51,用于当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),在用户管理进程上创建用户终端对应的上线用户终端对象;
[0089] 所述处理模块50还包括表项创建子模块52,用于根据创建的上线用户终端对象,通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在内核转发模块上进行创建所述上线用户终端对象对应的转发表项的上线处理。
[0090] 所述检查模块40,还用于当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户上线事件消息(client in消息),进一步检查所述用户上线事件消息(client in消息)中SSID名字与所述无线接入设备上保存的历史SSID名字是否相同;
[0091] 所述处理模块50还包括更新子模块55,用于当所述SSID名字与所述历史SSID名字相同时,则更新所述用户终端的上线状态信息,所述上线状态信息包括2.4G无线网络状态信息、5G无线网络状态信息;
[0092] 所述处理模块50还包括对象删除子模块53,用于当所述SSID名字与所述历史SSID名字不同时,则在所述用户管理进程上删除已保存的历史上线终端对象后,执行步骤S511。
[0093] 所述检查模块40,用于当所述用户终端MAC地址存在于所述无线接入设备上时,则根据所述用户下线事件消息(client out消息),进一步检查所述用户下线事件消息(client out消息)中空口名字与所述无线接入设备上保存的历史空口名字是否相同;当所述用户终端MAC地址不存在于所述无线接入设备上时,则根据所述用户下线事件消息,无线接入设备对用户终端不做任何处理。
[0094] 所述处理模块50还包括表项删除子模块54,用于当所述空口名字与所述历史空口名字相同时,则通过用户管理进程接口ioctl下发内核转发模块创建转发表项的创建指令,在所述内核转发模块上进行删除所述用户终端对应的转发表项的下线处理。当所述空口名字与所述历史空口名字不同时,则无线接入设备对用户终端不做任何处理。
[0095] 状态管理模块70,用于在所述内核转发模块上创建所述转发表项后,对所述用户终端进行上线状态管理;或者,在所述内核转发模块上删除所述转发表项后,对所述用户终端进行下线状态管理。
[0096] 如图7、图8所示,根据本发明的一个实施例,一种用户终端上下线的处理方法,包括以下步骤:用户上线事件的过滤流程如下,如图7所示:
[0097] 1)AP收到终端的关联(Assocaition)报文;
[0098] 2)内核无线协议栈构造用户上线事件(Client in)消息;
[0099] 3)内核通过netlink机制发送用户上线事件给用户管理进程;
[0100] 4)用户管理进程接收用户终端上线事件;
[0101] 5)检查AP的SSID用户数是否已达最大连接数;
[0102] 6)如超过该AP的SSID最大用户数,不允许终端接入;
[0103] 7)检查终端Mac是否已经在用户管理进程存在;
[0104] 8)如存在,检查SSID名字是否相同;
[0105] 9)如相同,认为是重复上报的Client in信息,需进行过滤,只是更新用户管理进程里的终端信息;
[0106] 10)如SSID名字不相同,则认为终端已经切换了SSID,但没有上报下线消息,需删除用户管理进程里的终端信息;
[0107] 11)如终端Mac不存在或由于SSID名字不相同,则认为是新的终端上线,需在用户管理进程创建新的终端对象(obj);
[0108] 12)用户管理进程通过IOCTL下发终端信息到内核转发模块;
[0109] 13)用户管理进程发送终端上线信息给其它模块进行处理。
[0110] 用户下线事件处理流程如下,如图8所示:
[0111] 1)AP收到终端解关联报文(Disassociation);
[0112] 2)内核无线协议栈构造自定义的用户下线事件消息(Client out);
[0113] 3)内核通过netlink消息发送用户下线消息给用户管理进程;
[0114] 4)用户管理进程接收到用户下线消息;
[0115] 5)通过终端Mac检查终端在用户管理进程是否存在;
[0116] 6)如不存在,认为是重复的用户下线事件,需过滤,不做任何处理;
[0117] 7)如存在,需检查消息中的空口名字是否相同;
[0118] 8)如相同,则认为是正确的用户下线消息,需通知内核转发模块,删除该终端;
[0119] 9)用户管理进程发送用户下线事件给其它进程继续处理。
[0120] 用户上下线事件消息定义:
[0121] Netlink消息头:包含消息长度和消息类型(Client in or out),16字节;
[0122] MAC:收到终端的MAC地址,6字节;
[0123] SSIDName:终端关联上的SSID名字,64字节;
[0124] bssid:终端关联上的SSID MAC地址,6字节;
[0125] rssi:AP扫描到的终端信号强度,1字节;
[0126] is2_4G:终端关联上AP是2.4G还是5G,2.4G为1,5G为0,1字节;
[0127] intfName:终端关联上AP的空口名字,16字节;
[0128] 时间戳:记录收到终端上下线事件的时间,4字节。
[0129] 本发明通过构造自定义的用户终端上下线事件消息,在用户管理进程基于消息中携带的信息;终端上线事件通过用户进程检查终端Mac地址和SSID名字,过滤掉冗余的上线事件;终端下线事件通过用户进程检查终端Mac地址和无线空口名字,过滤掉冗余的下线事件;对终端上下线事件进行过滤,避免了由于终端上下线事件的乱序,影响了终端的运行状态,避免影响用户体验。
[0130] 本发明在内核无线协议栈构造终端上线(Client in)和下线(Client out)事件,通过netlink消息发送给用户管理进程,用户管理进程对终端上下线事件进行过滤,避免终端多次Client in或out,对终端运行状态产生影响;同时,由于目前大多数终端已同时支持2.4G和5G WIFI网络,这两种网络的Client in或out事件,如果不加区分,将使终端的运行状态产生混乱。
[0131] 应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。