用于网络控制的方法、设备和计算机可读存储介质与流程

文档序号:18702368发布日期:2019-09-17 23:06阅读:146来源:国知局
用于网络控制的方法、设备和计算机可读存储介质与流程

本公开的实施例总体上涉及无线通信技术,更具体地,涉及用于网络控制的方法、设备和计算机可读存储介质。



背景技术:

随着机器学习技术迅速成熟,许多基于人工神经网络(ann)的工具被引入到网络领域,作为处理复杂的多输入/多目标优化问题的强大方法。一些典型的适合使用机器学习技术来处理的网络问题包括例如网络流量预测、异常/攻击检测以及网络路径优化等。为了将ann应用于网络控制平面,首先需要针对目标优化问题或决策问题建立神经网络模型,并且利用来自实际网络监控或仿真的足量训练数据对其进行训练。经训练的神经网络模型可以被部署在网络中,以执行网络流量预测、异常/攻击检测以及网络路径优化等功能。

通常,经训练的神经网络模型将被部署在集中式网络控制器中,以作为在集中式网络控制器上运行的某种网络控制算法的扩展或替代。为了实现诸如网络流量预测、异常/攻击检测或者网络路径优化等功能,集中式网络控制器需要从网络中的各个网络节点收集实时网络状态信息,以作为神经网络模型的输入。同时,集中式网络控制器还需要将神经网络模型的输出转换成相应的网络配置指令以发送到相应网络节点。这种集中式网络控制将导致网络节点和集中式网络控制器之间的大规模信令开销。此外,这种大规模信令还将带来可扩展性、安全性和稳健性等方面的风险。



技术实现要素:

下面给出了对各实施例的简要概述,以提供对各种实施例的一些方面的基本理解。注意,发明内容部分并非旨在标识关键元素的要点或描述各种实施例的范围。其唯一目的在于以简化形式呈现一些概念,作为对后述更具体描述的前序。

在本公开的第一方面,提供了一种在网络节点处实现的方法。该方法包括接收针对网络中的多个网络节点中的第一网络节点的配置信息。该配置信息指示由多个网络节点共同执行的神经网络模型的功能中的一部分功能将由第一网络节点执行。该神经网络模型被训练用于检测网络的状态。该方法还包括响应于接收到配置信息,在第一网络节点处执行该神经网络模型的功能中的一部分功能。

在本公开的第二方面,提供了一种用于实现网络节点的设备。该设备包括处理器和存储器,该存储器存储有指令,该指令在被处理器执行时使该设备执行动作。动作包括:接收针对网络中的多个网络节点中的第一网络节点的配置信息,该配置信息指示由多个网络节点共同执行的神经网络模型的功能中的一部分功能将由第一网络节点执行,神经网络模型被训练用于检测网络的状态;以及响应于接收到该配置信息,在第一网络节点处执行神经网络模型的功能中的一部分功能。

在本公开的第三方面,提供了一种计算机可读存储介质,其包括机器可执行指令,该机器可执行指令在由设备执行时使该设备执行根据本公开的第一方面所述的方法。

通过下文描述将会理解,本公开的实施例能够在没有集中式网络控制器的情况下实现神经网络模型的分布式执行,从而在不增加硬件复杂度的情况下提高网络状态检测和控制的实时性。此外,本公开的实施例能够消除对集中式信令的需求,从而能够避免由集中式信令导致的可扩展性、安全性和稳健性等方面的风险。

应当理解,发明内容部分中所描述的内容并非旨在限定本公开实施例的关键或重要特征,亦非用于限制本公开的范围。本公开的其它特征将通过以下的描述变得容易理解。

附图说明

从下文的公开内容和权利要求中,本发明的目的、优点和其他特征将变得更加明显。这里仅出于示例的目的,参考附图来给出优选实施例的非限制性描述,在附图中:

图1示出了能够在其中实施本公开的实施例的示例环境的框图;

图2示出了根据本公开的实施例的用于网络异常检测的示例性神经网络模型;

图3示出了根据本公开的实施例的将神经元对应于虚拟网络功能的示意图;

图4示出了根据本公开的实施例的多个虚拟网络功能向多个物理网络节点的示例性分配的示意图;

图5示出了根据本公开的实施例的输入层神经元模拟器的示意性框图;

图6示出了根据本公开的实施例的由神经元模拟器生成的示例性数据分组的示意性框图

图7示出了根据本公开的实施例的隐藏层神经元模拟器的示意性框图;

图8示出了根据本公开的实施例的由隐藏层神经元模拟器执行的示例性过程的流程图;

图9示出了根据本公开的实施例的输出层神经元模拟器的示意性框图;

图10示出了根据本公开的实施例的由输出层神经元模拟器执行的示例性过程的流程图;

图11示出根据本公开的实施例的用于网络控制的方法的流程图;以及

图12示出了适合实现本公开的实施例的装置的框图。

在各个附图中,相同或对应的标号表示相同或对应的部分。

具体实施方式

在以下描述中,出于说明的目的而阐述许多细节。然而,本领域普通技术人员将认识到可以在不使用这些具体细节的情况下实现本发明。因此,本发明不旨在于受限于所示实施例、而是将被赋予与本文描述的原理和特征一致的最宽的范围。

