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

面向软件定义网络的异常检测方法、装置及设备

2022-12-13 23:10:55 来源:中国专利 TAG:


1.本发明属于互联网技术领域,设计一种面向软件定义网络(software-defined networking,sdn)的异常检测方法、装置及设备,提供了一种自适应的异常检测方法,在提高异常检测准确率的同时可以降低网络负载。


背景技术:

2.互联网技术的不断创新给人们的生活带来了诸多便利,大数据、云计算和物联网等新技术已经渗透到生活中的方方面面。但是这些新技术也对传统网络的流量传输和处理能力提出了新的要求。传统互联网为了满足这些新兴的需求,使得当前控制层和数据层相互耦合的网络结构更加复杂化。网络研究人员在深入研究了传统网络的结构之后,提出了多种创新方式,其中得到了最广泛应用的一种新型网络范式就是软件定义网络。
3.软件定义网络的创新之处主要体现在将网络设备中的控制层和数据层解耦,将控制层面的功能抽象为独立的控制器,使用控制器集中管理数据层面中的所有网络设备。软件定义网络因为其独特的网络架构使得它集中管理和统一控制的特性尤为突出,目前已经在数据中心、电信运营商等诸多场景中得到了广泛的应用。但是这种特性也给软件定义网络带来了新的安全性挑战,限制了软件定义网络的创新和发展。因此如何快速发现并缓解软件定义网络中的异常成为了该领域的关键问题之一,软件定义网络的结构也使得它相对于传统网络具有更好的统一监控和动态调控的能力,可以更好地结合异常检测技术。


技术实现要素:

4.本发明提出了一种面向软件定义网络的异常检测方法、装置及设备,所述方法通过定期的监测网络获取网络拓扑和链路属性,利用图论算法和轻量级的异常检测算法根据网络状态的变化及时而有效地做出对数据收集节点的调整,将提取的特征数据发送到多分类异常算法实现更细粒度的异常检测。
5.为了达到上述目的,本发明采用以下技术方案:
6.一种面向软件定义网络的异常检测方法,所述方法包括:
7.获取软件定义网络的网络拓扑,所述网络拓扑中的节点包括:所述软件定义网络中的交换机,所述网络拓扑中的边包括:所述交换机的连接关系,所述节点的属性包括:若干统计周期内的链路属性;
8.将各节点所存储的链路属性转换为表示网络流量情况的时间序列数据,并使用固定的滑动窗口大小对所述时间序列数据进行切分,通过比较时序片段的预测值和真实观测值之间的相对误差,判断所述软件定义网络中所有节点间的链路状态是否存在异常;
9.在所述软件定义网络中所有节点间的至少一链路状态存在异常的情况下,计算所述网络拓扑中的中心节点,并根据链路状态异常情况以及节点之间的连接关系,得到所述网络拓扑中的异常节点;
10.基于所述中心节点和所述异常节点的流表信息,识别所述软件定义网络中的异常
行为。
11.进一步地,所述获取软件定义网络的网络拓扑,包括:
12.基于所述软件定义网络的交换机以及所述交换机的连接关系,获取网络拓扑中的节点与边;
13.针对每一统计周期,每一所述节点开启周期线程scheduledexecutor,实例化openflow协议提供的端口查询消息和流表查询消息的状态获取方法,得到状态获取实例;
14.每一所述节点使用所述状态获取实例中的request_stat方法下发ofpt_stats_request消息,实时查询所述软件定义网络在交换中的端口信息和流表信息,以得到查询信息;
15.每一所述节点按照openflow协议解析所述查询消息并记录本地信息之后,按照所述openflow协议构成指定数据结构,以生成reply消息;
16.每一所述节点将所述reply消息返回给控制器;
17.所述控制器处理所述reply消息,得到该节点的相应链路在相应的统计周期内的链路属性;其中所述链路属性包括:链路带宽bd、链路丢包率loss、链路时延t
delay

