公开/公告号CN105553792A
专利类型发明专利
公开/公告日2016-05-04
原文格式PDF
申请/专利权人 烽火通信科技股份有限公司;
申请/专利号CN201510926953.5
申请日2015-12-14
分类号H04L12/28;H04L12/24;
代理机构武汉智权专利代理事务所(特殊普通合伙);
代理人沈林华
地址 430074 湖北省武汉市东湖开发区光谷创业街67号
入库时间 2023-12-18 15:50:38
法律状态公告日
法律状态信息
法律状态
2018-05-29
授权
授权
2016-06-01
实质审查的生效 IPC(主分类):H04L12/28 申请日:20151214
实质审查的生效
2016-05-04
公开
公开
技术领域
本发明涉及家庭网关识别领域,具体涉及一种家庭网关识别接入 设备类型的系统及方法。
背景技术
随着宽带技术的发展,家庭网关承载的接入设备的种类越来越 多,为了通过WEB或APP管理工具管理家庭网关的接入设备,需要 知悉接入设备的类型。
但是,家庭网关自身作为接入设备的数据转发中心,不负责与接 入设备的上层进行交互,因此家庭网关难以通过现有技术识别接入设 备的类型。
发明内容
针对现有技术中存在的缺陷,本发明解决的技术问题为:准确识 别家庭网关的接入设备的类型。采用本发明家庭网关能够通过WEB 或APP管理工具管理家庭网关的接入设备,在丰富相关的交互应用 场景的同时,家庭网关的转发性能不易受到影响,家庭网关的工作能 够得到保障。
为达到以上目的,本发明提供的家庭网关识别接入设备类型的系 统,包括位于家庭网关用户空间的proc文件系统,所述家庭网关识 别接入设备类型的系统还包括位于家庭网关内核空间的设备类型链 表和设备类型检测模块;
所述proc文件系统用于:为家庭网关的应用程序提供获取和刷 新接入设备类型的接口;
所述设备类型链表用于:记录与源MAC设备对应的接入设备的 类型统计值,每个源MAC设备对应1个节点,每个节点包括以下字 段:
源MAC字段:其用于表明家庭网关接入设备的MAC地址;
CNT字段:其用于表明与该节点对应的接入设备被设备类型检 测模块分析的数据包总量;
TYPE_CNT数组字段,TYPE_CNT数组字段中的每个元素对应 1种类型的接入设备的数据包数量;所有元素之和等于CNT字段值;
所述设备类型检测模块包括数据包分析子模块、检测结果输出子 模块和检测结果清空子模块;
所述数据包分析子模块用于:当家庭网关的接入设备的数据包通 过家庭网关转发时,抓取该数据包,对数据包中与当前接入设备对应 的源MAC设备的HTTP报文中的User-Agent字段进行分析,根据分 析结果确定接入设备的类型;若设备类型链表中存在与当前接入设备 的类型对应的节点,则更新该节点;若设备类型链表中不存在与当前 接入设备的类型对应的节点,则在设备类型链表中创建与当前接入设 备对应的新节点;
所述检测结果输出子模块用于:当proc文件系统向设备类型检 测模块请求获取接入设备类型时,输出设备类型链表中每个节点对应 的接入设备的源MAC地址、与源MAC地址对应的TYPE_CNT数组 中的各个元素值、以及数据包分析子模块确定的接入设备的类型;
所述检测结果清空子模块用于:当proc文件系统向设备类型检 测模块请求刷新接入设备类型时,清空设备类型链表中的类型统计 值。
在上述技术方案的基础上,所述设备类型链表中的TYPE_CNT 数组字段包括以下6个元素:
(1)TYPE_CNT[TYPE_IPHONE],表明统计到iPhone类型的接 入设备的数据包数量;
(2)TYPE_CNT[TYPE_IPAD],表明统计到iPad类型的接入设 备的数据包数量;
(3)TYPE_CNT[TYPE_ANDROID],表明统计到Android类型 的接入设备的数据包数量;
(4)TYPE_CNT[TYPE_MAC],表明统计到Mac类型的接入设 备的数据包数量;
(5)TYPE_CNT[TYPE_WIN],表明统计到Windows类型的接 入设备的数据包数量;
(6)TYPE_CNT[TYPE_XXX],表明统计到未知类型的接入设 备的数据包数量。
在上述技术方案的基础上,所述设备类型链表中的CNT字段设 置有阈值。
本发明提供的用于上述识别接入设备类型的系统的家庭网关识 别接入设备类型的方法,包括以下步骤:
S1:家庭网关的接入设备的数据包通过家庭网关转发时,数据包 分析子模块抓取该数据包,对数据包中与当前接入设备对应的源 MAC设备的HTTP报文中的User-Agent字段进行分析,根据分析结 果确定接入设备的类型;若设备类型链表中存在与当前接入设备的类 型对应的节点,则更新该节点;若设备类型链表中不存在与当前接入 设备的类型对应的节点,则在设备类型链表中创建与当前接入设备对 应的新节点;
S2:当proc文件系统向设备类型检测模块请求获取接入设备类 型时,检测结果输出子模块输出设备类型链表中每个节点对应的接入 设备的源MAC地址、与源MAC地址对应的TYPE_CNT数组中的各 个元素值、以及数据包分析子模块确定的接入设备的类型;
S3:当proc文件系统向设备类型检测模块请求刷新接入设备类 型时,检测结果清空子模块清空设备类型链表中的类型统计值。
在上述技术方案的基础上,步骤S1具体包括以下步骤:
S101:家庭网关的接入设备的数据包通过家庭网关转发时,数据 包分析子模块抓取该数据包,解析得到该数据包源MAC地址、协议 号和目地端口号,转到S102;
S102:判断当前数据包是否为TCP协议、且目地端口为80,若 是,转到S103,否则当前数据包对确定接入设备类型没有帮助,结 束;
S103:将设备类型链表上锁,判断设备类型链表中是否存在与当 前数据包的源MAC地址一致的节点,若是,转到S104,否则转到 S105;
S104:判断设备类型链表中的CNT值是否大于等于预先设置的 阈值,若是,将设备类型链表解锁,结束;否则转到S105;
S105:将设备类型链表解锁,从当前数据包中截取User-Agent 字段值,转到S106;
S106:根据User-Agent字段值中包含的字符串类型,确定当前 接入设备的类型TYPE,将设备类型链表上锁,转到S107;
S107:判断设备类型链表中是否存在与当前数据包的源MAC地 址一致的节点,若是,转到S108,否则转到S109;
S108:在设备类型链表中将对应节点的CNT值加1,将对应节 点的TYPE_CNT数组字段中与S106中确定的TYPE对应的元素值 TYPE_CNT[TYPE]加1,转到S110;
S109:在设备类型链表中创建新的动态节点,将该节点的源MAC 字段赋值为当前数据包的源MAC地址,将该节点的CNT字段初始 化为1,将该节点的TYPE_CNT数组字段中与S106确定的TYPE对 应的元素值TYPE_CNT[TYPE]初始化为1,其他元素值均初始化为0, 转到S110;
S110:将设备类型链表解锁,结束。
在上述技术方案的基础上,S106中根据User-Agent字段值中包 含的字符串类型,确定当前接入设备的TYPE时,字符串类型不区分 大小写,S106具体包括以下步骤:
若User-Agent字段值中包含iphone字符串,则设定当前接入设 备的TYPE为TYPE_IPHONE;将设备类型链表上锁,转到S107;
若User-Agent字段值中包含ipad字符串,则设定当前接入设备 的TYPE为TYPE_IPAD;将设备类型链表上锁,转到S107;
若User-Agent字段值中包含android字符串,则设定当前接入设 备的TYPE为TYPE_ANDROID;将设备类型链表上锁,转到S107;
若User-Agent字段值中包含mac字符串,则设定当前接入设备 的TYPE为TYPE_MAC;将设备类型链表上锁,转到S107;
若User-Agent字段值中包含windows字符串,则设定当前接入 设备的TYPE为TYPE_WIN;将设备类型链表上锁,转到S107;
若User-Agent字段值中的字符串类型未知,则设定当前接入设备 的TYPE为未知TYPE_XXX;将设备类型链表上锁,转到S107。
在上述技术方案的基础上,S102中所述TCP协议根据协议号确 定。
在上述技术方案的基础上,S105中所述User-Agent字段值为 “User-Agent:”与其后第一个“\r\n”间的数据。
在上述技术方案的基础上,其特征在于,S2具体包括以下步骤:
S201:将设备类型链表上锁,转到S202;
S202:根据设备类型链表中每个节点的TYPE_CNT数组字段中 各元素的值,确定每个节点对应的接入设备的类型,转到S203;
S203:检测结果输出子模块输出与每个节点对应的接入设备的源 MAC地址、TYPE_CNT数组中的各个元素值、以及S202中确定的 接入设备的类型,转到S204;
S204:设备类型链表解锁,结束。
在上述技术方案的基础上,S202中所述TYPE_CNT数组字段中 的元素为:
TYPE_CNT[TYPE_IPHONE]、TYPE_CNT[TYPE_IPAD];
TYPE_CNT[TYPE_ANDROID]、TYPE_CNT[TYPE_MAC];
TYPE_CNT[TYPE_WIN]、TYPE_CNT[TYPE_XXX];
在此基础上,S202具体包括以下步骤:
S202a:判断单个节点的TYPE_CNT[TYPE_IPHONE]是否大于0, 若是,确定该节点对应的接入设备的类型为iPhone,转到S203;否 则转到S202b;
S202b:判断单个节点的TYPE_CNT[TYPE_IPAD]是否大于0, 若是,确定该节点对应的接入设备的类型为iPad,转到S203;否则 转到S202c;
S202c:判断单个节点的TYPE_CNT[TYPE_ANDROID]是否大 于0,若是,确定该节点对应的接入设备的类型为Android,转到S203; 否则转到S202d;
S202d:判断单个节点的TYPE_CNT[TYPE_MAC]是否大于0, 若是,确定该节点对应的接入设备的类型为Mac,转到S203;否则 转到S202e;
S202e:判断单个节点的TYPE_CNT[TYPE_WIN]是否大于0, 若是,确定该节点对应的接入设备的类型为Windows,转到S203; 否则转到S202f;
S202f:确定该节点对应的接入设备的类型为未知,转到S203。
与现有技术相比,本发明的优点在于:
(1)本发明使用时,接入家庭网关设备的数据包通过家庭网关 转发,本发明通过对数据包中的User-Agent字段进行分析,根据分析 结果确定接入设备的类型。采用本发明的家庭网关能够准确识别接入 设备的类型,进而能够通过WEB或APP管理工具管理家庭网关的接 入设备,丰富相关的交互应用场景。
(2)本发明仅对来自同一接入设备的若干数据包进行分析,分 析时该功能的加载对家庭网关的转发性能影响可忽略不计,保证家庭 网关的正常使用。
附图说明
图1为本发明实施例中家庭网关识别接入设备类型的系统的示 意图;
图2为本发明实施例中对设备类型链表中的字段进行说明的示 意图;
图3为本发明实施例中的家庭网关识别接入设备类型的方法中 S1的流程图;
图4为本发明实施例中的家庭网关识别接入设备类型的方法中 S202的流程图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例中的家庭网关识别接入设备类型的 系统,包括位于家庭网关用户空间的proc文件系统(伪文件系统)、 以及位于家庭网关内核空间的设备类型链表和设备类型检测模块。
proc文件系统用于:为家庭网关的应用程序提供获取和刷新接入 设备类型的接口。
设备类型链表用于:记录与源MAC(MediaAccessControl,物 理地址)设备对应的接入设备的类型统计值,每个源MAC设备对应 1个节点。
参见图2所示,每个节点主要包括以下3个字段:
源MAC字段:其用于表明家庭网关接入设备的MAC地址。
CNT(计数器)字段:其用于表明与该节点对应的某台接入设备 被设备类型检测模块分析的数据包总量;CNT字段设置有阈值,为 降低系统负载,CNT字段值超过某阈值时,设备类型检测模块就不 再对来自对应源MAC的数据包进行分析。
TYPE_CNT(类型_计数器)数组字段,TYPE_CNT数组字段中 的每个元素对应1种类型的接入设备的数据包数量,所有元素之和等 于CNT字段值。
参见图2所示,TYPE_CNT数组字段主要包括以下6个元素:
(1)TYPE_CNT[TYPE_IPHONE],表明统计到iPhone类型的接 入设备的数据包数量。
(2)TYPE_CNT[TYPE_IPAD],表明统计到iPad类型的接入设 备的数据包数量。
(3)TYPE_CNT[TYPE_ANDROID],表明统计到Android类型 的接入设备的数据包数量。
(4)TYPE_CNT[TYPE_MAC],表明统计到Mac类型的接入设 备的数据包数量。
(5)TYPE_CNT[TYPE_WIN],表明统计到Windows类型的接 入设备的数据包数量。
(6)TYPE_CNT[TYPE_XXX],表明统计到未知类型的接入设 备的数据包数量。
设备类型检测模块包括数据包分析子模块、检测结果输出子模块 和检测结果清空子模块。
数据包分析子模块用于:在Linux内核Netfilter框架的 NF_BR_PRE_ROUTING节点挂上数据包分析子模块,并设定其为最 高优先级。家庭网关的接入设备的数据包通过家庭网关转发时,数据 包分析子模块抓取该数据包,对数据包中若干与当前接入设备对应的 源MAC设备的HTTP报文中的User-Agent(用户代理)字段进行分 析,根据分析结果确定接入设备的类型。若设备类型链表中存在与当 前接入设备的类型对应的节点,则更新该节点;若设备类型链表中不 存在与当前接入设备的类型对应的节点,则在设备类型链表中创建与 当前接入设备对应的新节点。
检测结果输出子模块用于:当proc文件系统向设备类型检测模 块请求获取接入设备类型时,输出设备类型链表中每个节点对应的接 入设备的源MAC地址、与源MAC地址对应的TYPE_CNT数组中的 各个元素值、以及数据包分析子模块确定的接入设备的类型。用户空 间应用程序可直接相信设备类型检测模块确定的接入设备类型、或者 根据TYPE_CNT数组中的各个元素值自行确定接入设备的类型。
检测结果清空子模块用于:当proc文件系统向设备类型检测模 块请求刷新接入设备类型时,清空设备类型链表中的类型统计值。
本发明实施例中的用于上述识别接入设备类型的系统的家庭网 关识别接入设备类型的方法,包括以下步骤:
S1:家庭网关的接入设备的数据包通过家庭网关转发时,数据包 分析子模块抓取该数据包,对数据包中若干与当前接入设备对应的源 MAC设备的HTTP报文中的User-Agent字段进行分析,根据分析结 果确定接入设备的类型。若设备类型链表中存在与当前接入设备的类 型对应的节点,则更新该节点;若设备类型链表中不存在与当前接入 设备的类型对应的节点,则在设备类型链表中创建与当前接入设备对 应的新节点。
S2:当proc文件系统向设备类型检测模块请求获取接入设备类 型时,检测结果输出子模块输出设备类型链表中每个节点对应的接入 设备的源MAC地址、与源MAC地址对应的TYPE_CNT数组中的各 个元素值、以及数据包分析子模块确定的接入设备的类型。
S3:当proc文件系统向设备类型检测模块请求刷新接入设备类 型时,检测结果清空子模块清空设备类型链表中的类型统计值。
参见图3所示,步骤S1具体包括以下步骤:
S101:家庭网关的接入设备的数据包通过家庭网关转发时,数据 包分析子模块抓取该数据包,解析得到该数据包源MAC地址、协议 号和目地端口号,转到S102。
S102:判断当前数据包是否为TCP协议(TCP协议根据协议号 确定)、且目地端口为80,若是,转到S103,否则当前数据包对确定 接入设备类型没有帮助,结束,后续处理交给Netfilter框架。
S103:将设备类型链表上锁,判断设备类型链表中是否存在与当 前数据包的源MAC地址一致的节点,若是,转到S104,否则转到 S105。
S104:判断设备类型链表中的CNT值是否大于等于阈值,若是, 将设备类型链表解锁,结束,后续处理交给Netfilter框架;否则转到 S105。
S105:将设备类型链表解锁,从当前数据包中截取User-Agent 字段值(即“User-Agent:”与其后第一个“\r\n”间的数据),转到S106。
S106:根据User-Agent字段值中包含的字符串类型(不区分大 小写),确定当前接入设备的TYPE(类型),将设备类型链表上锁, 转到S107。
S106中根据User-Agent字段值中包含的字符串类型,确定当前 接入设备的TYPE,具体包括以下步骤:
若User-Agent字段值中包含iphone字符串,则设定当前接入设 备的TYPE为TYPE_IPHONE;将设备类型链表上锁,转到S107。
若User-Agent字段值中包含ipad字符串,则设定当前接入设备 的TYPE为TYPE_IPAD;将设备类型链表上锁,转到S107。
若User-Agent字段值中包含android字符串,则设定当前接入设 备的TYPE为TYPE_ANDROID;将设备类型链表上锁,转到S107。
若User-Agent字段值中包含mac字符串,则设定当前接入设备 的TYPE为TYPE_MAC;将设备类型链表上锁,转到S107。
若User-Agent字段值中包含windows字符串,则设定当前接入 设备的TYPE为TYPE_WIN;将设备类型链表上锁,转到S107。
若User-Agent字段值中的字符串类型未知,则设定当前接入设备 的TYPE为TYPE_XXX(未知);将设备类型链表上锁,转到S107。
S107:判断设备类型链表中是否存在与当前数据包的源MAC地 址一致的节点,若是,转到S108,否则转到S109。
S108:在设备类型链表中将对应节点的CNT值加1,将对应节 点的TYPE_CNT数组字段中与S106中确定的TYPE对应的元素值 TYPE_CNT[TYPE]加1,转到S110。
S109:在设备类型链表中创建新的动态节点,将该节点的源MAC 字段赋值为当前数据包的源MAC地址,将该节点的CNT字段初始 化为1,将该节点的TYPE_CNT数组字段中与S106确定的TYPE对 应的元素值TYPE_CNT[TYPE]初始化为1,其他元素值均初始化为0, 转到S110。
S110:将设备类型链表解锁,结束,后续处理交给Netfilter框架。
S2具体包括以下步骤:
S201:将设备类型链表上锁,转到S202。
S202:根据设备类型链表中每个节点的TYPE_CNT数组字段中 各元素的值,确定每个节点对应的接入设备的类型,转到S203。
S203:检测结果输出子模块输出与每个节点对应的接入设备的源 MAC地址、TYPE_CNT数组中的各个元素值、以及S202中确定的 接入设备的类型,转到S204。
S204:设备类型链表解锁,结束。
参见图4所示,S202具体包括以下步骤:
S202a:判断单个节点的TYPE_CNT[TYPE_IPHONE]是否大于0, 若是,确定该节点对应的接入设备的类型为iPhone,转到S203;否 则转到S202b;
S202b:判断单个节点的TYPE_CNT[TYPE_IPAD]是否大于0, 若是,确定该节点对应的接入设备的类型为iPad,转到S203;否则 转到S202c;
S202c:判断单个节点的TYPE_CNT[TYPE_ANDROID]是否大 于0,若是,确定该节点对应的接入设备的类型为Android,转到S203; 否则转到S202d;
S202d:判断单个节点的TYPE_CNT[TYPE_MAC]是否大于0, 若是,确定该节点对应的接入设备的类型为Mac,转到S203;否则 转到S202e;
S202e:判断单个节点的TYPE_CNT[TYPE_WIN]是否大于0, 若是,确定该节点对应的接入设备的类型为Windows,转到S203; 否则转到S202f;
S202f:确定该节点对应的接入设备的类型为未知,转到S203。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员 来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰, 这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细 描述的内容属于本领域专业技术人员公知的现有技术。
机译: 识别家庭网关接入节点的方法,家庭网关接入节点和执行该方法的移动台
机译: 具有各种协议的家庭网关和接入网络的家庭网关系统及其网络接口方法
机译: 一种识别可互换设备类型的活塞-缸-移液系统的单元-或计量装置以及移液系统-和计量系统的方法