一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于联邦学习的家庭路由器数据流识别方法和识别架构与流程

2022-11-23 12:43:05 来源:中国专利 TAG:


1.本发明涉及加密流量识别技术领域,具体但不限于涉及一种基于联邦学习的家庭路由器数据流识别方法和识别架构。


背景技术:

2.家庭无线宽带从wi-fi 5到wi-fi 6,再到未来的wi-fi 7,为用户提供的无线数据带宽越来越宽,但受家庭无线网络覆盖的复杂性、多业务并发优先级冲突、路由器的转发效率等因素影响,依然存在家庭无线宽带不能很好满足类似于vr/ar游戏、在线视频的高带宽、低延时需求的情况。因此,无线路由器应能够根据数据报文(流)的特点,分析出业务流的类型、分类以及具体的业务名称,进而提供有针对性的网络报文转发策略,优先转发对时延敏感的数据流报文,而对于对时延不敏感的数据流报文则采取尽力转发报文的策略,从而达到提升用户使用体验的目的。
3.然而训练深度学习流量分类模型需要采集大量原始数据作为数据集,直接采集数据可能会造成隐私问题。联邦学习作为应对数据隐私问题的有效解决方案,在满足用户数据安全和政府相关法规的前提下,实现多个数据拥有方进行联合建模,已在金融医疗领域取得了很多成果。
4.将联邦学习应用到加密流量识别领域时,由于游戏业务、视频业务的应用不断升级会导致流量特征不断变化,预先训练好的数据流识别模型会产生概念漂移问题,导致识别精度降低。当前的加密流量联邦学习识别方法缺少在终端自动采集标记数据的能力,无法应对数据流特征的变化。同时由于路由器的数量众多,联邦学习训练存在轮数过多,一次全局聚合的耗时过长,消耗了大量的通信资源。由于存在上述问题,导致联邦学习很难实际用于基于路由器的加密流量识别。


技术实现要素:

5.针对现有技术中的一个或多个问题,本发明提出了一种基于联邦学习的家庭路由器数据流识别方法和识别架构,有效解决联邦学习应用于流量识别领域时,无法在线自动标记数据形成数据集的问题,同时通过节点选择降低了参与全局训练的节点数量,大大减少计算量和通信资源消耗。
6.实现本发明目的的技术解决方案为:
7.一种基于联邦学习的家庭路由器数据流识别方法,所述方法包括以下步骤:
8.步骤1:在家庭路由器管理平台中对应用流量进行域名提取,生成域名配置文件;
9.步骤2:在家庭路由器中,依据域名配置文件进行流量标记,生成初始数据集;
10.步骤3:在深度学习管理平台的调度下,家庭路由基于初始模型利用初始数据集进行联邦训练,生成家庭路由器深度学习模型;
11.步骤4:家庭路由器管理平台根据应用类型制定流转发策略表并进行下发,家庭路由器使用基于联邦训练的家庭路由器深度学习模型对采集的流量进行应用分类,并根据流
转发策略表和ip进行不同优先级的路由转发。
12.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,所述步骤1具体包括:
13.在基于linux的安卓模拟器内搭建域名提取环境、安装并启动应用,对该应用执行具有应用特点的操作,产生包含应用标识域名的流量,监听安卓模拟器的虚拟网卡并采集域名流量,其中,所述具有应用特点的操作指用户在使用该应用时会进行的操作,采集的域名流量包含向服务器询问域名解析的请求包,以及域名服务器返回的包含通过域名解析得出的ip的回复包,
14.用域名服务器返回的包含通过域名解析得出的ip的回复包中的合法ip的第一条rrname标识作为域名,同时将该回复包中所有合法ip作为该域名对应的解析ip数组,将包含解析ip数组的域名写入同一个文件作为该应用的域名配置文件。
15.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,通过编写基于monkeyrunner的自动化脚本,自动在基于linux的安卓模拟器内安装并启动需要进行域名提取的应用。
16.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,通过编写流量采集代码监听安卓模拟器虚拟机的虚拟网卡来采集域名流量。
17.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,步骤2具体包括:
18.家庭路由器从家庭路由器管理平台获取域名配置文件。在采集前,修改路由器驱动,在其代码内嵌入钩子函数。在采集时,利用驱动中的钩子函数把网卡驱动收到的数据拷贝到环状缓冲区再从环状缓冲区中获取以用户数据报协议为载体的udp数据和以传输控制协议为载体的tcp数据;
19.逐一分析udp数据中的dns回复包,检查是否包含与域名配置文件一致的域名,若有,则将该dns回复包中的所有合法ip生成该域名的域名解析ip列表,并记录应用名称;若没有,则继续分析采集到的下一个dns回复包,直至将获取的所有dns回复包分析完毕;dns回复包指域名服务器返回的包含域名通过域名解析得出的ip的回复包,dns指的是域名解析服务;
20.解析udp数据和tcp数据,检查采集到的udp和tcp数据包中ip层的来源ip、目的ip是否在上述域名解析ip列表中,若在,则将该源目ip的所有流量提取出来进行形成上行/下行的双向数据流,对这些数据流进行流特征提取并打上对应的应用标签,形成初始数据集;若不在,则继续检查下一收到的数据。
21.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,所述对数据流进行流特征提取的方法为:
22.对tcp数据和udp数据提取流特征:首先使用五元组来标识数据包,提取形成上行/下行的数据流,然后对上行/下行的数据流分别计算特征,提出的方法其特点为:
23.(1)五元组作为流的标记,保存在hash表中,同时保存有流的第一个数据包的时间戳、最后一个数据包的时间戳;如果一个流的持续时间超过120秒,则把流截断、输出一次特征并且把hash表中的信息清除,后续的数据包作为新的流计算特征;hash表即哈希表又称散列表,是一种数据结构,以键值对的形式,可以加快检索速度;
24.(2)tcp数据包的fin标识作为流的结束标识,fin标识出现后立刻输出该流的ai特征并且把hash表中的信息清除;fin标识即finish标识,是tcp协议中的一个标识,意思为主动断开连接;
25.(3)指标计算中,把符合tcp syn包的src ip