在此使用的术语“电路”是指以下的一项或多项:

(a)仅硬件电路实现方式(诸如仅模拟和/或数字电路的实现方式);以及

(b)硬件电路和软件的组合,诸如(如果适用):(i)模拟和/或数字硬件电路与软件/固件的组合,以及(ii)硬件处理器的任意部分与软件(包括一起工作以使得诸如olt或其他计算设备等装置执行各种功能的数字信号处理器、软件和存储器);以及

(c)硬件电路和/或处理器,诸如微处理器或者微处理器的一部分,其要求软件(例如固件)用于操作,但是在不需要软件用于操作时可以没有软件。

电路的定义适用于此术语在本申请中(包括任意权利要求中)的所有使用场景。作为另一示例,在此使用的术语“电路”也覆盖仅硬件电路或处理器(或多个处理器)、或者硬件电路或处理器的一部分、或者其随附软件或固件的实现方式。例如,如果适用于特定权利要求元素,术语“电路”还覆盖基带集成电路或处理器集成电路或者olt或其他计算设备中的类似的集成电路。

在此使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等仅被用来将一个元素与另一个元素区分开来。而实际上第一元素也能够被称为第二元素,反之亦然。其他术语的相关定义将在下文描述中给出。

随着机器学习技术迅速成熟,许多基于ann的工具被引入到网络领域,作为处理复杂的多输入/多目标优化问题的强大方法。例如,分布式拒绝服务(ddos)攻击可能会损害网络服务,并且由于其分布式特性而很难防止。基于预先配置规则集的传统检测方法不仅费力,而且不可靠。然而,经过适当训练的神经网络模型能够实现更有效的流量异常检测。

为了将ann应用于网络控制平面,首先需要针对目标优化问题或决策问题建立神经网络模型,并且利用来自实际网络监控或仿真的足量训练数据对其进行训练。训练得到的可执行神经网络模型包括具有一定偏差值和激活函数的多层神经元,以及代表特定权重的神经元之间的连接。当一组输入被馈送到ann执行器时,执行器可以通过简单地在每个神经元层应用数学运算来处理输入,而不关心数值的任何物理意义,并且它在对应于不同优化的输出层产生输出/决策结果经训练的神经网络模型可以被部署在网络中,以执行网络流量预测、异常/攻击检测以及网络路径优化等功能。

通常,经训练的神经网络模型可以被部署在集中式网络控制器中。例如,为了实现流量异常(诸如ddos攻击)检测,需要在网络中的各个网络节点处捕获实时流量统计信息。实时流量统计信息将被发送到运行被训练用于流量异常检测的神经网络模型的集中式网络控制器,作为神经网络模型的输入。神经网络模型可以基于该输入通过执行相应运算来生成指示是否存在异常的输出结果。网络控制器可以基于输出结果来生成针对相应网络节点的网络配置指令,诸如用于设置该网络节点的流表中的阻塞规则或者产生对应的报警信息等等。

显然,这种集中式网络控制将导致网络节点和集中式网络控制器之间的大规模信令开销。此外,这种大规模信令还将带来可扩展性、安全性和稳健性等方面的风险。本公开的示例实施例提出了一种网络控制的方案。该方案将神经网络模型以分布式方式部署在网络中,从而解决上述问题以及其他潜在问题中的一个或多个。

以下将参考附图来详细说明本公开的基本原理和若干示例实施例。在下文中,将以用于网络异常(诸如ddos攻击)检测的神经网络模型为例进行描述。然而,应当理解,这仅出于说明的目的,而不旨在暗示对本公开的范围的任何限制。本公开的实施例也适用于实现其他功能(例如,网络流量预测、网络路径优化等)的神经网络模型。

图1示出了能够在其中实施本公开的实施例的示例环境100的框图。应当理解,图1中所示的设备和/或元素的种类和数目仅仅是出于说明之目的,而不暗示对于本公开的范围的任何限制。本公开的实施例还可以被应用于与环境100不同的其他环境中,并且本公开的范围在此方面不受限制。

如图1所示,环境100可以包括网络110、服务器120以及客户端130-1~130-3(统称为“客户端130”)。客户端130可以经由网络110来访问服务器120以获得服务。网络110可以包括网络节点140-1、140-2、140-3和140-4(统称为“网络节点140”),其能够提供客户端130与服务器120之间的网络连接。在此所述的“网络节点”指代能够被配置为执行数据处理、分组转发和/或设备状态收集等操作的任何已有或将要开发的设备,其示例包括但不限于交换机、路由器、防火墙等。在下文中,“网络节点”、“物理网络节点”和“分组交换节点”可互换地使用。

在环境100中,当ddos攻击发生时,伪装成服务请求的数据分组可以通过网络节点140泛滥到服务器120,使得服务器120无法向客户端130提供服务。为了能够准确地识别攻击从而及时采取行动来减少攻击造成的影响,可以针对与服务器120相关的网络流量进行全网范围(也即,网络节点140中的每个网络节点处)的协同测量,从而获得更全面和可靠的判断。

