首页> 中国专利> 一种家庭网关识别接入设备类型的系统及方法

一种家庭网关识别接入设备类型的系统及方法

摘要

本发明公开了一种家庭网关识别接入设备类型的系统及方法,涉及家庭网关识别领域。该系统的设备类型链表用于:记录与源MAC设备对应的接入设备的类型统计值,其包括源MAC字段、CNT字段和TYPE_CNT数组字段;该系统的数据包分析子模块用于:分析接入设备转发的数据包,确定接入设备的类型;该系统的检测结果输出子模块用于:输出设备类型链表中每个节点对应的接入设备的源MAC地址、与源MAC地址对应的TYPE_CNT数组中的各个元素值、以及数据包分析子模块确定的接入设备的类型;该系统的检测结果清空子模块用于:清空设备类型链表中的类型统计值。本发明能够准确识别家庭网关的接入设备的类型,丰富相关的交互应用场景。

著录项

  • 公开/公告号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。

本发明不局限于上述实施方式,对于本技术领域的普通技术人员 来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰, 这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细 描述的内容属于本领域专业技术人员公知的现有技术。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号