》dst ip方向的数据包称为“正向”,反之称为“反向”;没有tcp syn包的流,取第一个数据包的src ip

》dst ip方向称为“正向”,反之称为“反向”;
26.(4)每个流输出20个特征,且输出特征时根据ai芯片的输入要求转换成8位。
27.进一步的,本发明的基于联邦学习的家庭路由器数据流识别方法,所述步骤3中采用联邦聚合算法,每次全局聚合只挑选部分节点参与,具体步骤包括:
28.①
收集各节点用于训练的数据量和训练损失,并形成损失数组l=[l0,l1,l2……
ln]和数据量数组d=[d0,d1,d2……dn
],所述损失数组和数据量数组分别存放第0个节点到第n个节点最终的训练损失和用于训练的数据量;
[0029]

对训练损失和数据量统一量纲处理,都统一成值越大对结果影响越积极,方便后续计算,利用公式(1)对训练损失进行处理,利用公式(2)对数据量进行处理:
[0030][0031][0032]

根据步骤

得到每个节点的损失值和数据量,形成新的损失数组l

=[l
′0,l
′1,l
′2……
l
′n],和新的数据量数组d

=[d
′0,d
′1,d
′2……d′n],利用公式(3)计算评价值t:
[0033]
ti=l
′i*d
′i,i=1,2,

,n
ꢀꢀ
(3)
[0034]

将每个节点的评价值从小到大进行排序,得到前m个模型的节点id参与模型的聚合;
[0035]

利用fed-avg算法对选出的m个模型进行聚合;
[0036]