在一些实施例中,人工神经网络模型可以被用于处理以上这种依赖于多个输入的网络异常检测问题。例如,图2示出了根据本公开的实施例的用于上述网络异常检测的示例性神经网络模型200。如图2所示,神经网络模型200可以包括多个神经元,并且多个神经元分别位于三个层中,即输入层、隐藏层和输出层。其中,位于输入层的神经元包括神经元210-1~210-4(统称为“输入层神经元210”),位于隐藏层的神经元包括神经元220-1~220-5(统称为“隐藏层神经元220”),并且位于输出层的神经元包括神经元230-1和230-2(统称为“输出层神经元230”)。

在此假设神经网络模型200已经利用足量的训练数据被适当地训练。为了执行异常检测,神经网络模型200可以周期性地获取输入数据。例如,从时间t0开始,用于第k轮执行的输入数据集可以表示为{xi(t0+kδ)|i∈[1,4]},其中xi表示第i个网络节点关于特定数据流(例如,如上所述的与服务器120相关的网络流量)所转发的总字节数,并且δ表示执行周期。对于每一轮执行,模型200可以基于输入数据集来生成关于是否存在网络流量异常的决定。例如,神经元230-1的输出值可以表示流量异常的概率,而神经元230-2的输出值可以表示流量正常的概率。当神经元230-1的输出值大于神经元230-2的输出值时,表示存在网络流量异常;否则,表示不存在网络流量异常。

出于简化的目的,图2所示的示例性神经网络模型200仅有三层并且输出层仅表示两个判定结果(即“正常”和“异常”)。然而,在实际应用中,人工神经网络模型的规模和结构可以针对具体网络问题而被设计。此外,针对不同的神经网络模型,输入数据格式可以是不同的。应当理解,除了如图2所示的示例性神经网络模型200之外,本公开的实施例也适用于针对其他网络问题而设计的其他神经网络模型,并且本公开的范围在此方面不受限制。

在一些实施例中,为了将如图2所示的神经网络模型200分布式地部署到如图1所示的各网络节点140中,可以将神经网络模型200中的多个神经元分别映射到如图1所示的各网络节点140中。

具体而言,神经网络模型中的神经元本质上对应于数学运算符,其将激活函数f应用于来自其上游神经元的多个输入(也即,数值x1、x2……xn)的加权和(有时加上偏差值),并且输出值y被传播到位于其下游的一个或多个神经元。尽管神经元的数学运算模型可能存在其他变体,但基本的“数值输入→计算→数值输出”的流程是相同的。因此,神经元的操作可以与接收多个输入分组并发送相应输出分组的分组交换节点(本文中也被称为“虚拟网络功能”、“虚拟网络节点”或“虚拟节点”)类似,其中输出分组的内容通过向输入分组的内容应用预定分组处理规则来被确定。

图3示出了根据本公开的实施例的对应于神经元的虚拟网络功能的示意图。图3示出了神经元310,其例如可以是如图2所示的神经网络模型200中的输入层神经元210、隐藏层神经元220和输出层神经元230中的任一神经元。神经元310将激活函数f应用于来自其上游神经元的多个输入(也即,数值x1、x2……xn)的加权和(有时加上偏差值),并且输出值y被传播到位于其下游的一个或多个神经元。

图3还示出了与神经元310相对应的虚拟网络功能320。虚拟节点320可以从对应于上游神经元的上游虚拟节点接收n个分组。例如,分组1可以包含数值x1以及向神经元310输入数值x1的神经元的唯一标识符(id);分组2可以包含数值x2以及向神经元310输入数值x2的神经元的唯一id;……分组n可以包含数值xn以及向神经元310输入数值xn的神经元的唯一id。虚拟节点320可以根据预先配置的处理规则来处理该n个分组,处理规则可以指定要应用于输入分组中的相应数值的权重和激活函数。以此方式,虚拟节点320可以得到处理结果,其例如为一个数值。该处理结果可以被封装到新的数据分组中,并且被发送到与神经元310的一个或多个下游神经元相对应的下游虚拟节点。

从图3中还可以看出,虚拟节点320不仅仅是分组交换实体,而且还具有模拟神经元数学运算的附加功能。因此,在本文中这种虚拟节点或虚拟网络功能也被称为“神经元模拟器”。

在一些实施例中,根据神经元的不同类型(诸如输入层神经元、隐藏层神经元或输出层神经元),其对应的神经元模拟器的功能将是不同的。例如,针对如图2所示的神经网络模型200,可以存在三种神经元模拟器:输入层神经元模拟器、隐藏层神经元模拟器和输出层神经元模拟器。输入层神经元模拟器可以获取输入数据并将其封装到数据分组中,然后将数据分组发送到与其下游神经元对应的神经元模拟器。隐藏层神经元模拟器可以首先接收来自其上游神经元模拟器的数据分组并且从接收到的数据分组中提取输入数据。然后,隐藏层神经元模拟器可以根据输入数据计算输出数据,将输出数据封装成输出数据分组,并且将数据分组发送到其下游神经元模拟器。输出层神经元模拟器的功能与隐藏层神经元模拟器的功能基本相同,但其输出数据分组被广播到所有其他输出层神经元模拟器。广播的目的在于向所有相关节点通知神经网络模型的执行结果,以便相关节点能够根据接收到的所有执行结果来确定要执行的特定操作。在下文中还将结合附图5-10来进一步详细描述各种类型的神经元模拟器的具体结构和操作流程。

