一种基于机器学习的域内故障检测方法、终端及存储介质转让专利

申请号 : CN202011330617.1

文献号 : CN112636998B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李清叶连金江勇成剑王向荣

申请人 : 鹏城实验室清华大学深圳国际研究生院南方科技大学

摘要 :

本发明公开了一种基于机器学习的域内故障检测方法、终端及存储介质,通过根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点;获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息;根据预设分类算法以及所述流量特征变化信息确定故障的节点。可见,本发明中在进行域内故障检测时完全不需要使用探测包进行检测,即无需受到探测包频率的影响,并且本发明不会对影响网络性能,也不会造成网络反馈延时,因此解决了现有技术中在进行域内故障检测时难以确定合适的探测包发送频率的问题。

权利要求 :

1.一种基于机器学习的域内故障检测方法,其特征在于,所述方法包括:根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点;

获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息;

根据预设分类算法以及所述流量特征变化信息确定故障的节点;

所述根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点包括:获取网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率;

将所述度数最大的节点作为监测节点以及将所述频率最大的节点作为监测节点。

2.根据权利要求1所述的一种基于机器学习的域内故障检测方法,其特征在于,所述获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息包括:

获取所述监测节点的监测数据;

建立连续的采样窗口;

根据所述采样窗口以及所述监测数据,对被监测的节点和链路进行特征工程,得到被监测的节点和链路的流量特征变化信息。

3.根据权利要求2所述的一种基于机器学习的域内故障检测方法,其特征在于,所述根据所述采样窗口以及所述监测数据,对被监测的节点和链路进行特征工程,得到被监测的节点和链路的流量特征变化信息包括:根据所述监测数据和所述采样窗口,获取被监测的节点和链路在每一个采样窗口内的流量特征数据;

对所有采样窗口内的流量特征数据按时间顺序进行分析和整合,得到所述流量特征数据的变化数据,将所述变化数据作为所述被监测的节点和链路的流量特征变化信息。

4.根据权利要求3所述的一种基于机器学习的域内故障检测方法,其特征在于,所述被监测的节点和链路的流量特征数据包括:以预设地址为源地址的数据包的数量信息;

以预设地址为目的地址的数据包的数量信息;

数据包的数量信息;

起始窗口变量信息;

本级窗口的以预设地址为源地址的数据包的数量信息与上级窗口的以预设地址为源地址的数据包的数量信息的第一比值信息;

本级窗口的以预设地址为目的地址的数据包的数量信息与上级窗口的以预设地址为目的地址的数据包的数量信息的第二比值信息;

终止窗口变量信息;

本级窗口的以预设地址为源地址的数据包的数量信息与后级窗口的以预设地址为源地址的数据包的数量信息的第三比值信息;

本级窗口的以预设地址为目的地址的数据包的数量信息与后级窗口的以预设地址为目的地址的数据包的数量信息的第四比值信息。

5.根据权利要求1所述的一种基于机器学习的域内故障检测方法,其特征在于,所述根据预设分类算法以及所述流量特征变化信息确定故障的节点包括:通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果;

根据所述分类结果确定故障的节点。

6.根据权利要求5所述的一种基于机器学习的域内故障检测方法,其特征在于,所述通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果包括:

将所述节点的流量特征变化信息作为所述预设分类算法的输入信息;

获取所述预设分类算法输出的函数值,当所述预设分类算法输出的函数值大于或者等于预设函数值时,得到分类结果为所述节点为故障的节点。

7.根据权利要求5所述的一种基于机器学习的域内故障检测方法,其特征在于,所述通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果包括:

将所述链路的流量特征变化信息作为所述预设分类算法的输入信息;

获取所述预设分类算法输出的函数值,当所述预设分类算法输出的函数值大于或者等于预设函数值时,所述分类的分类结果为所述链路为故障的链路;

获取与预设节点相连的所有链路的分类结果,根据所述分类结果计算出所述预设节点相连的所有链路中故障的链路的数量占所有链路的数量的比例;

将所述比例与预设比例进行比较,当所述比例大于所述预设比例时,得到分类结果为所述预设节点为故障的节点。

8.一种移动终端,其特征在于,包括:处理器、与处理器通信连接的存储介质,所述存储介质适于存储多条指令;所述处理器适于调用所述存储介质中的指令,一致性实现上述权利要求1‑7任一项所述的一种基于机器学习的域内故障检测方法的步骤。