当全局损失值比上一轮变化小于设定阈值时,停止模型训练。
[0037]
一种基于联邦学习的家庭路由器数据流识别架构,基于上述任一的基于联邦学习的家庭路由器数据流识别方法,所述识别架构包括:
[0038]
智能家居基础设施层,包括若干家庭智能设备;
[0039]
家庭路由器节点层,在训练阶段,家庭路由器利用家庭路由器管理平台下发的域名配置文件,实时采集流量数据,形成初始数据集,并基于初始数据集在深度学习管理平台的调度下训练联邦模型;在识别阶段,家庭路由器首先通过家庭路由器管理平台获得流转发策略表(策略表中记录这不同应用的优先等级),根据联邦模型的流分类结果,匹配流转发策略表,将优先级高的应用的流量包优先转发至其数据包的目的ip,优先级低的流量进行排队等待。从而实现应用的qos保障。;
[0040]
云平台层,包括家庭路由器管理平台和深度学习管理平台,其中,家庭路由器管理平台用于生成并向家庭路由器节点层下发域名配置文件和流量转发策略表;深度学习管理平台用于管理各家庭路由器的联邦模型的下发及训练调度,并实时调整联邦模型。
[0041]
本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0042]
1、本发明的基于联邦学习的家庭路由器数据流识别方法可以有效解决联邦学习
应用于流量识别领域时,无法在线自动标记数据形成数据集的问题。
[0043]
2、本发明的基于联邦学习的家庭路由器数据流识别方法通过节点选择降低了参与全局训练的节点数量,大大减少计算量和通信资源消耗。
[0044]
3、利用本发明提供的方法可以随时在终端进行数据标记任务,可以利用标记的数据随时重新训练模型,有效解决了应用更新导致流特征变化进而导致模型失效的问题。
附图说明
[0045]
附图用来提供对本发明的进一步理解,与说明描述一起用于解释本发明的实施例,并不构成对本发明的限制。在附图中:
[0046]
图1是本发明的基于联邦学习的家庭路由器数据流识别架构图。
[0047]
图2是本发明涉及的dns请求包dns回复包及域名解析出的ip示意图。
[0048]
图3是本发明生成的域名配置文件及域名-解析ip列表示意图。
[0049]
图4是本发明的基于联邦学习的家庭路由器数据流识别方法的联邦模型训练示意图。
[0050]
图5是本发明的基于联邦学习的家庭路由器数据流识别方法的流量识别转发示意图。
[0051]
图6是本发明的基于联邦学习的家庭路由器数据流识别方法的构建环状缓冲区方法示意图。
[0052]
图7是本发明的基于联邦学习的家庭路由器数据流识别方法的路由器内部流量识别流程图。
具体实施方式
[0053]
为了进一步理解本发明,下面结合实施例对本发明优选实施方案进行描述,但是应当理解,这些描述只是为进一步说明本发明的特征和优点,而不是对本发明权利要求的限制。
[0054]
该部分的描述只针对几个典型的实施例,本发明并不仅局限于实施例描述的范围。不同实施例的组合、不同实施例中的一些技术特征进行相互替换,相同或相近的现有技术手段与实施例中的一些技术特征进行相互替换也在本发明描述和保护的范围内。
[0055]
一种基于联邦学习的家庭路由器数据流识别架构,如图1所示,包括:
[0056]
智能家居基础设施层,包括若干家庭智能设备;
[0057]
家庭路由器节点层,主要包括hgu即家庭路由器,在训练阶段,家庭路由器利用家庭路由器管理平台下发的域名配置文件,实时采集流量数据,形成初始数据集,并基于初始数据集在深度学习管理平台的调度下训练联邦模型;在识别阶段,家庭路由器首先通过家庭路由器管理平台获得流转发策略表(策略表中记录这不同应用的优先等级),根据联邦模型的流分类结果,匹配流转发策略表,将优先级高的应用的流量包优先转发至其数据包的目的ip,优先级低的流量进行排队等待,从而实现应用的qos保障。
[0058]
云平台层,包括家庭路由器管理平台和深度学习管理平台,其中,家庭路由器管理平台用于生成并向家庭路由器节点层下发域名配置文件和流量转发策略表;深度学习管理平台用于管理各家庭路由器的联邦模型的下发及训练调度,并实时调整联邦模型以不断更
新迭代。
[0059]
一种基于联邦学习的家庭路由器数据流识别方法,包括联邦模型训练和流量识别与转发两个流程,其中,如图2所示,所述联邦模型训练流程包括:
[0060]
步骤1:域名配置文件生成。
[0061]
在家庭路由器管理平台对应用流量进行域名提取,生成域名配置文件。具体包括:
[0062]
在基于linux的安卓模拟器anbox内搭建域名提取环境、安装并启动应用,对该应用执行具有应用特点的操作,产生包含应用标识域名的流量,监听安卓模拟器anbox的虚拟网卡并采集域名流量;其中,所述具有应用特点的操作指用户在使用该应用时会进行的操作,采集的域名流量包含向服务器询问域名解析的请求包,以及域名服务器返回的包含通过域名解析得出的ip的回复包,用域名服务器返回的包含通过域名解析得出的ip的回复包中的合法ip的第一条rrname标识作为域名,同时将该回复包中所有合法ip作为该域名对应的解析ip数组,将包含解析ip数组的域名写入同一个文件作为该应用的域名配置文件。
[0063]
优选的,通过编写基于monkeyrunner的自动化脚本,自动在基于linux的安卓模拟器内安装并启动需要进行域名提取的应用。
[0064]
优选的,通过编写流量采集代码监听安卓模拟器anbox虚拟机的虚拟网卡采集域名流量。
[0065]
所述具有应用特点的操作指用于在使用该应用时会进行的操作,如长视频应用,多次随机播放电影综艺节目,每次播放不少于10分钟;短视频应用浏览不同的短视频不少于10条,购物类应用,浏览不同的商品详情不少于10次等。
[0066]
步骤2:初始数据集生成。
[0067]
在家庭路由器中,依据域名配置文件进行流量标记,生成初始数据集。具体包括:
[0068]
家庭路由器从家庭路由器管理平台获取域名配置文件,如图6所示,在采集前,修改路由器驱动,在其代码内嵌入钩子函数。,在采集时,利用钩子函数把网卡驱动收到的数据拷贝到环状缓冲区(ring buffer),再从环状缓冲区中获取udp数据和tcp数据;udp数据和tcp数据分别是以用户数据报协议和传输控制协议为载体的数据包。
[0069]
首先,逐一分析udp数据中的dns回复包,检查是否包含与域名配置文件一致的域名,若有,则将该dns回复包中的所有合法ip生成该域名的域名解析ip列表,并记录应用名称;若没有,则继续分析采集到的下一个dns回复包,直至将获取的所有dns回复包分析完毕。
[0070]
然后,解析udp数据和tcp数据,检查采集到的udp和tcp数据包中ip层的来源ip、目的ip是否在上述域名解析ip列表中,若在,则将该源目ip的所有流量包提取出来进行形成上行/下行的双向数据流,对这些数据流进行流特征提取并打上对应的应用标签,形成初始数据集;若不在,则继续检查后续捕获的包。
[0071]
在一个实施例中,所述流特征提取方法为:
[0072]
对tcp数据和udp数据提取流特征:首先使用五元组来标识数据包(这里的数据包为上述采集到的udp和tcp数据包中来源ip、目的ip和域名解析ip列表中ip匹配上的数据包),提取形成上行/下行的数据流,五元组作为流的标记(key),保存在hash表中,同时保存有流的第一个数据包的时间戳、最后一个数据包的时间戳;如果一个流的持续时间超过120秒,则把流截断、输出一次特征并且把hash表中的信息清除,后续的数据包作为新的流计算
特征;
[0073]
tcp数据包的fin标识作为流的结束标识,fin标识出现后立刻输出该流的ai特征并且把hash表中的信息清除;
[0074]
指标计算中,把符合tcp syn包的src ip