在一些实施例,例如通过如图3所示的方式,可以针对神经网络模型200中的每个神经元确定与之对应的虚拟网络功能(也即,神经元模拟器)。因此,能够确定与神经网络模型200中的多个神经元相对应的多个虚拟网络功能。然后,可以将所确定的多个虚拟网络功能分配给如图1所示的多个网络节点140,使得网络节点140中的每个网络节点仅执行多个虚拟网络功能中的一部分,由此实现多个神经元分别向各网络节点140的映射。由于每个网络节点仅实现神经网络模型200中的一部分神经元的功能,因此网络节点的硬件复杂度不会显著增加。

在一些实施例中,可以基于预定算法来执行与神经元对应的虚拟网络功能向物理网络节点的分配。例如,可以将分别与多个神经元对应的多个虚拟网络功能尽可能平均地分配给多个物理网络节点。附加地或者备选地,在一些实施例中,可以基于多个物理网络节点间的拓扑关系来执行虚拟网络功能向物理网络节点的分配。例如,与多个输入层神经元相对应的多个虚拟网络功能可以尽可能地被分散在不同物理网络节点中。附加地,在一些实施例中,可以基于分配的结果生成针对某个物理网络节点的配置信息,该配置信息例如可以指示向该物理网络节点分配的虚拟网络功能。通过利用配置信息来配置物理网络节点,物理网络节点可以执行向其分配的虚拟网络功能,由此实现神经网络模型中的多个神经元向多个物理网络节点的映射。

图4示出了根据本公开的实施例的多个虚拟网络功能向多个物理网络节点的示例性分配的示意图。图4示出了如图1所示的网络节点140-1~140-4。如图4所示,与如图2所示的神经元210-1、220-1和220-2相对应的虚拟网络功能被分配给网络节点140-1。与如图2所示的神经元210-2、220-3和230-1相对应的虚拟网络功能被分配给网络节点140-2。与如图2所示的神经元210-3、220-4和230-2相对应的虚拟网络功能被分配给网络节点140-3。与如图2所示的神经元210-4和220-5相对应的虚拟网络功能被分配给网络节点140-4。

如上所述,通过利用指示向物理网络节点分配的虚拟网络功能的配置信息来配置该物理网络节点,该物理网络节点可以执行向其分配的虚拟网络功能。也即,该物理网络节点可以模拟向其映射的一个或多个神经元的操作。在一些实施例中,当对应于不同类型的神经元的虚拟网络功能(也即,神经元模拟器)被配置给物理网络节点时,物理网络节点所执行的操作可以是不同的。

以下将以如图4所示的网络节点140-2为例来详细描述对应于不同类型的神经元的虚拟网络功能所执行的具体操作。如图4所示,被映射到网络节点140-2的神经元包括输入层神经元210-2、隐藏层神经元220-3和输出层神经元230-1。

图5示出了根据本公开的实施例的输入层神经元模拟器的示意性框图。如图5所示,例如与输入层神经元210-2相对应的虚拟网络功能(也即,输入层神经元模拟器)510被部署在网络节点140-2上。输入层神经元模拟器510可以包括输出值生成模块511和分组封装模块512。

在一些实施例中,输入层神经元210-2可以接收原始输入数据并且对原始输入数据进行某些数值变换,因此与之对应的输入层神经元模拟器510可以通过输出值生成模块511对原始输入数据进行对应的数值变换。针对输入层神经元210-2的原始输入数据可以是在网络节点140-2处收集的网络状态统计数据,例如网络节点140-2关于特定数据流(例如,与如图1所示的服务器120相关的网络流量)所转发的总字节数。在另一些实施例中,输入层神经元210-2可以不对原始输入数据进行数值变换。也即,在此情况下,输入层神经元模拟器510中的输出值生成模块511可以被省略。

在一些实施例中,分组封装模块512可以将原始输入数据(例如,在输入层神经元210-2可以不对原始输入数据进行数值变换的情况下)或者由输出值生成模块511生成的输出数据封装成数据分组,并且将该数据分组发送至输入层神经元210-2的下游神经元所部署的网络节点。例如,如图2所示,输入层神经元210-2的输出被耦合至隐藏层神经元220。也即,输入层神经元210-2的下游神经元包括隐藏层神经元220-1~220-5,它们分别被映射到网络节点140-1~140-4上。因此,数据分组将被发送至网络节点140-1中与神经元220-1和220-2相对应的隐藏层神经元模拟器、网络节点140-3中与神经元220-4相对应的隐藏层神经元模拟器、网络节点140-4中与神经元220-5相对应的隐藏层神经元模拟器、以及网络节点140-2中与隐藏层神经元220-3对应的隐藏层神经元模拟器。

图6示出了根据本公开的实施例的由神经元模拟器生成的示例性数据分组600的示意性框图。如图6所示,数据分组600可以包括:源神经元id601、目的地神经元id602、数值603以及附加信息604,附加信息604诸如时间戳或分组序列号等。

