一种家庭网关利用云平台识别接入设备类型的系统转让专利

申请号 : CN201610121236.X

文献号 : CN105577496B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王恺王志军

申请人 : 烽火通信科技股份有限公司

摘要 :

本发明公开了一种家庭网关利用云平台识别接入设备类型的系统,涉及家庭网关识别领域。该系统当家庭网关无法识别源MAC对应的设备类型信息时,向识别平台查询;若识别平台无对应信息,则家庭网关抓取一个该源MAC设备发出的特征值数据包供识别平台分析;若识别平台无法分析出该源MAC对应的设备类型,则家庭网关再次抓取一个该源MAC设备发出的特征值数据字段,直至识别平台可以分析接入设备的类型为止。该特征值数据字段在具体实施时可以是但不局限于HTTP数据包中的User‑Agent字段。本发明能够准确识别接入设备的类型,不仅能够更好地管理家庭网关的下挂设备,丰富相关的交互应用场景,而且能够保证家庭网关的转发性能。

权利要求 :

1.一种家庭网关利用云平台识别接入设备类型的系统,包括家庭网关和识别平台,其特征在于:家庭网关的用户空间中包括网关识别模块和缓存文件,家庭网关的内核空间包括数据抓取模块;识别平台包括平台识别模块和识别数据库,数据抓取模块和平台识别模块均与网关识别模块通信;

缓存文件用于:存放正在接入家庭网关的接入设备的源MAC和对应的类型信息;

识别数据库用于:存放家庭网关已识别的所有接入设备的源MAC和对应的类型信息;

网关识别模块用于:

(1)在缓存文件中定期检测家庭网关中的ARP表中的接入设备的源MAC,若在缓存文件中未检测到ARP表中的接入设备的源MAC,则确定检测到新的接入设备,将当前接入设备作为待查询设备,向平台识别模块发送查询信号,查询信号中的参数包括待查询设备的源MAC;

(2)收到平台识别模块返回的查询成功信号后,将查询成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联;

(3)收到平台识别模块返回的解析成功信号后,将解析成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联;

(4)收到平台识别模块返回的查询失败信号或解析失败信号后,向数据抓取模块发送数据抓取信号,数据抓取信号中的参数包括待查询设备的源MAC;

(5)收到数据抓取模块返回的特征值数据字段和源MAC后,向平台识别模块发送解析信号,解析信号中的参数包括待查询设备的源MAC和特征值数据字段;

平台识别模块用于:

(1)收到网关识别模块发送的查询信号后,在识别数据库中检索是否存放有查询信号中的源MAC,若是,向网关识别模块返回查询成功信号,查询成功信号中的参数包括查询信号中的源MAC、以及识别数据库中与该源MAC对应的类型信息;否则向网关识别模块返回查询失败信号,查询失败信号中的参数包括查询信号中的源MAC;

(2)收到网关识别模块发送的解析信号后,对解析信号中的特征值数据字段进行解析,判断是否解析得到类型信息,若是,将解析得到的类型信息和待查询设备的源MAC增加至识别数据库,向网关识别模块返回解析成功信号,解析成功信号中的参数包括解析信号中的源MAC和解析得到的类型信息;否则向网关识别模块返回解析失败信号,解析失败信号中的参数包括解析信号中的源MAC;

数据抓取模块用于:收到网关识别模块发送的数据抓取信号后,在待查询设备通过家庭网关转发数据包时,抓取1个包含特征值数据字段的数据包,向网关识别模块返回抓取的特征值数据字段。

2.如权利要求1所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:所述数据抓取模块运行时,创建有通信钩子函数和抓取钩子函数;

数据抓取模块具体用于:通信钩子函数收到网关识别模块发送的数据抓取信号后,将待查询设备的源MAC加入MAC监控链表;待查询设备通过家庭网关转发数据包时,抓取钩子函数抓取1个包含有符合MAC监控链表的特征值数据字段的数据包后,将待查询设备的源MAC从MAC监控链表中删除,向网关识别模块返回抓取的特征值数据字段。

3.如权利要求2所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:所述通信钩子函数的工作流程为:S301:收到网关识别模块发送的数据抓取信号后,解析得到待查询设备的源MAC,转到S302;

S302:将MAC监控链表上锁后,判断待查询设备的源MAC是否存在于MAC监控链表中,若是,转到S304,否则转到S303;

S303:将当前MAC地址节点插入MAC监控链表,转到S304;

S304:将MAC监控链表解锁,继续执行S301。

4.如权利要求3所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:S303中所述当前MAC地址节点插入MAC监控链表之前,还包括以下流程:在MAC监控链表中分配当前MAC地址节点的内存。