》dst ip方向的数据包称为“正向”,反之称为“反向”;没有tcp syn包的流,取第一个数据包的src ip

》dst ip方向称为“正向”,反之称为“反向”;
[0075]
每个流输出20个特征,且输出特征时根据ai芯片的输入要求转换成8位(c语言的int8_t类型)。
[0076]
在本实施例中,20个特征的流特征具体计算方法为:
[0077]
(1)前向包头的总字节数:所有前向包头大小的总合,设b为包头的字节数,b的范围为{b1,b2,b3,

,bn},则s(b)=b1 b2 b3

bn。
[0078]
(2)反向包头的总字节数:使用方向数据包做统计,方法同上。
[0079]
(3)每秒发送的数据包数:设s代表一个流的数据个数,s1为第一个数据包的时间戳,s2为最后一个数据包的时间戳。
[0080]
(4)每秒前向发送的数据包数:计算方法同上,s为前向数据包个数。
[0081]
(5)每秒反向发送的数据包数:计算方法同上,s为反向数据包个数。
[0082]
(6)最小流长,流长是每个数据包的有效字节,设有效字节为l,一个流包括{l1,l2,l3,

,ln},共n个。那么最小流长就是min(l)=min(l1,l2,l3,

,ln)。
[0083]
(7)最大流长:变量的定义同上,计算max(l)=max(l1,l2,l3,

,ln)。
[0084]
(8)平均流长:变量的定义同上,计算
[0085]
(9)流长标准差:变量的定义同上,计算
[0086]
(10)流长方差:变量的定义同上,计算var(l)=(sta(l))2。
[0087]
(11)fin标签的数据包的数量:统计流中包含有fin标签的数据包的数量。
[0088]
(12)syn标签的数据包的数量:统计流中包含有syn标签的数据包的数量。
[0089]
(13)rst标签的数据包的数量:统计流中包含有rst标签的数据包的数量。
[0090]
(14)psh标签的数据包的数量:统计流中包含有psh标签的数据包的数量。
[0091]
(15)ack标签的数据包的数量:统计流中包含有ack标签的数据包的数量。
[0092]
(16)urg标签的数据包的数量:统计流中包含有urg标签的数据包的数量。
[0093]
(17)cwe标签的数据包的数量:统计流中包含有cwe标签的数据包的数量。
[0094]
(18)ece标签的数据包的数量:统计流中包含有ece标签的数据包的数量。
[0095]
(19)前向初始窗口数:记录流的第一个前向数据包的窗口值。
[0096]
(20)后向窗口数:记录流的最后一个反向数据包的窗口值。
[0097]
步骤3:联邦模型训练。
[0098]
在深度学习管理平台的调度下,在家庭路由器上基于初始模型利用初始数据集进行联邦训练。
[0099]
在深度学习管理平台的调度下,基于步骤2不断采集生成的初始数据集进行联邦训练。联邦训练时,采用基于节点模型选择的联邦聚合算法,每次全局聚合只挑选部分节点
参与,大大减少计算量和通信资源的消耗,其具体步骤如下:
[0100]