在一些实施例中,源神经元id601和目的地神经元id602用于指示两个神经元模拟器之间的逻辑路径,其对应于神经网络模型中的两个神经元之间的连接。可选地,在一些实施例中,两个神经元之间的连接的权重也可以在数据分组中呈现。然而,在另一些实施例中,经训练的神经网络模型中的连接权重是固定的,并且一旦接收到数据分组,神经元模拟器就可以直接应用与该数据分组的源神经元id相关联的权重值,因此没有必要将连接的权重值包括在每个数据分组中。然而,诸如时间戳或分组序列号的附加信息604是必需的,因为每轮神经网络模型的执行将在每个连接上产生一个数据分组,并且从不同的上游网络节点接收到多个数据分组的目的地网络节点可以利用附加信息604来判断哪个分组属于哪个执行周期。

在一些实施例中,如图6中所示的数据分组600的内容可以在由网络节点支持的现有数据平面协议的分组报头或有效载荷中携带。例如,如果网络节点支持虚拟局域网(vlan)配置,则vlan标签可以被用作部署在该网络节点上的神经元模拟器的id,从而简化数据分组的处理过程。

图7示出了根据本公开的实施例的隐藏层神经元模拟器的示意性框图。如图7所示,例如与隐藏层神经元220-3相对应的虚拟网络功能(也即,隐藏层神经元模拟器)710被部署在网络节点140-2上。隐藏层神经元模拟器710可以包括输入值提取模块711、缓冲器712、输出值生成模块713和分组封装模块714。其中,输出值生成模块713和分组封装模块714分别与如图5所示的输出值生成模块511和分组封装模块512类似。

如图2所示,隐藏层神经元220-3的输入被耦合至输入层神经元210。也即,隐藏层神经元模拟器710可以从与输入层神经元210相对应的多个输入层神经元模拟器所在的网络节点接收多个输入数据分组(输入数据分组的结构例如如图6所示)。输入值提取模块711可以从这些输入数据分组中提取相应的输入数值。由于来自上游神经元模拟器的分组可能无法以精确预计的时间和顺序到达隐藏层神经元模拟器710,因此缓冲器712可以用于缓冲由输入数值提取模块711提取的输入数值。

当针对某一轮执行的所有输入数值已被获得时,这些输入数值可以被传递至输出值生成模块713以生成对应的输出数值。可选地,在一些实施例中,输出值生成模块713可以将输出数值写回到缓冲器712中,以为下一轮计算提供输入数值。这种可选的回送结构有利于实施一些特殊的ann模型,例如递归神经网络(rnn)模型或长短期记忆(lstm)网络模型。这些神经网络模型通常包含将其输出作为其自身下一轮输入的递归神经元,其适合于处理展现动态时间行为的输入序列。如图2所示,隐藏层神经元220-3是具有环回结构的神经元。图7所示的与隐藏层神经元220-3相对应的隐藏层神经元模拟器710可以通过使用缓冲器写回功能来轻松实现环回操作。使用神经元模拟器的内部写回功能能够节省一些信令开销,尤其是当神经网络模型包含大量递归神经元的情况下。然而,在一些实施例中,该功能是可选的,因为神经元模拟器可以发送输出数据分组,而数据分组可以通过外部交换路径被交换回到其输入端口。

与图5中的分组封装模块512类似,分组封装模块714可以将由输出值生成模块713生成的数据封装成数据分组,并且将该数据分组发送至隐藏层神经元220-3的下游神经元所部署的网络节点。例如,如图2所示,隐藏层神经元220-3的输出被耦合至隐藏层神经元220-3和220-4、以及输出层神经元230-1和230-2。也即,隐藏层神经元220-3的下游神经元包括隐藏层神经元220-3和220-4、以及输出层神经元230-1和230-2,它们分别被映射到网络节点140-2和140-3上。因此,数据分组可以被发送至网络节点140-2中与神经元220-3和230-1相对应的神经元模拟器、以及网络节点140-3中与神经元220-4和230-2相对应的神经元模拟器。

图8示出了根据本公开的实施例的由隐藏层神经元模拟器执行的示例性过程800的流程图。过程800可以由部署在网络节点上的隐藏层神经元模拟器来执行,例如如图7所示的隐藏层神经元模拟器710。以下以如图7所示的隐藏层神经元模拟器710为例来描述过程800。应当理解,过程800还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。

在框810处,隐藏层神经元模拟器710确定是否接收到新的数据分组。如果接收到新的数据分组,则过程800进行至框820,其中隐藏层神经元模拟器710从接收到的数据分组中提取输入数值并将其存储在缓冲器中。在框830处,隐藏层神经元模拟器710确定针对本轮执行的所有输入数值是否已被获得。如果存在未获得的输入数值,则过程800返回至框810。如果所有输入数值已被获得,则过程800进行至框840,其中隐藏层神经元模拟器710通过向输入数值应用由神经元220-3实现的运算来生成输出数值。在框850处,隐藏层神经元模拟器710将输出数值封装在数据分组中,并且将该数据分组发送至下游神经元所映射到的网络节点。

图9示出了根据本公开的实施例的输出层神经元模拟器的示意性框图。如图9所示,与输出层神经元230-1相对应的虚拟网络功能(也即,输出层神经元模拟器)910被部署在网络节点140-2上。与如图7所示的隐藏层神经元模拟器710类似,输出层神经元模拟器910可以包括输入值提取模块911、缓冲器912、输出值生成模块913和分组封装模块914。