5.如权利要求3所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:所述抓取钩子函数的工作流程为:S401:抓取待查询设备通过家庭网关转发数据包后,解析得到当前数据包的源MAC、协议号和目地端口号,转到S402;

S402:判断当前数据包的特征值数据字段是否能够识别,若是,转到S403,否则转到S406;

S403:将MAC监控链表上锁,判断MAC监控链表中是否存在与当前数据包的源MAC一致的节点,若是,转到S404,否则将MAC监控链表解锁后转到S406;

S404:在MAC监控链表中删除与当前数据包的源MAC一致的节点,将MAC监控链表解锁后,从当前数据包中截取特征值数据字段,转到S405;

S405:将当前数据包的源MAC和特征值数据字段返回至网关识别模块,转到S406;

S406:正常转发当前数据包,继续执行S401。

6.如权利要求5所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:所示待查询设备通过家庭网关转发的数据包为HTTP数据包,所述特征值数据字段为User-Agent字段;此时S402的流程为:判断当前数据包是否为TCP协议、且目地端口为80,若是,转到S403,否则转到S406;S404所述特征值数据字段为“User-Agent:”与其后第一个“\r\n”间的数据。

7.如权利要求6所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:S402中所述TCP协议根据协议号确定。

8.如权利要求1至7任一项所述的家庭网关利用云平台识别接入设备类型的系统,其特征在于:当所述待查询设备通过家庭网关转发的数据包为HTTP数据包,所述特征值数据字段为User-Agent字段时,所述网关识别模块对解析信号中的特征值数据字段进行解析时:(1)若特征值数据字段包含不分大小写的iphone字符串,则待查询设备的类型为iPhone手机;

(2)若特征值数据字段包含不分大小写的ipad字符串,则待查询设备的类型为iPad;

(3)若特征值数据字段包含不分大小写的android字符串,则待查询设备的类型为Android设备;

(4)若特征值数据字段包含不分大小写的mac字符串,则待查询设备的类型为MAC OS电脑;

(5)若特征值数据字段包含不分大小写的windows字符串,则待查询设备的类型为Windows OS手机。

说明书 :

一种家庭网关利用云平台识别接入设备类型的系统

技术领域

[0001] 本发明涉及家庭网关识别领域,具体涉及一种家庭网关利用云平台识别接入设备类型的系统。

背景技术

[0002] 随着宽带技术的发展,家庭网关承载着越来越多不同种类的接入设备。为更好地通过WEB或APP管理工具管理家庭网关的接入设备,需要知道接入设备的类型。
[0003] 但家,庭网关作为接入设备的数据转发中心,不负责与接入设备的上层交互,即难以高效准确的识别接入设备的类型。
[0004] 鉴于以上情况,家庭网关需要一种能自动识别接入设备类型的方法。

发明内容

