APP下载

深度学习在SDN中的应用研究

2019-01-19李鹏飞邵维专

计算机技术与发展 2019年1期
关键词:报文平面架构

李鹏飞,邵维专

(四川大学 计算机学院,四川 成都 610065)

0 引 言

软件定义网络(software defined networking,SDN)[1-2]是近年来迅速发展起来的一种新型网络架构,基本特点是将传统网络交换设备进行数据转发与控制的抽象分离。SDN网络架构与传统“漏斗”式网络架构相比,最大的区别在于,SDN网络可以通过软件编写的方法实现对网络设备转发能力的灵活定义,简而言之,SDN是一种可实现编程控制的网络。SDN架构一经推出就受到业界的高度认可,并被认为是一种未来网络的终极解决方案。

2006年,Geoffrey Hinton等[3]提出了深度学习的概念。深度学习是机器学习的一个分支,是机器学习中表征学习方法的一类。在深度学习提出以前,很多机器学习方法得到了广泛应用,如支持向量机(support vector machine,SVM)[4]、K最近邻法(k-nearest neighbor,KNN)[5]、逻辑回归(logistic regression)[6]、Boosting[7]等。然而,这些模型的基本结构可以被理解为只有一层隐藏层或者没有隐藏层的简单人工神经网络。因此,这些机器学习模型在处理多维数据时一般会存在一定的局限性,通常这种局限性可称之为“维度爆炸”,即高维的数据特征很难被完美地映射成低维的抽象数据特征。

深度学习为解决机器学习的局限性创造了一个新的开端。深度学习算法是一个对特征学习的过程,在学习过程中能够发现多层特征,并能够将高层特征表示成更抽象的数据特征。深度学习网络模型因为具有多个隐藏层而具有很强的特征学习能力,相对于机器学习模型具有很大的进步。深度学习网络类似于大脑的神经网络,大脑中的神经网络由数千亿神经元连接而成,而深度学习网络同样由大量的人工神经元组成。深度学习中数据之间的关系由复杂的非线性模型来表示,然后通过训练大量的数据来确定数据之间的关系。目前,深度学习已经在语音识别、计算机视觉、自然语言处理等领域得到了广泛应用,由Andrew Ng领导的Google Brain团队已经构建了经过训练后可以识别高级概念图片的神经网络模型[8]。

SDN作为一种新兴的网络体系结构,其智能化的发展需求逐渐被提出,而深度学习的发展正好契合了此需求。然而,目前深度学习并没有在SDN架构下的网络环境中得到广泛应用,因此文中旨在研究如何在SDN中引入深度学习,从而推动SDN的智能化发展。

1 架 构

KDN[9]架构是各种机器学习方法应用于SDN的一种通用架构,所以对于深度学习应用于SDN同样适用。KDN架构就是在SDN架构中引入知识平面[10]和管理平面,其架构如图1所示。

图1 KDN架构

数据平面:数据平面由转发设备组成,负责存储、转发和处理数据包。数据平面根据控制平面下发的流规则对数据报文进行解析、查表、过滤匹配以及端口映射等处理。

控制平面:控制平面由SDN控制器组成,逻辑集中的SDN控制器间交换操作状态进而更新流规则并将流规则以Imperative语言的形式通过南向接口下发到数据平面的转发设备。

管理平面:垂直于控制平面和数据平面,定义网络拓扑,收集并处理网络设备提供的信息,监控分析网络。

知识平面:使用深度学习方法处理管理平面收集的信息,然后利用学习到的知识自动地或人为干预地制定具体的网络控制决定并将决定以Intent语言的形式下发到控制器,控制器再将Intent以Imperative 语言的形式下发到转发设备。

KDN工作流程如图2所示。

图2 KDN工作流程

分析平台实时监控数据平面获取细粒度的流量信息,并查询SDN控制器获取控制和管理状态,然后将收集到的数据提交给知识平面,知识平面使用深度学习算法学习网络行为并制定具体的网络控制决定并将决定以Intent语言的形式下发到控制器,控制器将接收到的Intent以Imperative语言的形式下发到转发设备。

2 数据集来源

2.1 KDD99和NSL-KDD

KDD99将攻击类型分为4类,然后又细分为39小类,每一类代表一种攻击类型,类型被标记在训练数据集每一行记录的最后一项。

KDD99训练集中共出现了22个攻击类型,而剩下的17种只在测试集中出现(用黑体标注)。这样设计的目的是检验分类器模型的泛化能力,对未知攻击类型的检测能力是评价入侵检测系统好坏的重要指标。KDD99数据集总共由500万条记录构成,它还提供一个10%的训练子集和测试子集。