与如图7所示的隐藏层神经元模拟器710不同之处在于,输出层神经元模拟器910还包括指令生成模块915。由输出值生成模块913生成的输出数值除了传递到分组封装模块914以外,还被传递至指令生成模块915。

神经网络模型的输出层的特殊之处在于该层神经元的最终输出与某些物理意义相关联。例如,在图2中,神经元230-1和230-2分别表示关于是否检测到异常的结果。当神经元230-1的输出值大于神经元230-2的输出时,表示检测到异常。然而,如图4所示神经元230-1和230-2分别被映射到不同的物理网络节点140-2和140-3,因此必须收集在不同物理网络节点上生成的结果从而获得最终有意义的判断。因此,由分组封装模块914基于输出数值而生成的数据分组将被广播到其他输出层神经元所映射到的网络节点。

与此同时,来自其他输出层神经元所映射到的网络节点的数据分组可以被输出层神经元模拟器910接收,其中的数值可以被提取并传递至指令生成模块915。当指令生成模块915接收到来自所有输出层神经元模拟器的结果时,指令生成模块915可以基于这些结果来生成针对本地网络节点140-2的网络配置指令,诸如用于设置该网络节点的流表中的阻塞规则或者产生对应的报警信息等等。网络节点140-2可以基于该配置指令来执行预定操作,从而降低网络异常(诸如ddos攻击)所造成的影响。

图10示出了根据本公开的实施例的由输出层神经元模拟器执行的示例性过程1000的流程图。过程1000可以由部署在网络节点上的输出层神经元模拟器来执行,例如如图9所示的输出层神经元模拟器910。以下以如图9所示的输出层神经元模拟器910为例来描述过程1000。应当理解,过程1000还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。

在框1010处,输出层神经元模拟器910确定是否接收到新的数据分组。如果接收到新的数据分组,则过程1000进行至框1020,其中输出层神经元模拟器910确定所接收的新数据分组来自隐藏层还是输入层。

如果在框1020处确定所接收的新数据分组来自隐藏层,则过程1000进行至框1030,其中输出层神经元模拟器910从接收到的数据分组中提取输入数值并将其存储在缓冲器中。在框1040处,输出层神经元模拟器910确定针对本轮执行的所有输入数值是否已被获得。如果存在未获得的输入数值,则过程1000返回至框1010。如果所有输入数值已被获得,则过程1000进行至框1050,其中输出层神经元模拟器910通过向输入数值应用由神经元230-1实现的运算来生成输出数值并将输出数值发送到输出层神经元模拟器910中的指令生成模块。在框1060处,输出层神经元模拟器910将输出数值封装在数据分组中,并且将该数据分组发送至其他输出神经元所映射到的网络节点。

如果在框1020处确定所接收的新数据分组来自输出层,则过程1000进行至框1070,其中输出层神经元模拟器910从接收到的数据分组中提取由其他输出神经元模拟器生成的输出数值并将其发送到输出层神经元模拟器910中的指令生成模块。在框1080处,输出层神经元模拟器910中的指令生成模块确定是否已获得所有输出神经元模拟器生成的输出数值。如果已获得所有输出神经元模拟器生成的输出数值,则过程1000进行至框1090处,其中输出层神经元模拟器910中的指令生成模块基于预定规则和这些输出数值来生成将由本地网络节点执行的操作指令。如果尚未获得所有输出神经元模拟器生成的输出数值,则过程1000返回至框1010。

图11示出了根据本公开的实施例的在网络节点处执行的方法1100的流程图。方法1100可以在参考图1至图11描述的网络节点140中的任一网络节点处执行。以下以网络节点140-2为例来描述方法1100,在下文中网络节点140-2也被称为“第一网络节点”。应当理解,方法1100还可以包括未示出的附加动作和/或可以省略所示出的动作。本公开的范围在此方面不受限制。

在框1110,第一网络节点140-2接收针对网络110中的多个网络节点140中的第一网络节点140-2的配置信息。该配置信息指示由多个网络节点140共同执行的神经网络模型200的功能中的一部分功能将由第一网络节点140-2执行。该神经网络模型200被训练用于检测网络的状态。

在框1110,响应于接收到该配置信息,第一网络节点140-2执行神经网络模型200的功能中的一部分功能。

在一些实施例中,神经网络模型200包括第一数目(例如,11个)的神经元,第一数目的神经元分别被映射到多个网络节点140。该配置信息可以指示神经网络模型200中的第二数目(例如,3个)的神经元被映射到第一网络节点140-2,并且第二数目小于第一数目。

在一些实施例中,响应于第二数目的神经元被映射到第一网络节点140-2,第一网络节点140-2可以执行与第二数目的神经元相对应的功能。

在一些实施例中,第二数目的神经元包括以下至少一项:位于神经网络模型的输入层的第一神经元210-2;位于神经网络模型200的隐藏层的第二神经元220-3;以及位于神经网络模型200的输出层的第三神经元230-1。

在一些实施例中,该配置信息指示第一神经元210-2被映射到第一网络节点140-2,第一神经元210-2的输出耦合至神经网络模型200中的第四神经元220-1,并且第四神经元220-1被映射到多个网络节点140中的第二网络节点140-1。第一网络节点140-2可以获取在第一网络节点140-2处的与网络状态有关的数据。第一网络节点140-2可以通过向该数据应用由第一神经元210-2实现的运算,来生成针对第四神经元220-1的输入数据。第一网络节点140-2可以将针对第四神经元220-1的输入数据包括在要向第二网络节点140-1发送的数据分组中,并且向第二网络节点140-1发送该数据分组。