18.进一步地,所述控制器处理所述reply消息,得到该节点的相应链路在相应的统计周期内的链路带宽bd,包括:
19.获取该统计周期内的物理链路的初始固定带宽capacity、该统计周期的时间period、当前时刻通过交换机各个端口的数据包字节数now_byte以及上一个时刻通过交换机各个端口的数据包字节数pre_byte;
20.计算该周期内链路中流量传输的速率
21.计算所述链路带宽bd=capacity-speed*period。
22.进一步地,所述控制器处理所述reply消息,得到该节点的相应链路在相应的统计周期内的链路丢包率loss,包括:
23.针对所述网络拓扑中存在连接关系的任两个节点s1与节点s2,分别获取该统计周期内节点s2已接收的数据包数量rx_packets
s2(i)
、上一个统计周期内节点s2已接收的数据包数量rx_packets
s2(i-1)
,以及该统计周期内节点s1已发送的数据包数量tx_packets
s1(i)
、上一个统计周期内节点s1已接收的数据包数量tx_packets
s1(i-1)

24.计算该统计周期内的链路丢包率
25.进一步地,所述控制器处理所述reply消息,得到该节点的相应链路在相应的统计周期内的链路时延t
delay
,包括:
26.针对所述网络拓扑中存在连接关系的任两个节点s1与节点s2,分别获取所述控制器与节点s1之间的往返时延rtt
s1
、所述控制器与节点s2之间的往返时延rtt
s2
以及所述节点s1与所述节点s2之间的往返时延t
travel

27.计算在该统计周期内的链路时延
28.进一步地,所述将各节点所存储的链路属性转换为表示网络流量情况的时间序列数据,并使用固定的滑动窗口大小对所述时间序列数据进行切分,通过比较时序片段的预测值和真实观测值之间的相对误差,判断在所述软件定义网络中所有节点间的链路状态是
否存在异常,包括:
29.对所述链路属性进行归一化操作;
30.基于归一化操作后的数据,获取表示网络流量情况的时间序列数据;
31.以固定的滑动窗口大小对所述时间序列数据进行切片,并进行缩放变换,以得到若干个输入数据;
32.将一输入数据输入lstm模型以得到预测值,获取对应时刻的真实观测值,并将所述滑动窗口向前移动,将所述滑动窗口前边缘所对应的真实观测值添加到观测窗口中,并去除后边缘的原始数据,开始下一个滑动窗口的预测;
33.直到检测完所有滑动窗口中的数据,判断在所述软件定义网络中所有节点间的链路状态是否存在异常。
34.进一步地,所述计算所述网络拓扑中的中心节点,包括:
35.获取所述网络拓扑中与节点s1存在连接关系的所有节点s2;
36.计算所述节点s1与每一所述节点s2之间的最短路径长度d
s1,s2

