一种在P4交换机上部署随机森林模型的方法

文档序号:31052321发布日期:2022-08-06 08:05阅读:260来源:国知局
一种在p4交换机上部署随机森林模型的方法
技术领域
:1.本发明涉及网络异常流量检测领域,具体来说涉及在p4可编程交换机(programmingprotocol-independentpacketprocessorsswitch,以下简称p4交换机)中进行流量检测的领域,更具体地说,涉及一种在p4交换机上部署随机森林模型的方法。
背景技术
::2.实时异常流量检测的需求正在不断增长。根据华为未来实验室的调研,2020年网络流量攻击同比增长了53%。而网络攻击也频频造成财产损失。如果能实时区分出用于攻击的异常流量与正常的网络流量,就可以过滤掉网络攻击行为,保证网络安全。3.过滤异常流量采用的最为广泛的方式是流量清洗中心。许多云网络提供这样的清洗中心,如阿里巴巴、腾讯。然而,在流量清洗中心部署的大多数设备都是昂贵的专有硬件设备,即服务器中间件,这些设备位于内网与外网之间。使用时网络管理员将流量镜像到这些流量清洗中心,来进行异常流量检测。这就带来了流量镜像的额外开销,且这些流量清洗中心的服务器核心往往采用通用cpu,而不是为支持高带宽网络传输而专门定制的网络硬件,处理数据包时会带来额外的处理延迟。这些问题深深植根于基于软件的平台。除此之外,这些中间件在功能、容量和迭代更新速度方面往往是不灵活的。每当出现新的网络攻击变种时,其相应的防御策略需要对中间件进行升级,这反过来又需要客户和供应商之间的多轮谈判。除了缺乏灵活性之外,将流量镜像到第三方的流量清洗中心进行处理,还会带来数据安全隐患。4.新兴的p4交换机则可以利用其数据平面可编程的特性,在网络中实现高灵活性的实时异常流量检测。传统交换机asic结构在设计生产时固定,后续无法修改。而可编程交换机使用专用处理芯片,实现了控制平面与数据平面皆可编程,且大部分任务集中在数据平面完成。无需频繁使用控制平面通用cpu,任务可在交换机芯片上直接进行,因此数据包分类检测可以以线速率实时完成,避免了将繁重的网络数据发送到服务器进行分析。当检测到异常流量时,可以直接记录或转发到不同的端口进行进一步分析。可编程交换机往往包含多级流水线,为了简化,以图1所示的p4交换机内部的单级流水线的架构图为例介绍原理,p4交换机主要包括:5.解析器(即parser模块),用于数据包解析流程,将数据包映射到首部和元数据;6.入处理逻辑(即ingress模块),用于数据包入处理,其中包含若干组匹配动作单元(match-action单元);7.出处理逻辑(即egress模块),用于数据包出处理,包含若干组匹配动作单元(match-action单元);8.队列缓冲区,即在ingress模块和egress模块两个处理环节间的缓冲区;9.逆解析器(即deparser模块),负责将更新后的数据包首部与数据包载荷(payload)重新组合;以及10.校验和模块(即checksum模块),用于更新数据包中的校验和,图1未示出。11.p4交换机使用p4编程语言,它允许对数据包解析逻辑进行编程,其使用快速匹配动作表处理数据包,匹配动作表定义匹配域以及对应的执行动作。每个表存储键key(source-ip、destination-ip、或其它参数)指向可以执行的动作。因此,如果从交换机入端口的数据包中的相应值与键匹配,则执行表中匹配级目所指出的相应动作。p4程序需要编译,然后上传到交换机。控制平面中的控制器也可以在运行时更改匹配操作表的内容。12.基于机器学习的异常流量分类模型已经广泛应用于网络安全领域。机器学习的优势在于其适用于解决基于简单策略无法解决的复杂问题。13.使用可编程交换机将带来诸多好处。首先,因为可编程交换机提供了比高度优化的数据包处理软件还高几个数量级的吞吐量,所以可编程交换机可以大大提高处理效率。此外,可编程交换机使用特定的编程语言(p4),它可以在交换机管线中以tbps的线速度处理带有用户自定义逻辑的数据包,因此也做到了低延迟与高灵活性。14.在可编程交换机上使用机器学习进行异常流量检测也是最为直观的想法。一些研究者在数据平面中嵌入了决策树、随机森林模型、svm、k-means等机器学习算法。但是,研究者在部署随机森林模型时,是在仿真平台中仅将随机森林模型部署在模拟的p4交换机上的单级流水线上。发明人在实际操作、验证时,发现p4交换机的单机流水线可以承载的模型规模是受限的,前述研究者在仿真平台上实验时没有考虑到p4交换机实际情况,导致模型训练好后,超出p4交换机的单级流水线的实际承载能力,难以在真实的p4交换机上实际部署。而且,不同的p4交换机的硬件条件还可能存在不同,进一步为模型的部署带来挑战。技术实现要素:15.因此,本发明的目的在于克服上述现有技术的缺陷,提供一种在p4交换机上部署随机森林模型的方法。16.本发明的目的是通过以下技术方案实现的:17.根据本发明的第一方面,提供一种构建用于流量检测的随机森林模型的方法,包括:获取待部署模型的p4交换机所支持的流水线上限以及所支持的匹配动作表的递归深度上限;基于所述待部署模型的p4交换机所支持的流水线上限以及所支持的匹配动作表的递归深度上限,确定为其定制的随机森林模型的规模;利用训练数据训练所述随机森林模型检测数据包是否异常;将训练得到的随机森林模型转换为脚本文件,其中,所述脚本文件中将随机森林模型的模型参数以p4交换机支持的添加表的指令的形式存储。18.在本发明的一些实施例中,所述随机森林模型的规模按照以下方式确定:基于所述p4交换机所支持的流水线上限配置随机森林模型的决策树数量,以及基于所述p4交换机所支持的匹配动作表的递归深度上限配置所述决策树的深度。19.在本发明的一些实施例中,在所述待部署模型的p4交换机为单个p4交换机时,所述随机森林模型的决策树数量小于等于该单个p4交换机所支持的流水线上限;或在所述待部署模型的p4交换机为多个p4交换机构成的p4交换机组时,所述随机森林模型的决策树数量小于等于该p4交换机组中所有p4交换机所支持的流水线上限之和。20.在本发明的一些实施例中,所述训练数据包括多个训练样本,所述训练样本包括输入特征以及标签,所述输入特征基于数据包的包头信息和对数据包所属数据流的统计得到,所述标签指示相应数据包是正常的还是异常的。21.在本发明的一些实施例中,所述输入特征包括源到目标的生存时间、目标到源的生存时间、每秒发送到源的比特数、目标到源数据包计数、源到目标字节数、每秒发送到目标的比特数、连接建立的往返时延、数据包所在数据流的持续时间、目标端口号或者其组合。22.根据本发明的第二方面,提供一种在p4交换机上部署随机森林模型的方法,包括:获取用于执行网络流量检测的p4程序以及基于第一方面的方法得到的脚本文件,所述p4程序包含指示将随机森林模型的多颗决策树分布式部署在p4交换机中的多条流水线上的部署控制信息;通过待部署模型的p4交换机的控制平面将所述p4程序和所述脚本文件下发到p4交换机中,以利用在所述p4交换机的多级流水线上部署的随机森林模型检测进入的数据包是否异常。23.在本发明的一些实施例中,所述部署控制信息中指示将随机森林模型中的多颗决策树中的预定数量的决策树部署在p4交换机的指定流水线上。24.在本发明的一些实施例中,所述部署控制信息中指示将随机森林模型中的多颗决策树中的每颗决策树单独部署在p4交换机的指定流水线上。25.在本发明的一些实施例中,当随机森林模型在p4交换机上部署时,将随机森林模型的决策树配置为依赖p4交换机的匹配动作单元执行,其中,决策树的决策节点利用匹配动作单元的匹配项执行决策操作,在匹配项接收到输入特征后,根据输入特征判断是否满足条件,并根据判断的结果通过动作转入对应的分支以流向下一个决策节点或者叶节点,叶节点是识别所述数据包是否异常的分类结果。26.根据本发明的第三方面,提供一种网络流量的检测方法,应用于p4交换机,包括:获取待检测的数据包;将数据包输入部署在p4交换机上的随机森林模型,得到检测结果,其中,所述随机森林模型是按照第一方面的方法为所述p4交换机定制的,并且按照第二方面的方法部署在p4交换机上。27.根据本发明的第四方面,提供一种电子设备,包括:一个或多个处理器;以及存储器,其中存储器用于存储可执行指令;所述一个或多个处理器被配置为经由执行所述可执行指令以实现第一方面、第二方面、第三方面中任一项所述方法的步骤。28.与现有技术相比,本发明的优点在于:29.本发明基于待部署模型的p4交换机的硬件条件,针对性地设计模型的规模并训练模型检测数据包是否异常;由此,可以直接将训练好的模型部署在p4交换机中,减少模型规模与p4交换机不匹配可能造成的模型难以部署的情况,并且可以利用p4交换机对网络流量进行高效、安全地检测,减少数据外发处理的时延,并降低隐私泄露的风险。附图说明30.以下参照附图对本发明实施例作进一步说明,其中:31.图1为p4交换机的结构示意图;32.图2为根据本发明实施例在p4交换机上实现对流量的检测的整体构思示意图;33.图3为根据本发明实施例的随机森林模型的检测流程的局部示意图;34.图4为根据本发明实施例的p4程序的定义示意图;35.图5为根据本发明实施例在多级流水线检测数据包的结构示意图。具体实施方式36.为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。37.如在
背景技术
:部分提到的,现有的异常流量检测主要是通过流量清洗中心完成,这种方式需要将网络中的流量镜像到流量清洗中心进行处理。这不仅带来了流量镜像的额外开销、数据中心采用通用cpu处理数据包时会带来额外的处理延迟,而且网络中的数据外传还会带来数据安全隐患。目前一些研究者也在研究在p4交换机上实现异常流量简称,但其是在仿真平台上实验,没有考虑到p4交换机实际情况,导致模型训练好后,超出p4交换机的单级流水线的实际承载能力,难以在真实的p4交换机上实际部署。因此,本发明基于待部署模型的p4交换机的硬件条件,针对性地设计模型的规模并训练模型检测数据包是否异常;由此,可以直接将训练好的模型部署在p4交换机中,减少模型规模与p4交换机不匹配可能造成的模型难以部署的情况,并且可以利用p4交换机对网络流量进行高效、安全地检测,减少数据外发处理的时延,并降低隐私泄露的风险。38.根据本发明的一个实施例,参见图2,为了在p4交换机上实现对流量的检测,主要包括三个方面的改进,分别为(一)、模型的构建,包括模型的训练和/或更新、以及基于训练后的模型生成脚本文件;(二)、模型的部署,包括将p4程序和脚本文件下发到p4交换机;(三)、模型的应用,包括对原始流量进行检测(对连续输入数据包进行检测),检测数据包为正常的还是异常的。检测出来后,可以进行下一步的操作,比如:正常流量转发、异常流量记录。下面从模型的构建、部署以及应用三个方面依次进行说明。39.(一)模型的构建40.根据本发明的一个实施例,一种构建用于流量检测的随机森林模型的方法,包括步骤:a1、a2、a3、a4。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。41.步骤a1:获取待部署模型的p4交换机所支持的流水线上限以及所支持的匹配动作表的递归深度上限。42.根据本发明的一个实施例,例如,一些现有的p4交换机支持的流水线上限为4或5条流水线;支持的匹配动作表的递归深度上限为12-20层。43.步骤a2:基于所述待部署模型的p4交换机所支持的流水线上限以及所支持的匹配动作表的递归深度上限,确定为其定制的随机森林模型的规模。44.由于p4交换机的硬件条件限制,随机森林模型的规模应当考虑p4交换机的实际硬件条件。根据本发明的一个实施例,随机森林模型的规模按照以下方式确定:基于所述p4交换机所支持的流水线上限配置随机森林模型的决策树数量以及基于所述p4交换机所支持的匹配动作表的递归深度上限配置所述决策树的深度。优选的,随机森林模型的决策树数量被配置为小于等于该单个p4交换机所支持的流水线上限。优选的,随机森林模型的决策树的深度被配置为小于所述p4交换机所支持的匹配动作表的递归深度上限。根据本发明的一个实施例,在所述待部署模型的p4交换机为单个p4交换机时,所述随机森林模型的决策树数量小于等于该单个p4交换机所支持的流水线上限。根据本发明的一个实施例,在所述待部署模型的p4交换机为多个p4交换机构成的p4交换机组时,所述随机森林模型的决策树数量小于等于该p4交换机组中所有p4交换机所支持的流水线上限之和。例如,假设待部署模型的p4交换机支持的流水线上限为4条流水线;支持的匹配动作表的递归深度上限为12层,则将定制的随机森林模型的规模设为:决策树数量为4颗决策树,决策树的深度为10。之所以在优选的实施例中考虑待部署模型的p4交换机所支持的流水线上限以及所支持的匹配动作表的递归深度上限的具体限制,是因为本发明的发明人通过大量实验发现,随机森林的结构满足p4交换机的一些结构特点,例如:随机森林内决策树的分支结构对应交换机内表的递归结构,随机森林内决策树的数量可对应p4交换机的处理管线(流水线)数量,因而随机森林的结构适合应用在p4交换机中,正因为随机森林依赖于p4交换机的硬件结构执行模型,所以需要根据p4交换机的特点调整随机森林的结构,使得二者能够匹配,因此本发明针对p4交换机的具体条件(所支持的流水线上限、匹配动作表的递归深度上限)来定制其上部署的随机森林模型的规模,减少模型规模与p4交换机不匹配可能造成的模型难以部署的情况,让模型与p4交换机的硬件条件深度绑定,使得在实际的p4交换机上进行流量检测变得可行,以稳定高效地运行;而且,随机森林包含多棵决策树,可避免由单棵决策树深度过高而引发的过拟合现象;在本发明的测试中发现,p4匹配动作表的递归查询深度也是受限的,导致决策树的深度受限,如果超过,p4交换机无法编译通过,这意味着单棵决策树的规模受限,单棵决策树的异常检测与泛化能力也会受限,而随机森林包含多棵决策树,提升了检测性能。45.步骤a3:利用训练数据训练所述随机森林模型检测数据包是否异常。46.根据本发明的一个实施例,可以选用现有的数据集对定制的随机森林模型进行训练。优选的,训练数据包括多个训练样本,所述训练样本包括输入特征以及标签,所述输入特征基于数据包的包头信息和对数据包所属数据流的统计得到,所述标签指示相应数据包是正常的还是异常的。例如,可以选用unsw-nb15数据集,其中包含200万条记录,共计100gb的网络数据包。该数据集的样本包含网络特征(输入特征)共49条,包含9种常见异常流量,9种常见异常流量对应的数据包的标签被标注为异常,其余的被标注为正常。训练时,可按照3(训练集):1(测试集)的比例对该数据集的原始数据进行划分。应当理解,为了检测不同的网络流量异常,可针对性地选用不同的数据集训练随机森林模型。47.现有数据集往往是用于在通用计算机上训练模型所采用的,其内所含有的特征过多,没有考虑p4交换机的计算与存储资源受限的情况,而且,现有的p4交换机往往不支持浮点运算或者浮点运算的能力较弱。因此,为了使模型在p4交换机上高效地运作,要尽量选取直观且易于计算得出特征。鉴于此,可以对现有的数据集进行改进,根据本发明的一个实施例,本发明在对unsw-nb15数据集中的49种特征排序筛选后,选出以下特征。48.表1[0049][0050]根据本发明的一个实施例,参见表2,一些输入特征可以通过解析数据包的包头得出,而另外一些输入特征则需要对网络中数据包所处的数据流进行统计分析得到所需的输入特征。[0051][0052][0053]根据本发明的一个实施例,在一个改进的数据集中,输入特征包括源到目标的生存时间、目标到源的生存时间、每秒发送到源的比特数、目标到源数据包计数、源到目标字节数、每秒发送到目标的比特数、连接建立的往返时延、数据包所在数据流的持续时间、目标端口号或者其组合。具体用到哪些特征,可根据异常流量种类进行调整。优选的,本发明的随机森林模型可使用机器学习库scikit-learn进行离线训练。在训练完成后需要将随机森林模型保存为“.dot”格式的文件,以便进行后续处理。优选的,因为目前大部分的p4交换机不支持浮点运算,在部署前,可将训练好的随机森林模型中的浮点数转换为整数。根据本发明的一个实施例,对于不支持浮点运算的p4交换机,对计算除法也存在问题,因此可以将一些除法运算转为乘法运算来代替。例如,每秒发送到源的比特数(s_load)和每秒发送到目标的比特数(d_load)。以每秒发送到源的比特数(s_load)为例,假设判断每秒发送到源的比特数对应的阈值为ys,则判断ys×s_bytes与s_load的大小即可。[0054]步骤a4:将训练得到的随机森林模型转换为脚本文件,其中,所述脚本文件中将随机森林模型的模型参数以p4交换机支持的添加表的指令的形式存储。[0055]根据本发明的一个实施例,模型训练完成后,需要导出、结构转换生成匹配动作表,进而嵌入到p4交换机中。在本发明的测试中,使用到的表的数量一般为300到800之间,因此需要将模型的所有节点提前转换为添加表(table_add)的指令,存放到脚本中。在更新p4交换机内部的p4程序时,一同将存放表项的脚本进行下发。根据本发明的一个实施例,脚本文件将随机森林模型的节点连接关系转换为p4交换机的匹配动作关系,其中,针对随机森林模型的不同节点分配不同的节点编号,将随机森林模型的节点编号、随机森林模型中该节点编号对应节点的模型参数、分支走向转换为匹配项(matchfiled),将随机森林模型中连接不同节点的分支转换为动作表(actiontable)。[0056]根据本发明的一个实施例,p4交换机添加表的方式需要通过simple_switch_cli命令进行下发。在其命令行中,添加一条表项的指令(对应于添加表的指令)的格式为:table_add《tablename》《actionname》《matchfields》=》《actionparameters》;其中,table_add表示添加一条表项,是本指令的名字;tablename表示表的名字;actionname表示动作的名字;matchfields表示匹配项(表示匹配到何种数据时,执行此表项);actionparameters表示执行的动作的参数。对于部署随机森林模型对应的添加表的指令,包括:指令名、表名字、动作名、匹配项以及动作参数,其中,匹配项中包含随机森林模型的节点编号、节点参数和分支走向,动作参数包括下一层对应的节点编号和/或分类。例如:table_add《myingress.layer3》《myingress.setclass》《matchfiled:nodeidnodeparameterresult》=》《actionparameters:nextnodeidclass》,table_add表示指令名(添加表),myingress.layer3表示表名字,myingress.setclass表示动作名,matchfiled:nodeidnodeparameterresult表示匹配项中匹配的节点编号、节点参数、分支走向。节点参数包括输入特征的编号及对应的用于判断该输入特征的模型参数(判断条件)。比如,参见图3,图3有节点9-13,有判断输入特征s_bytes和s_ttl的两个决策节点,其余为检测结果对应的节点(叶子节点),如果《matchfiled:970》=》《actionparameters:101》匹配到节点编号为9的模型节点,假设需要查询的是7号输入特征及对应的用于判断该输入特征是否满足判断条件的模型参数,分支走向0代表分支走向为是(比如,分支走向设为:0代表是(即yes,满足判断条件),1代表否(即no,不满足判断条件))的情况下执行动作的参数。actionparameters:101表示编号为10的模型节点,数据包的分类为1,即异常(比如:数据包的分类设为:0代表正常、1代表异常)。应当理解,一些分支可能还要转向下一个节点,其对应的数据包的分类可能是中间的分类结果,而非最终的分类结果,例如,假设s_bytes《1480的分支走向为否,则进入对输入特征s_ttl《253的判断过程。[0057]根据本发明的一个实施例,脚本文件中还可以添加对经过随机森林模型检测后的数据包的转发控制逻辑,其用于控制经过随机森林模型检测的数据包进入转发流程。比如:转发控制逻辑中定义将类别为正常的数据包经由用于ip转发的匹配动作单元处理以转发到对应的端口。对于类别为异常的数据包,转发控制逻辑中也可以进一步定义将其转发到第三方的流量清洗中心进行检测等。例如,在脚本文件,添加一条用于对执行完检测的数据包进行转发的表项的指令的格式为:table_add《tablename》《actionname》《matchfields》=》《actionparameters》[priority];其中,table_add表示添加一条表项,是本指令的名字;tablename表示表的名字,例如:ip_forward;actionname表示动作的名字,例如:forward(向前转发);matchfields表示匹配到何种数据时,执行此表项,例如ip1.1.1.1;actionparameters表示执行的动作的参数,例如:端口号x,priority表示优先级。由此,在数据包经过随机森林模型且被判定为正常的数据包后,将按照预先配置好的ip转发表选择相应的端口进行转发。应当理解,也可以不在脚本文件中添加转发控制逻辑,比如:直接在p4程序中定义:将分类为正常的数据包进入转发流程(发到用p4交换机原来的用以数据包转发的匹配动作单元处理),并记录类别为异常的数据包的信息。[0058](二)、模型的部署[0059]根据本发明的一个实施例,本发明提供一种在p4交换机上部署随机森林模型的方法,包括步骤b1、b2。为了更好地理解本发明,下面结合具体的实施例针对每一个步骤分别进行详细说明。[0060]步骤b1:获取用于执行网络流量检测的p4程序以及基于构建用于流量检测的随机森林模型的方法得到的脚本文件,所述p4程序包含指示将随机森林模型的多颗决策树分布式部署在p4交换机中的多条流水线上的部署控制信息。[0061]根据本发明的一个实施例,参见图4,p4程序包括对获取的数据包的解析逻辑(解析器)、处理逻辑(入处理逻辑和出处理逻辑)和逆解析逻辑(逆解析器)的定义。[0062]根据本发明的一个实施例,解析逻辑是用于定义解析器解析规则的信息。解析器负责将数据包映射到数据包首部和元数据,用以后续处理。在本发明中,解析器的解析顺序为:以太网(ethernet)解析、ipv4(网际协议版本4)解析、tcp(tcp,transmissioncontrolprotocol,传输控制协议)解析或udp(userdatagramprotocol,用户数据报协议)解析。在本发明的后续处理中,也默认处理tcp和udp的数据包,从经过tcp解析和/或udp解析的数据包包头提取部分输入特征,用于对数据包进行检测。[0063]根据本发明的一个实施例,部署控制信息中指示将随机森林模型中的多颗决策树中的预定数量的决策树部署在p4交换机的指定流水线上。比如,假设某一台p4交换机的一条流水线可以容纳3颗决策树,则在该p4交换机的一条流水线上布置1颗、2颗或者3颗决策树。但是,根据发明人当前的了解,当前的p4交换机单条流水线部署决策树的能力有限,大多只能布置1颗决策树,因此,根据本发明的一个实施例,部署控制信息中指示将随机森林模型中的多颗决策树中的每颗决策树单独部署在p4交换机的指定流水线上。但应当理解,随着技术的发展,p4交换机的性能会不断提升,最终可能一条流水线可以布置更多预定数量的决策树,比如:2颗、3颗、4颗甚至更多的决策树。该实施例的技术方案至少能够实现以下有益技术效果:本发明将多级流水线与随机森林中的树结构进行结合,因而创新性的提出可将定制化随机森林模型的预定数量的决策树部署在p4交换机的指定流水线上,从而让模型能够依据p4交换机的具体条件部署并运行;若单独将随机森林模型中的多颗决策树中的每颗决策树单独部署在p4交换机的指定流水线上时,可以增加部署的成功几率和难度,让在p4交换机上部署随机森林模型检测流量更易于实现。[0064]根据本发明的一个实施例,处理逻辑的定义包括对动作(action)、表(table)以及应用(apply)模块的定义。这是本发明p4程序设计的重点,特征的提取与随机森林模型的异常检测都在该部分完成。处理逻辑包括入处理逻辑和出处理逻辑,图4所示实施例将检测和转发集中在入处理逻辑中,因此,在入处理逻辑中对动作(action)、表(table)以及应用(apply)模块进行定义,将出处理逻辑置为空。[0065]根据本发明的一个实施例,对动作的定义中,指定一部分动作用于初始化寄存器,用以存放运行时的数据,例如输入特征的数据,一部分动作用于对数据包的五元组(源/目的地址、源/目的端口号、协议类型)进行哈希运算,以区分不同的流,一部分动作用于标记数据包是正常还是异常的流,一部分动作用于执行转发动作。根据本发明的一个实施例,处理逻辑中定义的动作包括用于初始化寄存器以存储运行时数据的动作、对解析的数据包的包头中的包括源/目的地址、源/目的端口号、协议类型的五元组进行哈希运算以区分不同的流的动作、用于标记数据包是正常还是异常的流的动作以及用于执行转发的动作。[0066]根据本发明的一个实施例,对表的定义中,包括用于定义随机森林的节点的匹配动作表、用于记录随机森林模型对数据包的检测结果的表以及ip转发表。用于定义随机森林的节点的表的数量根据随机森林的深度所决定,随机森林的每层节点可使用同一种类型的表进行创建。[0067]根据本发明的一个实施例,对于应用模块的定义,该部分控制执行匹配动作(match-action)单元。应用模块被定义为:根据解析器(parser)解析数据包得到的数据包包头以及对数据包所处的数据流统计的数据计算输入特征,输入特征用于随机森林模型对数据包进行检测,以判断数据包是正常的还是异常的;将检测结果存储在用于记录随机森林模型对数据包的检测结果的表;以及检测为正常的数据包根据ip转发表转发到对应的端口。相当于,获得输入特征后就在随机森林相关的表中执行分类流程,从第一个表(table)注入,直到获取分类结果/检测结果(即标记异常还是正常数据包),存储在用于记录随机森林模型对数据包的检测结果的表。最后根据检测结果,正常的数据包根据ip执行相对应的转发表;异常的数据包直接记录。[0068]根据本发明的一个实施例,对于逆解析器的定义,包括:对标记为正常数据包由逆解析器将经过处理逻辑处理后的数据包包头与原始的数据包内容组合并转发到相应的端口。即:逆解析器负责将更新后的数据包包头与数据包内容重新组合转发到对应的端口,准备进行转发。[0069]步骤b2:通过待部署模型的p4交换机的控制平面将所述p4程序和所述脚本文件下发到p4交换机中,以利用在所述p4交换机的多级流水线上部署的随机森林模型检测进入的数据包是否异常。[0070]根据本发明的一个实施例,在p4程序用于在运行时填充匹配动作表,以控制匹配动作。p4程序用于限定随机森林模型的结构。脚本文件用于提供该随机森林模型的模型参数。需要根据添加表的指令(table_add)将树节点所对应的匹配动作表逐个添加到p4交换机中,其中,通过simple_switch_cli命令将脚本文件中添加表的指令下发到p4交换机的数据平面。该实施例的技术方案至少能够实现以下有益技术效果:本发明通过在p4交换机的多级流水线中部署随机森林模型来实现网络内实时异常流量检测,从而实现网内实时高灵活性的异常流量检测。[0071]根据本发明的一个实施例,当随机森林模型在p4交换机上部署时,将随机森林模型的决策树配置为依赖p4交换机的匹配动作单元执行,其中,决策树的决策节点利用匹配动作单元的匹配项执行决策操作,在匹配项接收到输入特征后,根据输入特征判断是否满足条件,并根据判断的结果通过动作转入对应的分支以流向下一个决策节点或者叶节点,叶节点是识别所述数据包是否异常的分类结果。优选的,部署时,通过脚本文件将随机森林模型的模型参数以匹配动作表加载进p4交换机,还通过p4程序指示随机森林模型的结构以让匹配动作单元控制动作的流向。该实施例的技术方案至少能够实现以下有益技术效果:本发明将随机森林模型与匹配动作单元相结合,以利用p4交换机自身的数据结构部署随机森林模型,实现对流量的实时检测,既提高了检测效率,又保障了隐私。[0072]本发明可以部署在单个的p4交换机上,根据本发明的一个实施例,在所述待部署模型的p4交换机为单个p4交换机时,所述随机森林模型的决策树数量小于等于该单个p4交换机所支持的流水线上限。[0073]若需要部署更大型的随机森林模型,本发明也可将多个p4交换机组成交换机组,将交换机组作为待部署模型的p4交换机,根据本发明的一个实施例,在所述待部署模型的p4交换机为多个p4交换机构成的p4交换机组时,所述随机森林模型的决策树数量小于等于该p4交换机组中所有p4交换机所支持的流水线上限之和。该实施例的技术方案至少能够实现以下有益技术效果:因为p4交换机内部一级流水线资源受限,而p4交换机往往包含多级流水线,单台p4交换机流水线数量不够时,本发明还可以使用多台p4交换机组成系统,以更加灵活高效地部署模型,满足不同的应用场景。[0074]根据本发明的一个实施例,随机森林模型是部署在p4交换机的入处理逻辑和/或出处理逻辑中的流水线。入处理逻辑和出处理逻辑中的结构相同,只是执行的任务不同,因此随机森林模型可以选择性地部署在入处理逻辑中或者出处理逻辑中,当然,因为二者通过队列缓冲区交互,也可以将随机森林部署在入处理逻辑和出处理逻辑中。[0075](三)、模型的应用[0076]根据本发明的一个实施例,本发明提供一种网络流量的检测方法,应用于p4交换机,包括:获取待检测的数据包;将数据包输入部署在p4交换机上的随机森林模型,得到检测结果,其中,所述随机森林模型的规模是根据p4交换机支持的流水线数量与匹配动作表的递归深度定制的,并且在部署时,随机森林模型中的多颗决策树分散部署在p4交换机多条流水线上。优选的,所述随机森林模型是按照构建用于流量检测的随机森林模型的方法为所述p4交换机定制的。优选的,所述随机森林模型按照在p4交换机上部署随机森林模型的方法部署在p4交换机上。[0077]根据本发明的一个实施例,在多级流水线部署随机森林模型的示意图如图5所示,随机森林模型分散地部署在不同流水线上,每级流水线部署随机森林模型的一颗决策树。根据本发明的一个实施例,可将不同流水线串联在一起,如果前面的流水线检测出数据包是异常的,则不进行后续检测,将数据包标记为异常,如果前面的流水线检测出数据包是正常的,则转发给下一条流水线进行检测。当然,也可以用所有的流水线中部署的决策树分别对数据包进行检测,然后投票决定数据包的类别。另外,也可将不同流水线并联,即数据包进入后,直接转发到所有流水线分别并行对数据包进行分类,然后投票决定数据包的类别。假设图5中的随机森林模型集中部署在入处理逻辑,在入处理逻辑中部署随机森林模型的p4交换机的每级流水线运行步骤包括:[0078]步骤101:数据包由解析器进入p4交换机。解析器负责将数据包映射到数据包首部和元数据,用以后续处理。在本发明中,解析器的解析顺序为:以太网(ethernet)解析、ipv4(网际协议版本4)解析、tcp(tcp,transmissioncontrolprotocol,传输控制协议)解析或udp(userdatagramprotocol,用户数据报协议)解析。在本发明的后续处理中,也默认处理tcp和udp的数据包。[0079]步骤102:数据包首部被提取后,转至入处理逻辑(ingresscontrolflow)进行处理。入处理逻辑包含多组匹配动作单元。执行动作前需要先定义好匹配项(matchfiled)和执行的表(actiontable),即匹配动作表。其具体执行过程由p4交换机的应用(apply)模块控制。p4交换机包含入处理逻辑和出处理逻辑,执行预先定义好的程序控制逻辑,比如程序控制逻辑包括利用部署在p4交换机的随机森林模型对数据包进行检测的逻辑和/或转发控制逻辑。在本示例中,控制逻辑集中在入处理逻辑,因此并未启用出处理逻辑,出处理逻辑置为空。[0080]步骤103:通过逆解析器(deparser)将在前的入处理逻辑更新后的数据包包头与数据包内容重新组合,接着转移到相对应的下一层流水线或者发送端口。数据包分为包头和数据包内容(报文)两部分。p4交换机对包头信息进行处理,处理完成后,需要更新包头信息,再与报文组合。[0081]需要说明的是,虽然上文按照特定顺序描述了各个步骤,但是并不意味着必须按照上述特定顺序来执行各个步骤,实际上,这些步骤中的一些可以并发执行,甚至改变顺序,只要能够实现所需要的功能即可。[0082]本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。[0083]计算机可读存储介质可以是保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以包括但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。[0084]以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本
技术领域
:的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本
技术领域
:的其它普通技术人员能理解本文披露的各实施例。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1