NSL-KDD是对KDD99的改进数据集,除去了KDD99数据集中的冗余数据,克服了分类器偏向于重复出现的记录,学习方法的性能受影响等问题。对正常和异常的数据比例进行了合适选择,测试和训练数据数量更合理,因此更适合在不同的机器学习技术之间进行有效准确的评估。NSL-KDD分为KDDTrain+和KDDTest+,在KDDTrain+中有125 973个训练样本,在KDDTest+中有22 554个测试样本。

2.2 ISCX2012

ISCX2012记录的是7天时间真实网络环境中的流量信息,其中包含合法的网络流量以及多种类型的恶意DDoS攻击流量。在这7天的网络流量记录中,DDoS攻击发生时间段为2010/6/14到2010/6/15这两天时间。其中,2010/6/14包含超过960多万条数据报文信息,2010/6/15则包含将近3 500万条数据报文信息。

ISCX2012数据集列出了合法或各DDoS攻击类型的数据报文相关信息,包括数据报文类型名,抓包时间,源或目的IP地址,TCP/UDP报文的源或目的端口号等字段信息。

由于2010/6/14和2010/6/15这两天中大部分流量信息都是合法的数据包流量,为了消除数据偏差,在输入到深度学习算法进行训练时,可将所有攻击类型数据报文与随机数目的合法数据报文混合,进行重新采样后再进行输入。

2.3 KDN dataset

KDN数据集包含虚拟化网络功能、网络特征、基于深度加强学习的SDN网络路由优化和神经网络四个子数据集,如表1所示。

表1 KDN数据集包含子数据集描述

子数据集名称所含压缩文件名称包含数据或源代码描述虚拟化网络功能OVS.zip流量特征和连接到SDN控制器的OVS的CPU消耗Firewall.zip流量特征和配置防火墙规则的OVS的CPU消耗Snort.zip流量特征和经过初始化配置的SNORT的CPU消耗网络特征overUnderNetwork.zip实现负载均衡的overlay-underlay网络中的流量、负载均衡和流层面延时star.zipstar网络中的流量和节点对之间的延时ring.zipring网络中的流量和节点对之间的延时scaleFree.zip无尺度网络中的流量和节点对之间的延时overUnder.zipoverlay-underlay网络中的流量和节点对之间的延时基于深度加强学习的SDN网络路由优化DRL.zip深度加强学习代理和OMNeT++网络拓扑的源代码train.csv.gz深度加强学习代理在训练期间的表现benchmark.csv.gzBenchmark数据traffic.zip1 000个测试流量矩阵look.csv.gz100 000个测试路由配置神经网络CodeMatlab.zip用于训练VNF数据的Matlab代码CodePython.zip用于训练overUnderNetwork数据的Python代码

3 快速特征提取

3.1 Apache Spark

涉及大量快速数据的应用需要快速处理和大的存储空间,虽然Hadoop系统在提供分布式存储空间方面表现良好,但是在数据处理方面不是太高效,而Spark的提出正是为了解决这一问题。Spark是一个开源的分布式框架,通过对中间结果的内存存储来加快数据处理。Spark可以将Hadoop集群中的应用在内存中的运行速度提升100倍,甚至能够将应用在磁盘上的运行速度提升10倍。Resilient Distributed Dataset (RDD)是Spark的核心,一个RDD代表一个可以被分区的只读数据集,RDD是容错的,Spark提供了多种操作RDD的API。Spark将数据存储为RDD形式,并可以缓存RDD到内存做进一步处理。

Spark SQL,作为Spark框架的一部分,运行在Spark框架的顶层,主要用于对数据集提供关系型操作。Spark SQL将RDD转变为dataframe,dataframe可以看作关系数据库中的表,允许用户使用sql命令操作相关数据。

3.2 HDFS

Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件(commodity hardware)上的分布式文件系统,和现有的分布式文件系统有很多共同点,同时区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。

3.3 在KDN中引入Spark和HDFS

参考文献[11],可以将Spark和HDFS引入KDN架构中的分析平台,实现快速特征提取和实时控制。引入Spark和HDFS的分析平台如图3所示。

其工作流程为:分析平台从控制平面和数据平面收集信息并保存到CSV文件,到达一定时间间隔后,将CSV文件分布式存储到HDFS用于后期处理。在处理阶段,Spark将CSV文件转换成dataframe,并注册一个临时表,然后Spark通过Spark sql查询方式提取流量特征。一旦流量特征提取成功,Spark簇的master节点就将这些流量特征发送到分析平台,分析平台再将这些流量特征发送到知识平面供深度学习算法进一步学习,知识平面利用深度学习算法学习到的知识自动地或辅助网络操作员制定具体的网络控制决定。