在一些实施例中,该配置信息指示第二神经元220-3被映射到第一网络节点140-2,第二神经元220-3的输入耦合至神经网络模型200中的第一组神经元210并且第二神经元220-3的输出耦合至神经网络模型200中的第二组神经元220-3、220-4、230-1和230-2,第一组神经元210和第二组神经元220-3、220-4、230-1和230-2分别被映射到所述多个网络节点中的第一组网络节点140和第二组网络节点140-2和140-3。第一网络节点140-2可以响应于从第一组网络节点140接收到一组数据分组,从第一组数据分组中提取针对第二神经元220-3的一组输入数据。第一网络节点140-2可以通过向针对第二神经元220-3的一组输入数据应用由第二神经元220-3实现的运算,来生成针对第二组神经元220-3、220-4、230-1和230-2的输入数据。第一网络节点140-2可以将针对第二组神经元220-3、220-4、230-1和230-2的输入数据包括在要向第二组网络节点140-2和140-3发送的第二数据分组中,并且向第二组网络节点140-2和140-3发送第二数据分组。

在一些实施例中,该配置信息指示第三神经元230-1被映射到第一网络节点140-2,第三神经元230-1的输入耦合至位于神经网络模型的隐藏层的第三组神经元220,第三组神经元220被映射到多个网络节点140中的第三组网络节点140。响应于从第三组网络节点140接收到一组数据分组,第一网络节点140-2可以从一组数据分组中提取针对第三神经元230-1的一组输入数据。第一网络节点140-2可以通过向针对第三神经元230-1的一组输入数据应用由第三神经元230-1实现的运算,来生成指示网络110的状态的第一结果。第一网络节点140-2可以第一结果包括在第三数据分组中,并且向多个网络节点140中的第三网络节点140-3发送第三数据分组,其中位于输出层的不同于第三神经元230-1的其他神经元230-2被映射到第三网络节点140-3。

在一些实施例中,响应于从第三网络节点140-3接收到由第三网络节点140-3生成的指示网络110的状态的第二结果,第一网络节点140-2可以至少基于第一结果和第二结果来确定网络110的状态是否异常。第一网络节点140-2可以响应于确定网络110的状态异常来执行预定操作。

出于清楚的目的,在图11中未示出方法1100的某些可选框。然而,应当理解,上文参考图1-10所描述的各个特征同样适用于方法1100。

在一些实施例中,能够执行方法1100的装置(例如,网络节点140)可以包括用于执行方法1100各个步骤的相应部件。这些部件可以任意适当方式实现。例如,可以通过电路或者软件模块来实现。

在一些实施例中,装置包括用于接收针对网络中的多个网络节点中的第一网络节点的配置信息的部件,该配置信息指示由多个网络节点共同执行的神经网络模型的功能中的一部分功能将由第一网络节点执行,该神经网络模型被训练用于检测网络的状态;以及用于响应于接收到配置信息而在第一网络节点处执行神经网络模型的功能中的一部分功能的部件。

在一些实施例中,神经网络模型包括第一数目的神经元,第一数目的神经元分别被映射到多个网络节点。配置信息指示神经网络模型中的第二数目的神经元被映射到第一网络节点,并且第二数目小于第一数目。

在一些实施例中,用于执行神经网络模型的功能中的一部分功能的部件包括:用于响应于第二数目的神经元被映射到第一网络节点而在第一网络节点处执行与第二数目的神经元相对应的功能的部件。

在一些实施例中,第二数目的神经元包括以下至少一项:位于神经网络模型的输入层的第一神经元;位于神经网络模型的隐藏层的第二神经元;以及位于神经网络模型的输出层的第三神经元。

在一些实施例中,配置信息指示第一神经元被映射到第一网络节点,第一神经元的输出耦合至神经网络模型中的第四神经元,第四神经元被映射到多个网络节点中的第二网络节点。用于执行神经网络模型的功能中的一部分功能的部件包括:用于获取第一网络节点处的与网络的状态有关的数据的部件;用于通过向数据应用由第一神经元实现的运算来生成针对第四神经元的输入数据的部件;用于将针对第四神经元的输入数据包括在要向第二网络节点发送的数据分组中的部件;以及用于向第二网络节点发送数据分组的部件。

在一些实施例中,配置信息指示第二神经元被映射到第一网络节点,第二神经元的输入耦合至神经网络模型中的第一组神经元并且第二神经元的输出耦合至神经网络模型中的第二组神经元,第一组神经元和第二组神经元分别被映射到多个网络节点中的第一组网络节点和第二组网络节点。用于执行神经网络模型的功能中的一部分功能的部件包括:用于响应于从第一组网络节点接收到一组数据分组而从一组数据分组中提取针对第二神经元的一组输入数据的部件;用于通过向针对第二神经元的一组输入数据应用由第二神经元实现的运算来生成针对第二组神经元的输入数据的部件;用于将针对第二组神经元的输入数据包括在要向第二组网络节点发送的第二数据分组中的部件;以及用于向第二组网络节点发送第二数据分组的部件。

