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

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

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

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

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

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

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

图1KDN架构

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

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

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

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

KDN工作流程如图2所示。

图2KDN工作流程

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

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

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

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

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

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

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

子数据集名称所含压缩文件名称包含数据或源代码描述虚拟化网络功能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.zip1000个测试流量矩阵look.csv.gz100000个测试路由配置神经网络CodeMatlab.zip用于训练VNF数据的Matlab代码CodePython.zip用于训练overUnderNetwork数据的Python代码

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

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

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

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

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

(1)监督型深度学习。

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

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

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

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

(1)闭环。

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

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

(2)开环。

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

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

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

THE END
1.NSLKDD99:该数据集是从一个模拟的美国空军局域网上采集来的9个星期的网络连接数据,分成具有标识的训练数据和未加标识的测试数据。测试数据和训练数据有着不同的概率分布,测试数据包含了一些未出现在训练数据中的攻击类型,这使得入侵检测更具有现实性。NSL-KDD:是KDD '99数据集https://www.coder100.com/index/index/content/id/1042620
2.NSLKDD数据集NSL_KDD数据集评分: 用于机器学习入侵检测的数据集,NSL_KDDNSL-KDD 这是KDD数据的改进版。进行网络入侵检测的研究生人员可以下载。 NSL_KDD2018-05-03 上传大小:23.00MB 所需:39积分/C币 NSL-KDD数据集各文件下载 包含:KDDTrain+.ARFF、KDDTrain+.TXT、KDDTrain+_20Percent.ARFF、KDDTrain+_20Percent.TXT、https://www.iteye.com/resource/xiqianwei7030-10389510
3.KDD99数据集与NSLKDD99数据集与NSL-KDD数据集介绍 摘要 这一部分会介绍一下KDD99数据集,包括NSL-KDD数据集,整理一些自己使用过的资料。 文章目录(Table of Contents) 入侵检测介绍 IDS : intrusion detection system, 入侵检测系统, 常用的方法有基于 anomaly detection 和Misuse detection.https://mathpretty.com/10244.html
4.深度学习机器学习用神经网络进行入侵检测,NSL数据处理&&训练技巧 建神经网络,输入41个特征,输出是那种类别的攻击 模型训练 模型推理 写gradio前端界面,用户自己输入41个特征,后端用模型推理计算后显示出是否是dos攻击。 使用方法: 获取代码和模型 【深度学习】用神经网络进行入侵检测,NSL-KDD数据集,用TCP连接特征判断是否是网络入侵 http://www.mzph.cn/news/774862.shtml
5.nslkdd数据集GitHubJehuty4949/NSLKDD:NSLNSL-KDD Dataset. Contribute to Jehuty4949/NSL_KDD development by creating an account on GitHub.https://github.com/defcom17/NSL_KDD
6.NSLKDD数据集Gale2020-11-0816219CC-BY-SA-NC 4.0 描述 NSL-KDD数据集 数据列表 数据名称上传日期大小下载 KDDTrain+.csv2020-11-0818.22MB KDDTest+.csv2020-11-083.28MB 文档 目录https://tianchi.aliyun.com/dataset/82644/
7.在NSL在NSL-KDD数据集上的组内对比 2024, 50(5): 543-557. 模型异构的联邦学习入侵检测 .https://journal.bjut.edu.cn/bjgydxxb/supplement/c75cec30-04ad-4a46-8446-f3505612af28
8.基于NSL朱平哲 三门峡职业技术学院信息传媒学院,三门峡,472000 在线阅读 下载 引用 收藏 分享 打印 摘要:针对物联网中设备和服务存在的潜在安全隐患,对入侵检测过程中的若干种特征选择方法进行比较研究.基于NSL-KDD数据集,以跨行业数据挖掘标准流程(Cross-Industry Standard Process for Data Mining,简称"CRISP DM")为主要研究https://d.wanfangdata.com.cn/periodical/ntfzzyjs201903005
9.用于异常检测的网络流量特性分析3.1 NSL-KDD数据集 我们知道,由于网络、流量配置和攻击的多样性,任何网络流量数据集的代表性都可能受到质疑。所以找到合适的标签数据集是很困难的。许多已发表的异常检测和特征选择建议仍然使用DARPA ' 98和KDD ' 99CUP,尽管这些数据集的古老性和强大的,广泛的批评家建议不要使用这些数据集(McHugh 2000)。在这项https://www.jianshu.com/p/a0418daa6bb7
10.AdetailedanalysisoftheKDDCUP99datasetKDD’99数据集存在一些问题,因为继承自DARPA‘98数据集,且只在其上面做了细微改动,所以原始问题也遗留了下来 Q2 这是否是一个新的问题? Q3 这篇文章要验证一个什么科学假设? Q4 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员? Q5 论文中提到的解决方案之关键是什么? Q6 论文中的实验是如何https://readpaper.cn/paper/2099940443
11.6.基于机器学习的入侵检测和攻击识别——以KDDCUP99数据集为KDD Cup 1999数据集: 是KDD知识发现和数据挖掘会议的比赛数据集,主要为军事网络环境中模拟的多种入侵,是入侵检测应用的常用数据集,后续衍生出NSL-KDD。建议读者结合论文和官网数据集进行分析: https://www.unb.ca/cic/datasets/nsl.html 数据文件包括: https://www.huoban.com/news/post/19490.html
12.NSLKDDcnn实现cnnlstm代码mob64ca13f87273的技术博客CNN通过将滑动卷积滤波器应用于输入来处理序列数据。CNN可以从空间和时间维度学习特征。LSTM网络通过循环时间步长和学习时间步之间的长期依赖关系来处理序列数据。CNN-LSTM网络使用卷积层和LSTM层从训练数据中学习。 本代码基于Matlab平台编写实现,使用Maltab自带的数据集,注释详细,使用者可通过更改训练数据集实现自己需要的https://blog.51cto.com/u_16213584/9680862
13.时间序列异常检测(二)——基于KDD99数据集的实战异常检测(Anomaly detection)在时序数据分析中是一项成熟的技术,其核心在于识别正常数据流中的异常事件或行为。此技术广泛应用于量化交易、网络安全检测、自动驾驶与大型工业设备的日常维护等多个领域。本文基于KDD99与NSL_KDD数据集,探讨了深度与传统机器学习算法模型在异常检测领域的性能表现,并结合具体https://zhidao.baidu.com/question/1895056899041046308.html
14.网络入侵检测NetworkIntrusionDetectionSystem(NIDS)下载数据集 下载地址:NSL-KDD | Datasets | Research | Canadian Institute for Cybersecurity | UNB 这里采用NSL-KDD数据集而没有采用CICIDS2017数据集,因为CICIDS2017数据集太大了,本机电脑跑不动,NSL-KDD是轻量版的KDD-CUP-1999,去除了冗余字段和重复的流条目,便于测试。 http://www.louzhutie.cn/?article/1239387