图3 引入Spark和HDFS的分析平台

4 深度学习算法选择

4.1 深度学习算法

深度学习算法可分为监督型深度学习算法、非监督型深度学习算法。

(1)监督型深度学习。

监督型深度学习需要提前给训练数据打标签并进行特征提取。在这种情况下,知识平面可以学习到一个描述网络行为的模型,即一个联系网络参数和网络行为的函数。

(2)非监督型深度学习。

非监督型深度学习采用数据驱动来发现知识,能够发掘所分析数据的内在结构,不需要给样本打标签。在这种情况下,知识平面能发现网络操作员意识不到的数据相关性,比如知识平面可能发现本地天气对链路使用的影响。

4.2 算法选择

根据网络操作者是否介入网络决定,KDN架构的控制环可以分为开环和闭环,知识平面也对应着两套应用,当知识平面应用使用不同的深度学习算法时,可实现不同的网络功能,如表2所示。

表2 开环和闭环下的可实现应用

(1)闭环。

·当应用使用监督型深度学习算法时,首先,知识平面可以代表网络管理员利用所获取的网络模型自动地向网络做决定;其次,可以通过优化技术探究学习到的网络模型获得网络最优配置,所以学习到的网络模型可以用于网络优化。

·当应用使用非监督型深度学习算法时,因为非监督型深度学习能够发掘所分析数据的内在结构,所以发现的知识可以用于改进网络。

(2)开环。

·当应用使用监督型深度学习算法时,首先,学习到的网络模型可用于验证,在这种情况下,网络管理员在应用新的配置前可以通过查询模型验证是否可行;其次,因为网络操作者可以微调模型相关参数并获得网络表现评估,所以学习到的网络模型可以用于网络表现评价和分析。

·当应用使用非监督型深度学习算法时,网络操作者可以参考学习到的知识对网络做决定。

4.3 深度学习与强化学习相结合

深度强化学习[12]将深度学习的感知能力和强化学习[13]的决策能力相结合,可以直接根据输入的数据进行控制,是一种更接近人类思维方式的人工智能方法。深度强化学习下会有一个旨在寻找最优策略的DRL agent,这个DRL agent不断与环境进行交互,向环境发送action,环境再向DRL agent反馈observation和reward。DRL agent的目标就是寻找一个最优策略使reward累加和期望最大。例如在文中环境下,DRL agent的目标可以是寻找一个最优策略,在该最优策略下实现SDN网络的最优配置。

5 分析深度学习在SDN中的现有应用

文献[14]将深度学习与传统机器学习进行了对比,表明深度学习在网络入侵检测中具有一定的优势。文献[15]使用深度全连接神经网络实现了一个SDN网络入侵检测应用,所用数据集为NSL-KDD dataset,从41个特征中选取其中6个,即duration,protocol_type,src_bytes,dst_bytes,count,srv_count,含义分别是:连接的持续时间,协议类型,从源到目的的字节数,从目的到源的字节数,在过去两秒钟连接到同一个主机的连接数,在过去两秒钟连接到同一个服务的连接数。当使用相同的六元特征子集时,其准确率明显高于其他算法,但是该算法模型过于简单,只是一个具有三层隐藏层的深度全连接神经网络,准确率也不是太高,如果适当调整模型或采用更复杂的深度学习算法,准确率一定会显著提高。另外,除了用准确率来评估网络性能,还应该考虑吞吐量等其他因素。

6 结束语

论述了深度学习在SDN中的应用研究,具体包括架构、数据源、快速特征提取、深度学习算法选择和分析深度学习在SDN中的现有应用五个方面。SDN的智能化需要深度学习,另外,SDN中有许多突出问题亟待解决,如网络入侵检测、流表冲突检测和SDN的故障自愈管理等,而深度学习必将为这些问题带来新的解决办法。当前,深度学习在SDN中的应用还很少,希望该文有助于深度学习在SDN中应用的进一步推广。

猜你喜欢

报文平面架构
基于J1939 协议多包报文的时序研究及应用
以太网QoS技术研究及实践
基于报文类型的限速值动态调整
功能架构在电子电气架构开发中的应用和实践
基于B/S架构的图书管理系统探究
构建富有活力和效率的社会治理架构
浅析反驳类报文要点
立体几何基础训练A卷参考答案
立体几何强化训练B卷参考答案
参考答案