37.计算节点s1的紧密度其中,cc为紧密度表示符,n表示所述节点s2的数量。
38.进一步地,所述基于所述中心节点和所述异常节点的流表信息,识别所述软件定义网络中的异常行为,包括:
39.在所述中心节点和所述异常节点的流表中提取信息,得到流表信息;
40.对所述流表信息的特征进行数值化和归一化处理后,得到特征数据集;其中,所述对所述流表信息的特征进行数值化处理包括:基于引入交叉熵理论概念处理所述流表信息的文本特征,所述流表信息的特征进行归一化处理包括:使用min-max方法对所述流表信息的数据型特征进行归一化处理;
41.将所述特征数据集输入基于机器学习构建的一异常分类模型中,得到导致所述软件定义网络中链路异常的异常行为。
42.一种面向软件定义网络的异常检测装置,所述装置包括:
43.网络拓扑管理模块,用于获取软件定义网络的网络拓扑,所述网络拓扑中的节点包括:所述软件定义网络中的交换机,所述网络拓扑中的边包括:所述交换机的连接关系,所述节点的属性包括:若干统计周期内的链路属性;
44.异常检测模块,用于将各节点所存储的链路属性转换为表示网络流量情况的时间序列数据,并使用固定的滑动窗口大小对所述时间序列数据进行切分,通过比较时序片段的预测值和真实观测值之间的相对误差,判断所述软件定义网络中所有节点间的链路状态是否存在异常;
45.自适应数据收集模块,用于在所述软件定义网络中所有节点间的至少一链路状态存在异常的情况下,计算所述网络拓扑中的中心节点,并根据链路状态异常情况以及节点之间的连接关系,得到所述网络拓扑中的异常节点;
46.异常分类模块,用于基于所述中心节点和所述异常节点的流表信息,识别所述软件定义网络中的异常行为。
47.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执
行时实现如上述面向软件定义网络的异常检测方法。
48.一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述面向软件定义网络的异常检测方法。
49.一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述面向软件定义网络的异常检测方法。
50.本发明的有益效果如下:
51.为了解决当前基于sdn的异常检测存在的数据收集冗余低效、缺乏有效验证实验的问题,本发明提出了一个集合了自适应数据采集框架的sdn异常检测方案,用于平衡网络负载和异常检测的精度。
附图说明
52.图1是本发明方案的流程图。
53.图2是链路属性监测模块处理的流程图。
54.图3是异常检测模块处理的流程图。
55.图中100、200、300、400、210、220、230、240、250、310、320、330:步骤。
具体实施方式
56.为使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明的目的、特征和优点能够更加明显易懂,下面结合附图和事例对本发明中技术核心作进一步的详细说明。
57.本发明技术提供一种面向软件定义网络的异常检测方法,如图1所示,具体包括以下步骤:
58.步骤100:获取软件定义网络的网络拓扑。
59.sdn控制器通过lldp协议监控全网的拓扑信息,获取数据转发平面中所有网络设备的位置信息和这些网络设备之间的连接关系。具体来说,该sdn控制器通过网络拓扑管理模块向所有连接的交换机发送包含一条lldp负载中的域port id tlv为零的数据包以及交换机针对该lldp数据包所有处理方法的packet-out消息,交换机收到消息按照该packet-out消息的指令首先将从controller端口接收到的lldp数据包以及将其源mac地址设置为端口mac地址,然后向所有相邻的交换机广播该lldp信息,其中该lldp数据包将通过chassis id tlv和port id tlv字段表明该数据包将要发送的交换机的dpid以及端口号;邻居节点收到非controller端口接收到的lldp数据包后向控制器发送包含该lldp数据包的packet-in消息。控制器通过解析收到的packet-in消息中的lldp数据包来源得到目的交换机与目的端口,通过解析lldp数据包,得到源mac和源交换机,通过源mac地址锁定对应的端口号,最终明确所有交换机之间的链路连接情况,根据链路连接情况在网络拓扑中标识对应交换机节点和端口。
60.本发明在配置阶段获得的关于交换机端口的所有信息完成mac地址和交换机端口的一一对应,通过修改该以太数据包的源mac地址为端口mac地址,达到将lldp负载中port id tlv域和端口mac映射的目的;本发明通过改进ofdp中对传统网络中的链路发现协议的
使用方法,使fattree等网络在控制器lldp数据包处理量从指数级,下降为常数级。
61.本发明利用openflow协议提供的信息统计功能,通过控制器周期性地向交换机下发ofpt_stats_request消息,交换机收到查询消息后将回复对应的统计信息,从而得到监控全网的链路属性。该链路属性包括链路带宽、链路延迟和链路丢包率。
62.具体来说,如图2所示,包括:
63.步骤110:开启周期线程scheduledexecutor,实例化openflow协议提供的端口查询消息和流表查询消息等状态获取方法。
64.步骤120:使用状态获取实例中的request_stat方法下发ofpt_stats_request消息,实时查询交换中的端口信息和流表信息两类。
65.步骤130:交换机接收到查询消息后,会按照openflow协议解析该查询消息并记录该交换机的相关信息,最后按照该openflow协议构成指定数据结构返回对应reply消息给控制器。
66.步骤140:控制器注册对应handler方法处理reply消息,通过解析该reply消息中所包含的数据结构将交换机的端口状态、流表等信息存储到控制器的全局消息中;通过对上述reply消息中所包含的状态数据的二次计算完成网络中各节点的链路带宽bd、链路丢包率loss、链路时延t
delay
等链路属性的计算完善网络状态蓝图。计算方法如下所示,其中capacity表示物理链路的初始固定带宽,speed表示计算周期内链路中流量传输的速率,period表示统计周期的时间;now_byte表示当前时刻通过交换机各个端口的数据包字节数,pre_byte表示上一个时刻通过交换机各个端口的数据包字节数;rx_packets是统计周期内交换机已接收到的数据包数量,tx_packets表示统计周期内交换机已发送的数据包数量,i表示周期的标记;loss表述该链路的丢包率,rtt
s1
表示消息在控制器与s1交换机之间往返时延,rtt
s2
表示消息在控制器与s1交换机相连的s2交换机之间往返时延,t
travel
表示交换机s1和s2之间往返时延。
67.bd=capacity-speed*period
[0068][0069][0070][0071]
步骤150:周期性地更新网络图谱和计算网络中的链路属性,存储到图结构中,从而得到网络拓扑。
[0072]
步骤200:将各节点所存储的链路属性转换为表示网络流量情况的时间序列数据,并使用固定的滑动窗口大小对时间序列数据进行切分,通过比较时序片段的预测值和真实观测值之间的相对误差,判断软件定义网络中所有节点间的链路状态是否存在异常。
[0073]
网络流量具有周期性和季节性,因此可以使用基于网络流量的预测算法来判断网络中是否存在异常。根据软件定义网络独特的架构,设计基于软件定义网路的异常检测方案,首先提取存储在控制器全局消息和图结构的各节点中表示网络流量情况的链路属性的历史数据进行处理和分析,然后使用lstm模型对历史数据进行模型训练,通过比较模型输
出的预测值和观测值之间的相对误差判断该网络中所有节点间的链路状态是否存在异常。
[0074]
一示例中,本发明的异常检测过程包括:
[0075]
步骤210:提取步骤150中图结构中各节点所存储的周期性收集的带宽、时延、丢包率等链路状态数据,将该数据转换为表示网络流量情况的时间序列数据。该异常检测模型由3个步骤组成:首先,对输入数据进行预处理并将处理后的标准数据发送到预测模块;然后通过预测模块得到预测结果,发送到后续的处理模块;最后,通过链路属性检测模块得到对应时刻的真实观测值,将历史观测窗口向前移动,将窗口前边缘所对应的链路属性值添加到观测窗口中,并去除后边缘的原始数据,开始下一个预测。
[0076]
步骤220:在数据预处理阶段,历史数据将会被一个长度为w的时间窗口切片,随着时间窗口沿时间轴滑动,建立适合lstm模型的序列数据结构。由于所收集的数据存在量纲、数量级上的差异,所以需要在预处理阶段对原始数据进行归一化操作,为进一步的特征分析和预测做好准备。使用一个预处理模块以固定的滑动窗口大小对时间序列数据进行切片,然后进行缩放变换以构造合适的数据作为输入。
[0077]
步骤230:为了实现更好的模型训练效果,本发明采用组合模型进行训练。在模型训练过程中,使用小批量随机梯度下降(stochastic gradient descent,sgd)和adam优化器来实现模型参数的学习,将minibatch的大小设置为64,学习率设置为0.001。以均方误差作为优化的目标函数,通过反向传播学习训练参数。
[0078]
步骤300:在所述软件定义网络中所有节点间的至少一链路状态存在异常的情况下,计算所述网络拓扑中的中心节点,并根据链路状态异常情况以及节点之间的连接关系,得到所述网络拓扑中的异常节点。
[0079]
通过仅在关键节点群中收集特征数据的方式实现数据的自适应收集,可以有效地降低网络负载。根据软件定义网络中的网络拓扑和流量情况,该自适应数据收集模块主要分为中心节点选取和异常节点选取两个部分。其中,当网络处于正常状态时,为了减少数据收集的冗余,只考虑网络中的中心节点群;而当网络出现异常时,为了提升对异常流量的感知能力,通过基于预测算法的结果定位到异常节点后对这些异常节点进行数据收集。
[0080]
一示例中,本发明利用图论算法来计算网络拓扑的中心节点,通过对所有节点进行紧密度排序获取软件定义网络中的中心节点群。当节点的紧密度越大时,它与其它节点的最短路径就越短,这表明该节点在该网络中的位置越接近于中心位置。
[0081]
其中d
ij
代表节点i与节点j之间的最短路径长度,如公式所示节点的紧密度c就是它与连通图中其它节点的之和的倒数。节点的紧密度越大,它与其它节点的最短路径就越短,这表明该节点在该网络中的位置越接近于中心位置。通过紧密度排序可以找出该网络中的中心节点群。
[0082][0083]
一示例中,基于步骤200输出的相对误差判断该网络中所有节点间的链路状态是否存在异常,以此定位关键位置获取异常节点,依据原始网络拓扑为基础,通过判断节点与异常链路的连接关系决定是否从该拓扑图中删除该节点,最终简化得到一个异常流量拓扑图,该异常流量拓扑图中的所有节点均会被视为异常节点。
[0084]
步骤400:基于所述中心节点和所述异常节点的流表信息,识别所述软件定义网络中的异常行为基于机器学习算法实现异常分类模块,对网络中的异常行为进行分类。
[0085]
首先在openflow交换机的流表中提取信息,经过数值化和归一化处理后得到特征数据集,使用训练好的模型进行异常分类。
[0086]
根据异常行为的特点选取合适的特征,在数据预处理阶段引入交叉熵的理论概念处理文本特征,使用min-max方法对原始数据型特征进行归一化处理,将所有特征的数值都保持在相同的[0-1]范围内,然后使用这些数值化和归一化后的特征样本训练一个有监督多分类模型。
[0087]
综上所述,本发明公开的一种面向软件定义网络的异常检测方法,通过定期的监测网络获取网络拓扑和链路属性,利用图论算法和轻量级的异常检测算法根据网络状态的变化及时而有效地做出对数据收集节点的调整,将提取的特征数据发送到多分类异常算法实现更细粒度的异常检测,从而平衡网络负载和异常检测的精度。
[0088]
另一方面,本发明还公开了一种面向软件定义网络的异常检测装置,包括:
[0089]
网络拓扑管理模块,用于获取软件定义网络的网络拓扑,所述网络拓扑中的节点包括:所述软件定义网络中的交换机,所述网络拓扑中的边包括:所述交换机的连接关系,所述节点的属性包括:若干统计周期内的链路属性;
[0090]
异常检测模块,用于将各节点所存储的链路属性转换为表示网络流量情况的时间序列数据,并使用固定的滑动窗口大小对所述时间序列数据进行切分,通过比较时序片段的预测值和真实观测值之间的相对误差,判断所述软件定义网络中所有节点间的链路状态是否存在异常;
[0091]
自适应数据收集模块,用于在所述软件定义网络中所有节点间的至少一链路状态存在异常的情况下,计算所述网络拓扑中的中心节点,并根据链路状态异常情况以及节点之间的连接关系,得到所述网络拓扑中的异常节点;
[0092]
异常分类模块,用于基于所述中心节点和所述异常节点的流表信息,识别所述软件定义网络中的异常行为。
[0093]
有关异常检测装置的具体执行过程、有益效果等阐述,请参见上述方法实施例的介绍说明,此处不多赘述。
[0094]
在示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述面向软件定义网络的异常检测方法。
[0095]
在示例性实施例中,还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行,以实现上述面向软件定义网络的异常检测方法。
[0096]
在示例性实施例中,还提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述面向软件定义网络的异常检测方法。
[0097]
尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
再多了解一些

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

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

相关文献