9.一种计算机可读存储介质,其上存储有多条指令,其特征在于,所述指令适用于由处理器加载并执行,以实现上述权利要求1‑7任一项所述的一种基于机器学习的域内故障检测方法的步骤。

说明书 :

一种基于机器学习的域内故障检测方法、终端及存储介质

技术领域

[0001] 本发明涉及域内故障检测领域,尤其涉及的是一种基于机器学习的域内故障检测方法、终端及存储介质。

背景技术

[0002] 现行的域内故障检测方法主要基于探测包的检测。然而,基于探测包的域内故障检测方法主要面临发送探测包频率的问题,如果探测包发送频率过高,那么网络中大量的
带宽用于转发探测包,而不是数据包,这对于网络性能造成了重大的影响;如果探测包发送
频率过低,那么无法及时地反馈网络的实时情况。可见,现有技术中基于探测包频率来实现
域内故障检测方法时会影响网络性能,且造成网络反馈延时。
[0003] 因此,现有技术还有待改进和发展。

发明内容

[0004] 本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种基于机器学习的域内故障检测方法、终端及存储介质,旨在解决现有技术中在进行域内故障检测时难
以确定合适的探测包发送频率的问题。
[0005] 本发明解决问题所采用的技术方案如下:
[0006] 第一方面,本发明实施例提供一种基于机器学习的域内故障检测方法,其中,所述方法包括:
[0007] 根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点;
[0008] 获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息;
[0009] 根据预设分类算法以及所述流量特征变化信息确定故障的节点。
[0010] 在一种实施方式中,所述根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点包括:
[0011] 获取网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率;
[0012] 将所述度数最大的节点作为监测节点以及将所述频率最大的节点作为监测节点。
[0013] 在一种实施方式中,所述获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息包括:
[0014] 获取所述监测节点的监测数据;
[0015] 建立连续的采样窗口;
[0016] 根据所述采样窗口以及所述监测数据,对被监测的节点和链路进行特征工程,得到被监测的节点和链路的流量特征变化信息。
[0017] 在一种实施方式中,所述根据所述采样窗口以及所述监测数据,对被监测的节点和链路进行特征工程,得到被监测的节点和链路的流量特征变化信息包括:
[0018] 根据所述监测数据和所述采样窗口,获取被监测的节点和链路在每一个采样窗口内的流量特征数据;
[0019] 对所有采样窗口内的流量特征数据按时间顺序进行分析和整合,得到所述流量特征数据的变化数据,将所述变化数据作为所述被监测的节点和链路的流量特征变化信息。
[0020] 在一种实施方式中,所述被监测的节点和链路的流量特征数据包括:
[0021] 以预设地址为源地址的数据包的数量信息;
[0022] 以预设地址为目的地址的数据包的数量信息;
[0023] 数据包的数量信息;
[0024] 起始窗口变量信息;
[0025] 本级窗口的以预设地址为源地址的数据包的数量信息与上级窗口的以预设地址为源地址的数据包的数量信息的第一比值信息;
[0026] 本级窗口的以预设地址为目的地址的数据包的数量信息与上级窗口的以预设地址为目的地址的数据包的数量信息的第二比值信息;
[0027] 终止窗口变量信息;
[0028] 本级窗口的以预设地址为源地址的数据包的数量信息与后级窗口的以预设地址为源地址的数据包的数量信息的第三比值信息;
[0029] 本级窗口的以预设地址为目的地址的数据包的数量信息与后级窗口的以预设地址为目的地址的数据包的数量信息的第四比值信息。
[0030] 在一种实施方式中,所述根据所述流量特征变化信息确定故障的节点包括:
[0031] 通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果;
[0032] 根据所述分类结果确定故障的节点。
[0033] 在一种实施方式中,所述通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果包括:
[0034] 将所述节点的流量特征变化信息作为所述预设分类算法的输入信息;
[0035] 获取所述预设分类算法输出的函数值,当所述预设分类算法输出的函数值大于或者等于预设函数值时,得到分类结果为所述节点为故障的节点。
[0036] 在一种实施方式中,所述通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果包括:
[0037] 将所述链路的流量特征变化信息作为所述预设分类算法的输入信息;
[0038] 获取所述预设分类算法输出的函数值,当所述预设分类算法输出的函数值大于或者等于预设函数值时,所述分类的分类结果为所述链路为故障的链路;
[0039] 获取与预设节点相连的所有链路的分类结果,根据所述分类结果计算出所述预设节点相连的所有链路中故障的链路的数量占所有链路的数量的比例;
[0040] 将所述比例与预设比例进行比较,当所述比例大于所述预设比例时,得到分类结果为所述预设节点为故障的节点。
[0041] 第二方面,本发明实施例提供一种移动终端,包括:处理器、与处理器通信连接的存储介质,所述存储介质适于存储多条指令;所述处理器适于调用所述存储介质中的指令,
一致性实现上述任一项所述的一种基于机器学习的域内故障检测方法的步骤。
[0042] 第二方面,本发明实施例提供一种计算机可读存储介质,其上存储有多条指令,所述指令适用于由处理器加载并执行,以实现上述任一项所述的一种基于机器学习的域内故
障检测方法的步骤。
[0043] 本发明的有益效果:本发明实施例通过根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点;获取所述监测
节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变
化信息;根据预设分类算法以及所述流量特征变化信息确定故障的节点。可见,本发明中在
进行域内故障检测时完全不需要使用探测包进行检测,即无需受到探测包频率的影响,并
且本发明不会对影响网络性能,也不会造成网络反馈延时,因此解决了现有技术中在进行
域内故障检测时难以确定合适的探测包发送频率的问题。