[0005] 针对现有技术中存在的缺陷,本发明解决的技术问题为:提供一种家庭网关利用云平台准确识别接入设备类型的系统,该系统工作时不仅能够更好地通过WEB或APP管理工具管理家庭网关的下挂设备,丰富相关的交互应用场景,而且能够保证家庭网关的转发性能。
[0006] 为达到以上目的,本发明公开的家庭网关利用云平台识别接入设备类型的系统,包括家庭网关和识别平台,家庭网关的用户空间中包括网关识别模块和缓存文件,家庭网关的内核空间包括数据抓取模块;识别平台包括平台识别模块和识别数据库,数据抓取模块和平台识别模块均与网关识别模块通信;
[0007] 缓存文件用于:存放正在接入家庭网关的接入设备的源MAC和对应的类型信息;
[0008] 识别数据库用于:存放家庭网关已识别的所有接入设备的源MAC和对应的类型信息;
[0009] 网关识别模块用于:
[0010] (1)在缓存文件中定期检测家庭网关中的ARP表中的接入设备的源MAC,若在缓存文件中未检测到ARP表中的接入设备的源MAC,则确定检测到新的接入设备,将当前接入设备作为待查询设备,向平台识别模块发送查询信号,查询信号中的参数包括待查询设备的源MAC;
[0011] (2)收到平台识别模块返回的查询成功信号后,将查询成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联;
[0012] (3)收到平台识别模块返回的解析成功信号后,将解析成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联;
[0013] (4)收到识别模块返回的查询失败信号或解析失败信号后,向数据抓取模块发送数据抓取信号,数据抓取信号中的参数包括待查询设备的源MAC;
[0014] (5)收到数据抓取模块返回的特征值数据字段和源MAC后,向平台识别模块发送解析信号,解析信号中的参数包括待查询设备的源MAC和特征值数据字段;
[0015] 平台识别模块用于:
[0016] (1)收到网关识别模块发送的查询信号后,在识别数据库中检索是否存放有查询信号中的源MAC,若是,向网关识别模块返回查询成功信号,查询成功信号中的参数包括查询信号中的源MAC、以及识别数据库中与该源MAC对应的类型信息;否则向网关识别模块返回查询失败信号,查询失败信号中的参数包括查询信号中的源MAC;
[0017] (2)收到网关识别模块发送的解析信号后,对解析信号中的特征值数据字段进行解析,判断是否解析得到类型信息,若是,将解析得到的类型信息和待查询设备的源MAC增加至识别数据库,向网关识别模块返回解析成功信号,解析成功信号中的参数包括解析信号中的源MAC和解析得到的类型信息;否则向网关识别模块返回解析失败信号,解析失败信号中的参数包括解析信号中的源MAC;
[0018] 数据抓取模块用于:收到网关识别模块发送的数据抓取信号后,在待查询设备通过家庭网关转发数据包时,抓取1个包含特征值数据字段的数据包,向网关识别模块返回抓取的特征值数据字段。
[0019] 在上述技术方案的基础上,所述数据抓取模块运行时,创建有通信钩子函数和抓取钩子函数;
[0020] 数据抓取模块具体用于:通信钩子函数收到网关识别模块发送的数据抓取信号后,将待查询设备的源MAC加入MAC监控链表;待查询设备通过家庭网关转发数据包时,抓取钩子函数抓取1个包含有符合MAC监控链表的特征值数据字段的数据包后,将待查询设备的源MAC从MAC监控链表中删除,向网关识别模块返回抓取的特征值数据字段。
[0021] 在上述技术方案的基础上,所述通信钩子函数的工作流程为:
[0022] S301:收到网关识别模块发送的数据抓取信号后,解析得到待查询设备的源MAC,转到S302;
[0023] S302:将MAC监控链表上锁后,判断待查询设备的源MAC是否存在于MAC监控链表中,若是,转到S304,否则转到S303;
[0024] S303:将当前MAC地址节点插入MAC监控链表,转到S304;
[0025] S304:将MAC监控链表解锁,继续执行S301。
[0026] 在上述技术方案的基础上,S303中所述当前MAC地址节点插入MAC监控链表之前,还包括以下流程:在MAC监控链表中分配当前MAC地址节点的内存。
[0027] 在上述技术方案的基础上,所述抓取钩子函数的工作流程为:
[0028] S401:抓取待查询设备通过家庭网关转发数据包后,解析得到当前数据包的源MAC、协议号和目地端口号,转到S402;
[0029] S402:判断当前数据包的特征值数据字段是否能够识别,若是,转到S403,否则转到S406;
[0030] S403:将MAC监控链表上锁,判断MAC监控链表中是否存在与当前数据包的源MAC一致的节点,若是,转到S404,否则将MAC监控链表解锁后转到S406;
[0031] S404:在MAC监控链表中删除与当前数据包的源MAC一致的节点,将MAC监控链表解锁后,从当前数据包中截取特征值数据字段,转到S405;
[0032] S405:将当前数据包的源MAC和特征值数据字段返回至网关识别模块,转到S406;
[0033] S406:正常转发当前数据包,继续执行S401。
[0034] 在上述技术方案的基础上,所示待查询设备通过家庭网关转发的数据包为HTTP数据包,所述特征值数据字段为User-Agent字段;此时S402的流程为:判断当前数据包是否为TCP协议、且目地端口为80,若是,转到S403,否则转到S406;S404所述特征值数据字段为“User-Agent:”与其后第一个“\r\n”间的数据。
[0035] 在上述技术方案的基础上,S402中所述TCP协议根据协议号确定。
[0036] 在上述技术方案的基础上,当所述待查询设备通过家庭网关转发的数据包为HTTP数据包,所述特征值数据字段为User-Agent字段时,所述网关识别模块对解析信号中的特征值数据字段进行解析时:
[0037] (1)若特征值数据字段包含不分大小写的iphone字符串,则待查询设备的类型为iPhone手机;
[0038] (2)若特征值数据字段包含不分大小写的ipad字符串,则待查询设备的类型为iPad;
[0039] (3)若特征值数据字段包含不分大小写的android字符串,则待查询设备的类型为Android设备;
[0040] (4)若特征值数据字段包含不分大小写的mac字符串,则待查询设备的类型为MAC OS电脑;
[0041] (5)若特征值数据字段包含不分大小写的windows字符串,则待查询设备的类型为Windows OS手机。
[0042] 与现有技术相比,本发明的优点在于:
[0043] (1)本发明当家庭网关接入未识别的接入设备时,能够在接入设备通过家庭网关转发数据包时,通过数据抓取模块在数据包中抓取供平台识别模块识别的特征值数据字段,平台识别模块对特征值数据字段进行解析得到未识别的接入设备的类型。因此,本发明能够准确的识别未知的接入设备类型,进而能够更好地通过WEB或APP管理工具管理家庭网关的下挂设备,丰富相关的交互应用场景。
[0044] (2)本发明的数据抓取模块1次仅抓取1个包含特征值数据字段的数据包,若对该数据包无法解析则再次抓取1个包含特征值数据字段的数据包。此种操作对家庭网关的转发性能影响可忽略不计,因此,本发明能够保证不影响家庭网关的转发性能。
[0045] (3)本发明的识别数据库中在工作过程中会动态增长,采用本发明的家庭网关应用规模增长时,存放有所有已经识别的接入设备的源MAC和类型信息识别数据库,会为其他应用进一步进行数据挖掘时提供丰富的大数据。