收集各节点用于训练的数据量和训练损失,并形成损失数组l=[l0,l1,l2……
ln]和数据量数组d=[d0,d1,d2……dn
],所述损失数组和数据量数组分别存放第0个节点到第n个节点最终的训练损失和用于训练的数据量。
[0101]

对训练损失和数据量统一量纲处理,都统一成值越大对结果影响越积极,方便后续计算,利用公式(1)对训练损失进行处理,利用公式(2)对数据量进行处理。
[0102][0103][0104]

根据步骤

得到每个节点的损失值和数据量,形成新的损失数组l

=[l
′0,l
′1,l
′2……
l
′n],和新的数据量数组d

=[d
′0,d
′1,d
′2……d′n],利用公式(3)计算评价值t。
[0105]
ti=l
′i*d
′i,i=1,2,

,n
ꢀꢀ
(3)
[0106]

将每个节点的评价值从小到大进行排序,得到前m个模型的节点id参与模型的聚合。
[0107]

利用fed-avg算法对选出的m个模型进行聚合。
[0108]

当全局损失值比上一轮变化小于设定阈值时,停止模型训练。
[0109]
如图3所示,所述流量识别与转发流程包括:
[0110]
步骤4:流量识别与转发。
[0111]
如图6所示,根据应用类型制定流转发策略表,利用家庭路由器管理平台进行下发流转发策略表。
[0112]
路由器利用基于零拷贝的高速分组缓存技术,对实时流量进行复制,同时对获取的流量进行特征提取,形成深度学习模型的输入特征。
[0113]
路由器使用基于联邦训练的深度学习模型对采集的流量进行应用分类,并根据流转发策略表依据ip基于openwrt进行不同优先级的路由转发。
[0114]
这里本发明的描述和应用是说明性的,并非想将本发明的范围限制在上述实施例中。说明书中所涉及的效果或优点等相关描述可因具体条件参数的不确定或其它因素影响而可能在实际实验例中不能体现,效果或优点等相关描述不用于对发明范围进行限制。这里所披露的实施例的变形和改变是可能的,对于那些本领域的普通技术人员来说实施例的替换和等效的各种部件是公知的。本领域技术人员应该清楚的是,在不脱离本发明的精神或本质特征的情况下,本发明可以以其它形式、结构、布置、比例,以及用其它组件、材料和部件来实现。在不脱离本发明范围和精神的情况下,可以对这里所披露的实施例进行其它变形和改变。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献