附图说明

[0044] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本
发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,
还可以根据这些附图获得其他的附图。
[0045] 图1是本发明实施例提供的一种基于机器学习的域内故障检测方法的流程示意图。
[0046] 图2是本发明实施例提供的确定监测节点的流程示意图。
[0047] 图3是本发明实施例提供的获取流量特征变化信息的流程示意图。
[0048] 图4是本发明实施例提供的确定故障的节点的流程示意图。
[0049] 图5是本发明实施例提供的P4可编程交换机的内部结构图。
[0050] 图6是本发明实施例提供的TCP的拥塞控制逻辑示意图。
[0051] 图7是本发明实施例提供的节点S2故障的网络拓扑结构图。
[0052] 图8是本发明实施例提供的一种基于机器学习的域内故障检测的模块连接关系图。
[0053] 图9是本发明实施例提供的终端的原理框图。

具体实施方式

[0054] 为使本发明的目的、技术方案及优点更加清楚、明确,以下参照附图并举实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用
于限定本发明。
[0055] 需要说明,若本发明实施例中有涉及方向性指示(诸如上、下、左、右、前、后……),则该方向性指示仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、
运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。
[0056] 随着5G技术的逐渐成熟与推广,多种5G新技术应用对于网络流量和网络可靠性提出了更高的要求。以直播视频流量为例,思科2018年的网络流量预测报告显示,直播视频流
量在2017年到2022年将增长15倍。随着直播视频流量的不断增长,实现用户体验质量(QoE)
联合优化具有重要意义。同时,物联网、智慧交通等多种新应用的出现对于网络的可靠性和
时延提出了更高要求。
[0057] 然而,网络中时常由于硬件原因等发生链路故障、节点故障,同时访问量的过大也会造成网络拥塞。在这一过程中,大量的数据丢包及慢启动对于网络性能造成重大影响,用
户体验急剧下降。现行的域内故障检测方法主要基于探测包的检测。BFD协议和OSPF方法分
别为域内故障检测提供了两种方法。BFD协议为点对点之间建立了毫秒级的双向检测,而
OSPF协议通过设置点和点之间互相发送hello报文段来进行域内故障检测。然而,基于探测
包的域内故障检测方法主要面临发送探测包频率的问题,如果探测包发送频率过高,那么
网络中大量的带宽用于转发探测包,而不是数据包,这对于网络性能造成了重大的影响;如
果探测包发送频率过低,那么无法及时地反馈网络的实时情况。因此,现有的域内故障检测
方法难以确定合适的探测包发送频率,且同时存在通信开销过大的问题。
[0058] 针对现有技术的上述缺陷,本发明提供了一种基于机器学习的域内故障检测方法。TCP(Transmission Control Protocol)是网络通信模型OSI7层网络模型中,第四层传
输层协议,主要作用是数据传输,TCP主要确保不同节点之间的端到端数据传输,本发明正
是通过定期收集TCP流中的数据包数量设计特征,根据TCP流在重发等情况下的在不同时间
段内的不同表现进行域内故障检测。可见,本发明中在进行域内故障检测时完全不需要使
用探测包进行检测,即无需受到探测包频率的影响,并且本发明还可以有效减少控制器与
可编程交换机的通信开销,不会对影响网络性能,也不会造成网络反馈延时。因此解决了现
有技术中在进行域内故障检测时难以确定合适的探测包发送频率的问题。
[0059] 如图1所示,本实施例提供一种基于机器学习的域内故障检测方法,所述方法包括如下步骤:
[0060] 步骤S100、根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点。
[0061] 为了获取到网络中的节点和链路的流量特征数据,首先本实施例需要在网络拓扑中按照一定的部署算法进行监测节点的部署,所述监测节点指的是执行数据包收集任务的
可编程交换机。部署完毕以后,监测节点就可以实现定期地进行数据包数量的计算,当监测
节点收到控制器发来的信息后,监测节点就可以将数据发送给控制器,由控制器分析各个
节点、链路的流量特征。
[0062] 具体地,在网络拓扑中部署监测节点的时候,基于部署成本的考虑,在保证监测效果的前提下可以部署尽量少的监测节点。此外,鉴于本实施例的技术方案主要是通过观察
网络中TCp流的流量变化从而进行故障节点的判断,因此在部署监测节点时还需要考虑部
署方案是否能够实现控制器获取到尽量多的流的流量特征信息。
[0063] 在一种实现方式中,如图2所示,所述步骤S100具体包括如下步骤:
[0064] 步骤S110、获取网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率;
[0065] 步骤S120、将所述度数最大的节点作为监测节点以及将所述频率最大的节点作为监测节点。
[0066] 其中,节点的度数指的是与该节点直接相连的节点的个数;网络拓扑中跳数最小的路径指的是网络拓扑上的最短路径,即中间只有一个转发节点的路径;跳数指的是某个
节点所能覆盖的节点数量。具体地,本实施例中首先根据下述表1中的算法获取所有节点中
所述度数的数值最大的节点,将该节点作为监测节点;以及根据下述表2中的算法获取所有
节点中所述频率最大的节点,将该节点作为监测节点。已经成为监测节点的节点不再参与
下一轮的监测节点的筛选。对于剩余节点,同样选取所述剩余节点中所述度数的数值最大
的节点作为监测节点以及所述频率的数值最大的节点作为监测节点。根据预设的轮数,每
次都选取剩余节点中所述度数的数值最大的节点作为监测节点以及所述频率的数值最大
的节点作为监测节点。将所有轮筛选出的监测节点全部都作为当前网络拓扑中的监测节
点。
[0067] 表1.监测节点算法(1)
[0068]
[0069] 表2.监测节点算法(2)
[0070]
[0071] 在网络拓扑中部署完毕监测节点以后,需要通过所述监测节点对当前网络中的节点和链路的流量数据进行收集,以实时地反映网络拓扑内的流量现状。因此,如图1所示,所
述方法还包括如下步骤:
[0072] 步骤S200、获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息。
[0073] 首先,部署好监测节点会定期地收集的各节点、链路的流量数据(例如TCP流的数据包数量等数据),然后在收到控制器发来的上传命令后开始向所述控制器发送所述流量
数据。当域内故障发生时(所述域内故障定义为节点故障和链路故障),对非结构化的流量
数据进行特征工程,使其变为结构化的流量特征变化信息。
[0074] 在一种实现方式中,所述监测节点和所述控制器的交互可以在P4可编程交换机中实现。P4是一种语言,用于表示如何通过可编程转发元件(如硬件或软件交换机,网络接口
卡,路由器或网络)的数据平面处理数据包。如图5所示,其展示了P4可编程交换机上数据收
集工作的过程。与传统的交换机不同的是,P4可编程交换机将转发逻辑分解为数据处理单
元。在PUFF框架的数据处理单元中,一部分的数据处理单元负责对一段时间内所转发的数
据包缓存,并根据特征工程的构建为所有的交换机收集流量特征变化信息收集。同时,监测
节点并行地执行与控制器的通信。当监测节点的通信线程收到控制器节点的推送信息时,
便会立即将一段时间内的不同时间间隔中的采样数据发送给控制器。
[0075] 如图3所示,在一种实现方式中,所述步骤S200具体包括如下步骤:
[0076] 步骤S210、获取所述监测节点的监测数据;
[0077] 步骤S220、建立连续的采样窗口;
[0078] 步骤S230、根据所述采样窗口以及所述监测数据,对被监测的节点和链路进行特征工程,得到被监测的节点和链路的流量特征变化信息。
[0079] 本实施例基于在连续的时间序列内,如果某个节点发生故障,数据包数量大幅减少和重发包的现象进行特征工程。举例说明:如图6所示,假设现在有4个采样窗口w0,w1,w2
和w3。Ti表示一对的流上的时刻。F时刻(节点故障时刻)发生在w2采
样窗口内。根据TCP的拥塞控制逻辑,在F时刻之前,该流在每个采样窗口内的数据包数量应
当是增长或缓慢增长。而在w2采样窗口内发生了F事件(节点故障事件)。那么在F事件之后,
根据TCP的拥塞控制逻辑,在一个RTO时间段内收不到ACK包,那么设置CWnd为1,即只发送一
个数据包;同时设置RTO为2*RTO。在3个RTO之后,该流结束。本实施例即根据上述例子建立
的特征工程。
[0080] 这里的RTO指的是Retransmission Time Out,即重传超时时间,从数据发送时刻算起,超过这个时间便执行重传。ACK指的是Acknowledge character,即是确认字符,在数
据通信中,接收站发给发送站的一种传输类控制字符,表示发来的数据已确认接收无误。
CWnd指的是congestion window,表示计算机网络中拥塞窗口,拥塞窗口的大小取决于网络
速度的拥塞程度和处理数据量。
[0081] 在一种实现方式中,所述特征工程的具体步骤如下:首先根据所述监测数据和所述采样窗口,获取被监测的节点和链路在每一个采样窗口内的流量特征数据。具体地,所述
节点和所述链路的流量特征数据主要包括如表3所示的几种类型的数据:tcp_srcit指的是
以预设地址为源地址的数据包的数量信息;tcp_dstit指的是以预设地址为目的地址的数据
包的数量信息;tcp_countit指的是数据包的数量信息;firstwindowt指的是起始窗口变量
信息;ratiobeforesit指的是本级窗口的以预设地址为源地址的数据包的数量信息与上级
窗口的以预设地址为源地址的数据包的数量信息的第一比值信息;ratiobeforedit指的是
本级窗口的以预设地址为目的地址的数据包的数量信息与上级窗口的以预设地址为目的
地址的数据包的数量信息的第二比值信息;lastwindowt指的是终止窗口变量信息;
ratioaftersit指的是本级窗口的以预设地址为源地址的数据包的数量信息与后级窗口的
以预设地址为源地址的数据包的数量信息的第三比值信息;ratioafterdit指的是本级窗口
的以预设地址为目的地址的数据包的数量信息与后级窗口的以预设地址为目的地址的数
据包的数量信息的第四比值信息。
[0082] 表3.流量特征数据类型的名称及其意义
[0083] 特征 意义tcp_srcit 以hi为源地址的TCP数据包的数量
tcp_dstit 以hi为目的地址的TCP数据包的数量
tcp_countt TCP数据包的数量
firstwindowt 当该采样窗口为第一个采样窗口时,为1
ratiobeforesit (tcp_srcit+1)/(tcp_srcit‑1+1)当firstwindowt!=1
ratiobeforedit (tcp_dstit)+1/(tcp_dstit‑1+1)当firstwindowt!=1
lastwindowt 当该采样窗口为最后一个采样窗口时,为1
ratioaftersit (tcp_srcit+1)/(tcp_srcit+1+1)当lastwindowt!=1
ratioafterdit (tcp_dstit+1)/(tcp_dstit+1+1)当lastwindowt!=1
[0084] 然后对所有采样窗口内的流量特征数据按时间顺序进行分析和整合,得到所述流量特征数据的变化数据,将所述变化数据作为所述被监测的节点和链路的流量特征变化信
息,至此完成各个节点、链路的特征工程,所述特征工程主要是通过下表4所示的算法。
[0085] 表4.特征工程算法
[0086]
[0087] 如下表5、6所示,两个表格分别展示了上述各类流量特征数据在节点正常和异常情况下的变化情况。假设图6的tcp是大流,即在4个采样窗口中发送不完的流。表5展示的是
各类流量特征信息在没有发生节点故障时,即节点正常情况下的变化情况;表6展示的是各
类流量特征信息在发生节点故障时,即节点异常情况下的变化情况。
[0088] 表5.各类流量特征数据在节点正常情况下的变化情况
[0089] 特征名称 W0 W1 W2 W3tcp_srcit 初始值 ↑ ↑ ↑
tcp_dstit 初始值 ↑ ↑ ↑
tcp_countit 初始值 ↑ ↑ ↑
firstwindowt 1 0 0 0
ratiobeforesit 0 0 0 1
ratiobeforedit 初始值 ↑ ↑ ↑
lastwindowt 初始值 ↑ ↑ ↑
ratioaftersit 初始值 ↓ ↓ ↓
ratioafterdit 初始值 ↓ ↓ ↓
[0090] 表6.各类流量特征数据在节点异常情况下的变化情况
[0091]特征名称 W0 W1 W2 W3
tcp_srcit 初始值 ↑ ↓ 0
tcp_dstit 初始值 ↑ ↓ 0
tcp_countit 初始值 ↑ ↓ 0
firstwindowt 1 0 0 0
ratiobeforesit 0 0 0 1
ratiobeforedit 初始值 ↑ ↓ ↓
lastwindowt 初始值 ↑ ↓ ↓
ratioaftersit 初始值 ↓ ↓ ↓
ratioafterdit 初始值 ↓ ↓ ↓
[0092] 为了确认故障的节点或者链路,所述方法还包括如下步骤:
[0093] 步骤S300、根据预设分类算法以及所述流量特征变化信息确定故障的节点。
[0094] 对比当节点发生故障时各类流量特征信息的变化情况与节点正常情况下的变化情况是有差异的,本实施例正是通过检测到该差异信息实现故障节点的检测与判断。
[0095] 在一种实现方式中,如图4所示,所述步骤S300具体包括如下步骤:
[0096] 步骤S310、通过预设分类算法,根据所述流量特征变化信息对所述被监测的节点或链路进行分类,得到分类结果;
[0097] 步骤S320、根据所述分类结果确定故障的节点。
[0098] 为了保证所述预设分类算法的速度和准确率,在一种实现方式中,所述预设分类算法可以采用梯度提升决策树算法,即GBDT(gradient boosting decision tree)算法对
节点和链路进行二分类。以下为所述GBDT算法的目标函数:
[0099]
[0100] 所述GBDT算法首先通过网络节点在正常情况下的流量变化信息与异常情况下的流量变化信息进行学习、训练,训练完毕的GBDT算法可以用于后续根据各个节点、链路的流
量特征变化信息进行分类任务。然后根据分类结果确定故障的节点或者故障的链路。
[0101] 为了确定故障的节点,在一种实现方式中,将所述节点的流量特征变化信息作为所述预设分类算法的输入信息,然后获取所述预设分类算法输出的函数值,当所述预设分
类算法输出的函数值大于或者等于预设函数值时(例如所述预设函数值可以为0.5),则根
据所述函数值将所述节点判定为故障的节点。简言之,该方法是基于节点的流量特征变化
信息确定故障节点的检测方法,直接基于特征工程中生成的某点的流量特征变化信息直接
进行节点级的故障检测。
[0102] 此外,在一种实现方式中,还可以将所述链路的流量特征变化信息作为所述预设分类算法的将所述链路的流量特征变化信息作为所述预设分类算法的输入信息。然后,获
取所述预设分类算法输出的函数值,当所述预设分类算法输出的函数值大于或者等于预设
函数值时,所述分类的分类结果为所述链路为故障的链路。最后,获取与预设节点相连的所
有链路的分类结果,根据所述分类结果计算出所述预设节点相连的所有链路中故障的链路
的数量占所有链路的数量的比例,将所述比例与预设比例进行比较,当所述比例大于所述
预设比例时,确定所述预设节点为故障的节点。简言之,该方法是基于链路的流量特征变化
信息确定故障的链路,进而基于故障的链路确定故障的节点的检测方法,即基于特征工程
中链路的流量特征变化信息间接进行节点的故障检测。具体地,先对所有的链路根据特征
工程得到的流量特征变化信息进行一次二分类。再对各个节点所在的链路进行一次计算,
如果某个节点所连的所有链路或所连链路被判定为故障的比例超过预设比例时,则可以认
为该节点为故障的节点。此外,如果某一个节点发生了故障,则相当于与该节点所连的链路
都发生了故障。
[0103] 在一种实现方式中,所述监测节点以及其他可编程交换机中还可以执行路径恢复或重路由线程,当控制器做出某条链路的重路由时,立即进行相应的操作。
[0104] 以图7为例,其中六边形图形表示监测节点,正方形图形表示普通节点。所述监测节点上定期收集网络拓扑中的流量数据。假设S2所在节点发生故障,则一共会影响到以S2
为转发的tcp流和以与S2直连主机为目的地址的tcp流。当监测节点通过S4和S6进行交互
时,得出S2可能出现故障,则获取S4、S6基于其收集的流量数据所构建的流量特征变化信
息,控制器收到所述流量特征变化信息以后,进行分类任务,输出分类结果,实现自动定位
网络拓扑中的故障节点或者故障链路。
[0105] 本发明的有益效果如下:
[0106] 1.将机器学习和软件定义网络结合,通过可编程交换机的可编程性和与控制器节点的交互,能够实时地反映拓扑中各节点之间网络流量情况。基于机器学习的方法在大数
据量的情况下可以精确地进行故障定位,从而能够快速启动重路由和路由保护,从而为精
细化的智能路由、路由工程提供可能,有效地提升了网络性能。
[0107] 2.进行了选点算法的设计。能够在网络拓扑中仅部署节点数量对数的监测节点就达到80%以上准确率的故障检测。
[0108] 3.基于TCP拥塞控制中数据包数量的变化,提出了一套有效的特征工程。仅基于数据包数量进行特征工程设计,通过连续的时间窗口内数据包数量的变化去推测故障的存
在。易于部署到现行的可编程交换机上,对可编程交换机的性能要求不高,易于实现。
[0109] 基于上述实施例,本发明还提供了一种一种基于机器学习的域内故障检测装置,如图8所示,该装置包括:选点模块、特征工程模块以及分类模块;
[0110] 所述选点模块,用于根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频率,确定监测节点;
[0111] 所述特征工程模块,用于获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被监测的节点和链路的流量特征变化信息;
[0112] 所述分类模块,用于根据所述流量特征变化信息确定故障的节点;
[0113] 所述选点模块、所述特征工程模块以及所述分类模块均与控制器连接。
[0114] 基于上述实施例,本发明还提供了一种智能终端,其原理框图可以如图9所示。该智能终端包括通过系统总线连接的处理器、存储器、网络接口、显示屏。其中,该智能终端的
处理器用于提供计算和控制能力。该智能终端的存储器包括非易失性存储介质、内存储器。
该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的
操作系统和计算机程序的运行提供环境。该智能终端的网络接口用于与外部的终端通过网
络连接通信。该计算机程序被处理器执行时以实现一种基于机器学习的域内故障检测方
法。该智能终端的显示屏可以是液晶显示屏或者电子墨水显示屏。
[0115] 本领域技术人员可以理解,图9中示出的原理框图,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的智能终端的限定,具体的智能终端
可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0116] 在一种实现方式中,所述智能终端的存储器中存储有一个或者一个以上的程序,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行一
种基于机器学习的域内故障检测方法的指令。
[0117] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机
可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,
本发明所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可
包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM
(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括
随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,
诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强
型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM
(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
[0118] 综上所述,本发明公开了一种基于机器学习的域内故障检测方法,通过根据网络拓扑中每个节点的度数以及所述每个节点在所述网络拓扑中跳数最小的路径中出现的频
率,确定监测节点;获取所述监测节点的监测数据,对所述监测数据进行特征工程,得到被
监测的节点和链路的流量特征变化信息;根据所述流量特征变化信息确定故障的节点。可
见,本发明中在进行域内故障检测时完全不需要使用探测包进行检测,即无需受到探测包
频率的影响,并且本发明不会对影响网络性能,也不会造成网络反馈延时,因此解决了现有
技术中在进行域内故障检测时难以确定合适的探测包发送频率的问题。
[0119] 应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保
护范围。