附图说明

[0046] 图1为本发明实施例中的家庭网关利用云平台识别接入设备类型的系统的结构框图;
[0047] 图2为本发明实施例中网关识别模块的工作流程图;
[0048] 图3为本发明实施例中平台识别模块的工作流程图;
[0049] 图4为本发明实施例数据抓取模块中通信钩子函数的工作流程图;
[0050] 图5为本发明实施例数据抓取模块中抓取钩子函数的工作流程图。

具体实施方式

[0051] 以下结合附图及实施例对本发明作进一步详细说明。
[0052] 参见图1所示,本发明实施例中的家庭网关利用云平台识别接入设备类型的系统,包括家庭网关和识别平台,家庭网关的用户空间中包括网关识别模块和缓存文件,家庭网关的内核空间包括数据抓取模块;识别平台包括平台识别模块和识别数据库,数据抓取模块和平台识别模块均与网关识别模块通信。
[0053] 缓存文件用于:存放正在接入家庭网关的接入设备的源MAC(Media  Access Control,物理地址)和对应的类型信息。
[0054] 识别数据库用于:存放家庭网关已识别的所有接入设备的源MAC和对应的类型信息,并在后期可以动态扩充及更新。
[0055] 参见图2所示,网关识别模块用于:
[0056] S101:接收监听事件进行分发,若监听事件为在家庭网关中的ARP(Address Resolution Protocol,地址解析协议)表中检测到新的接入设备,转到S102;若监听事件为平台查询应答,转到S104;若监听事件为平台解析应答,转到S107;若监听事件为抓取数据上报,转到S110。
[0057] S102:判断缓存文件中是否存在新的接入设备的源MAC和类型信息(即缓存文件是否映射),若是,继续执行S101,否则转到S103。S103:将当前接入设备作为待查询设备,向平台识别模块发送查询信号,查询信号中的参数包括待查询设备的源MAC,继续执行S101。
[0058] S104:判断平台查询应答是否成功,若收到平台识别模块返回的查询成功信号,则平台查询应答成功,转到S105;若收到识别模块返回的查询失败信号,则平台查询应答失败,转到S106。
[0059] S105:将查询成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联(即待查询设备的类型信息为查询成功信号中的类型信息),继续执行S101。
[0060] S106:向数据抓取模块发送数据抓取信号,数据抓取信号中的参数包括待查询设备的源MAC,继续执行S101。
[0061] S107:判断平台解析应答是否成功,若收到平台识别模块返回的解析成功信号后,则平台解析应答成功,转到S108,若收到识别模块返回的解析失败信号,则平台解析应答失败,转到S109。
[0062] S108:将解析成功信号中的源MAC和对应的类型信息更新至缓存文件、并与待查询设备关联,继续执行S101。
[0063] S109:向数据抓取模块发送数据抓取信号,数据抓取信号中的参数包括待查询设备的源MAC,继续执行S101。
[0064] S110:收到数据抓取模块返回的特征值数据字段和源MAC后,向平台识别模块发送解析信号,解析信号中的参数包括待查询设备的源MAC和特征值数据字段,继续执行S101。
[0065] 参见图3所示,平台识别模块用于:
[0066] S201:收到网关识别模块消息进行分发,若网关识别模块消息为查询信号,转到S202;若网关识别模块消息为解析信号,转到S205。
[0067] S202:在识别数据库中检索是否存放有查询信号中的源MAC(即识别数据库是否存在记录),若是,转到S203,否则转到S204。
[0068] S203:向网关识别模块返回查询成功信号,查询成功信号中的参数包括查询信号中的源MAC、以及识别数据库中与该源MAC对应的类型信息,继续执行S201;
[0069] S204:向网关识别模块返回查询失败信号,查询失败信号中的参数包括查询信号中的源MAC,继续执行S201。
[0070] S205:对解析信号中的特征值数据字段进行解析,判断是否解析得到类型信息,若是,转到S206,否则转到S208。
[0071] S205进行解析时,当所述待查询设备通过家庭网关转发的数据包为HTTP(HyperText Transfer Protocol,超文本传输协议)数据包,所述特征值数据字段为User-Agent(用户代理)字段时,若上述截取数据中包含iphone字符串(不分大小写,下同),则可以认为该设备为iPhone手机;若上述截取数据中包含ipad字符串,则可以认为该设备为iPad;若上述截取数据中包含android字符串;则可以认为该设备为Android设备;若上述截取数据中包含mac字符串,这可以认为该设备为MAC OS电脑;若上述截取数据中包含windows字符串,则可以认为该设备为Windows OS电脑。(具体实施时特征值不局限于HTTP报文的User-Agent字段)
[0072] S206:将解析得到的类型信息和待查询设备的源MAC增加至识别数据库,转到S207。
[0073] S207:向网关识别模块返回解析成功信号,解析成功信号中的参数包括解析信号中的源MAC和解析得到的类型信息,继续执行S201。
[0074] S208:向网关识别模块返回解析失败信号,解析失败信号中的参数包括解析信号中的源MAC,继续执行S201。
[0075] 数据抓取模块用于:收到网关识别模块发送的数据抓取信号后,在待查询设备通过家庭网关转发数据包时,抓取1个包含特征值数据字段的数据包,向网关识别模块返回抓取的特征值数据字段。
[0076] 位于内核空间的数据抓取模块运行时,首先创建有Netlink(实现用户进程与内核进程通信的一种特殊的进程间通信)通信接口,注册通信钩子函数;然后在Linux内核Netfliter框架的NF_BR_PRE_ROUTING节点挂上抓取钩子函数。
[0077] 数据抓取模块具体用于:通信钩子函数收到网关识别模块发送的数据抓取信号后,将待查询设备的源MAC加入MAC监控链表;待查询设备通过家庭网关转发数据包时,抓取钩子函数抓取1个包含有符合MAC监控链表的特征值数据字段的数据包后,将待查询设备的源MAC从MAC监控链表中删除,向网关识别模块返回抓取的特征值数据字段。
[0078] 参见图4所示,本发明实施例中的通信钩子函数的工作流程为:
[0079] S301:收到网关识别模块发送的数据抓取信号后,解析得到待查询设备的源MAC,转到S302。
[0080] S302:将MAC监控链表上锁后,迭代MAC监控链表,判断待查询设备的源MAC是否存在于MAC监控链表中,若是,转到S304,否则转到S303。
[0081] S303:在MAC监控链表中分配当前MAC地址节点的内存,将当前MAC地址节点插入MAC监控链表,转到S304。
[0082] S304:将MAC监控链表解锁,继续执行S301。
[0083] 参见图5所示,抓取钩子函数的工作流程为:
[0084] S401:抓取待查询设备通过家庭网关转发数据包后,解析得到当前数据包的源MAC、协议号和目地端口号,转到S402。
[0085] S402:判断当前数据包的特征值数据字段是否能够识别,若是,转到S403,否则转到S406。
[0086] S403:将MAC监控链表上锁,判断MAC监控链表中是否存在与当前数据包的源MAC一致的节点,若是,转到S404,否则将MAC监控链表解锁后转到S406。
[0087] S404:在MAC监控链表中删除与当前数据包的源MAC一致的节点,将MAC监控链表解锁后,从当前数据包中截取特征值数据字段,转到S405。
[0088] S405:将当前数据包的源MAC和特征值数据字段返回至网关识别模块,转到S406。
[0089] S406:正常转发当前数据包,继续执行S401。
[0090] 参见图5所示,待查询设备通过家庭网关转发的数据包为HTTP数据包,特征值数据字段为User-Agent字段;此时S402的流程为:判断当前数据包是否为TCP协议(TCP协议根据协议号确定)、且目地端口为80,若是,转到S403,否则转到S406;S404所述特征值数据字段为“User-Agent:”与其后第一个“\r\n”间的数据。
[0091] 本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,不局限于仅抓取及分析待识别设备80端口发出的HTTP数据包的User-Agent字段,也可以根据具体环境抓取其他协议的相关字段并分析;不局限于仅根据上述数据分析出接入终端的操作系统种类;这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。