在一些实施例中,配置信息指示第三神经元被映射到第一网络节点,第三神经元的输入耦合至位于神经网络模型的隐藏层的第三组神经元,第三组神经元被映射到多个网络节点中的第三组网络节点。用于执行神经网络模型的功能中的一部分功能的部件包括:响应于从第三组网络节点接收到一组数据分组而从一组数据分组中提取针对第三神经元的一组输入数据的部件;用于通过向针对第三神经元的一组输入数据应用由第三神经元实现的运算来生成指示网络的状态的第一结果的部件;用于将第一结果包括在第三数据分组中的部件;以及用于向多个网络节点中的第三网络节点发送第三数据分组的部件,其中位于输出层的不同于第三神经元的其他神经元被映射到第三网络节点。

在一些实施例中,用于执行神经网络模型的功能中的一部分功能的部件还包括:用于响应于从第三网络节点接收到由第三网络节点生成的指示网络的状态的第二结果而至少基于第一结果和第二结果来确定网络的状态是否异常的部件。

在一些实施例中,装置还包括用于响应于确定网络的状态异常,在第一网络节点处执行预定操作的部件。

图12示出了适合实现本公开的实施例的装置1200的框图。装置1200可以用来实现能够实施本文所描述的操作和功能的网络节点,例如参考图1至图11描述的网络节点140。

如图12所示,装置1200包括处理器1210。处理器1210控制装置1200的操作和功能。例如,在某些实施例中,处理器1210可以借助于与其耦合的存储器1220中所存储的指令1230来执行各种操作。存储器1220可以是适用于本地技术环境的任何合适的类型,并且可以利用任何合适的数据存储技术来实现,包括但不限于基于半导体的存储器件、磁存储器件和系统、光存储器件和系统。尽管图12中仅仅示出了一个存储器单元,但是在装置1200中可以有多个物理不同的存储器单元。

处理器1210可以是适用于本地技术环境的任何合适的类型,并且可以包括但不限于通用计算机、专用计算机、微控制器、数字信号控制器(dsp)以及基于控制器的多核控制器架构中的一个或多个。装置1200也可以包括多个处理器1210。装置1200可以借助于光纤或电缆等来实现信息的接收和发送。

处理器1210通过执行指令而使得装置1200执行上文参考图1至图11描述的网络节点140的相关操作和特征。上文参考图1至图11所描述的所有特征均适用于装置1200,在此不再赘述。

一般而言,本公开的各种示例实施例可以在硬件或专用电路、软件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本公开的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。

作为示例,本公开的实施例可以在机器可执行指令的上下文中被描述,机器可执行指令诸如包括在目标的真实或者虚拟处理器上的器件中执行的程序模块中。一般而言,程序模块包括例程、程序、库、对象、类、组件、数据结构等,其执行特定的任务或者实现特定的抽象数据结构。在各实施例中,程序模块的功能可以在所描述的程序模块之间合并或者分割。用于程序模块的机器可执行指令可以在本地或者分布式设备内执行。在分布式设备中,程序模块可以位于本地和远程存储介质二者中。

用于实现本公开的方法的计算机程序代码可以用一种或多种编程语言编写。这些计算机程序代码可以提供给通用计算机、专用计算机或其他可编程的数据处理装置的处理器,使得程序代码在被计算机或其他可编程的数据处理装置执行的时候,引起在流程图和/或框图中规定的功能/操作被实施。程序代码可以完全在计算机上、部分在计算机上、作为独立的软件包、部分在计算机上且部分在远程计算机上或完全在远程计算机或服务器上执行。

在本公开的上下文中,计算机程序代码或者相关数据可以由任意适当载体承载,以使得设备、装置或者处理器能够执行上文描述的各种处理和操作。载体的示例包括信号、计算机可读介质等等。

计算机可读介质可以是包含或存储用于或有关于指令执行系统、装置或设备的程序的任何有形介质。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质。计算机可读介质可以包括但不限于电子的、磁的、光学的、电磁的、红外的或半导体系统、装置或设备,或其任意合适的组合。计算机可读存储介质的更详细示例包括带有一根或多根导线的电气连接、便携式计算机磁盘、硬盘、随机存储存取器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或闪存)、光存储设备、磁存储设备,或其任意合适的组合。

另外,尽管操作以特定顺序被描绘,但这并不应该理解为要求此类操作以示出的特定顺序或以相继顺序完成,或者执行所有图示的操作以获取期望结果。在某些情况下,多任务或并行处理会是有益的。同样地,尽管上述讨论包含了某些特定的实施细节,但这并不应解释为限制任何发明或权利要求的范围,而应解释为对可以针对特定发明的特定实施例的描述。本说明书中在分开的实施例的上下文中描述的某些特征也可以整合实施在单个实施例中。反之,在单个实施例的上下文中描述的各种特征也可以分离地在多个实施例或在任意合适的子组合中实施。

尽管已经以特定于结构特征和/或方法动作的语言描述了主题,但是应当理解,所附权利要求中限定的主题并不限于上文描述的特定特征或动作。相反,上文描述的特定特征和动作是作为实现权利要求的示例形式而被公开的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1