1 软件定义网络
2 SDN的攻击方式
表1 网络攻击方式 |
| 攻击方式 | 攻击位置 | 攻击机制 |
| 代码注入 | 应用层 | 攻击者通过向应用程序中注入恶意代码,从而实现对应用程序功能的操控。这些恶意代码可以执行窃取用户数据的非法操作 |
| DoS、DDoS | 应用层、控制层、数据层 | 攻击者通过大量请求来拥塞API,使SDN无法处理正常请求,导致SDN控制器无法正常工作,影响整个网络的稳定性 |
| 暴力破解 | 数据层 | 也称为暴力枚举或暴力穷举。攻击者使用自动化工具或脚本,尝试所有可能的字符组合作为密码,直到找到正确的密码为止 |
| 拓扑攻击 | 控制层 | 攻击者可能通过篡改网络拓扑信息,误导SDN控制器做出错误的路由决策,从而影响网络的正常通信 |
| 流量嗅探 | 应用层、控制层、数据层 | 攻击者通过监听或捕获网络中的数据包,从而获取敏感信息或进行恶意活动 |
| 数据包注入 | 控制层、数据层 | 攻击者向SDN网络中的控制层注入经过篡改或变形的控制数据包 |
| ARP欺骗攻击 | 控制层、数据层 | 该攻击通过伪造网络设备的ARP响应,欺骗其他设备发送数据到错误的目标地址 |
| 流表洪泛攻击 | 控制层、数据层 | 攻击通过向SDN网络中的交换机发送大量的流表项请求,导致交换机的流表资源耗尽,从而无法再处理正常的网络流量 |
3 SDN入侵检测方法
3.1 基于机器学习的SDN入侵检测方法
3.1.1 基于DT的检测方法
3.1.2 基于NB的检测方法
3.1.3 基于SVM的检测方法
3.1.4 基于KNN的检测方法
3.1.5 基于K−means的检测方法
3.1.6 基于PCA的检测方法
表2 基于机器学习的入侵检测方法 |
| 方法 | 数据集 | 运行机制 | 局限 | 文献 |
| KPCA+SVM | NSL−KDD | 相比前一方法,该方法则是使用KPCA算法对特征向量进行降维,然后采用遗传算法对不同的SVM参数进行优化 | 该模型结合的两种算法,在处理大规模网络流量时,会导致检测延迟或实时性能下降 | [22] |
| DT、SVM | KDD99 | 在SDN架构中结合DT和SVM方法,构建一个高效、智能的入侵检测系统统稳定性和安全性 | SDN控制器可能成为单点故障点,影响系 | [23] |
| ID3 | 自定义数据集 | 该方法融合了机器学习与遗传算法,构建了入侵检测系统以实时监控网络流量、精准检测并有效分类网络攻击 | 自定义数据集可能没法反映真实的网络环境,存在误报和漏报的风险,除了可能存在漏报和误报的风险外,当大量数据进入网络时检测效率可能偏低 | [24] |
| XGBoost+BF | 自定义数据集 | 首先,使用P4编程收集定制数据包,提取优化攻击特征。其次,借助XGBoost分类器识别异常包并定位攻击源。最后,BF快速识别后续攻击 | [25] | |
| SVM+RF | 自定义数据集 | 比对了8种机器学习算法做入侵攻击检测得出SVM+RF的效果最佳。接着使用丢弃非法流量和重定向非法流量2种方法来缓解网络攻击 | [26] | |
| SVM+DNN | 自定义数据集 | 针对物联网医疗生态环境,作者在SDN架构下使用了机器学习SVM和深度学习DNN的混合算法来保障医疗网络系统的安全性 | 除了以上自定义数据集的问题外,在资源受限的偏远地区部署这样的系统可能造成网络不稳定 | [27] |
| RF、NB | NSL−KDD | 该方法通过机器学习技术监控网络行为以检测异常,并采用预留带宽的策略,确保优先级较高的应用能够获得高效带宽 | 机器学习模型可能面临数据质量和计算资源的挑战,预留带宽策略会影响网络灵活性 | [28] |
| ML+Entropy | DARPA数据集和自定义数据集 | 该方法融合了机器学习和熵两种方法来识别攻击。先使用信息熵作为过滤器,接着使用机器学习算法SVM+RF来识别攻击 | 新型的攻击检测可能不够准确 | [29] |
3.2 基于深度学习的SDN入侵检测方法
3.2.1 基于DNN的检测方法
3.2.2 基于RNN的检测方法
3.2.3 基于CNN的检测方法
3.2.4 基于AE的检测方法
3.2.5 基于GAN的检测方法
表3 基于深度学习的入侵检测方法 |
| 方法 | 数据集 | 运行机制 | 局限 | 文献 |
| DNN+PCA | UNSWNB15 | 提出了一种SDN环境下基于DNN+PCA的扫描攻击检测模型。通过实验选择适当的降维数据作为DNN输入,引入2个额外参数来改进ReLU函数 | 在处理大规模网络流量时,该方法会导致检测延迟或实时性能下降 | [39] |
| LSTM+CNN | NSL−KDD | 该算法先是融合了正弦余弦算法和金枪鱼优化算法对数据集进行特征选择,然后使用LSTM和CNN方法对SDN中的网络攻击进行分类检测 | 正弦余弦算法在搜索过程中可能容易陷入局部最优解,该算法通过LSTM+CNN结合会显著增加模型复杂度,可能出现过拟合的现象 | [40] |
| Hybrid LSTM | InSDN | 与上一方法同样针对于高维数据,使用特征选择方法进行降维,降低了不利特征对检测的影响。然后区别于以上二分类的方法,提出了一种基于多分类的混合LSTM的入侵检测模型 | 针对多分类算法的性能较好,但对于二分类的检测效果可能性能效果不佳 | [41] |
| BiLSTM | CSECICIDS2018 | 该算法是在无线网络环境中,建立了一种BiLSTM模型,BiLSTM模型允许两个独立的LSTM一起在向前和向后方向上执行并行操作,在特定的时间框架内按顺序存储信息。每个LSTM有3个门:输入门、遗忘门、输出门 | 虽然BiLSTM通过双向LSTM的堆叠可以一定程度上缓解长序列的局限性,但是对于过长序列的处能力依然有限 | [42] |
| DNN+LSTM+GRU | CICDDoS2019 | 该方法则是分别结合了DNN+LSTM和DNN+GRU算法对SDN的可编程控制平面进行检测 | 该方法主要针对控制层进行防御检测,对于应用层的入侵攻击可能会检测不到位 | [43] |
| CNN+LSTM | CICIDS2017 | 利用LSTM和CNN的预测能力来检测SDN控制平面中的网络威胁 | LSTM和CNN的性能高度依赖于训练数据的质量和数量。训练数据不足以覆盖所有可能的网络威胁场景 | [44] |
| CNN+Transformer | CICDDoS2019 | 该架构结合了CNN和Transformer模型,其中Transformer层提供计算能力和可扩展性,以处理网络流量的全局特征;CNN层则利用卷积操作捕捉局部特征,提供强大的分析能力 | 虽然Transformer在捕捉全局信息优于上一方法的LSTM,但是如果混合DDoSTC架构中的关键组件(如控制器或数据处理单元)出现故障,整个系统会受到影响 | [45] |
| CNN+GRU | CICDDoS2019、CICIDS2017、InSDN | 数据经过预处理后,使用CNN从数据中提取出空间特征,这些特征随后被输入到多层GRU中,用于对与输入数据相关的时间特征进行建模,GRU相比其他算法可以有效避免过拟合 | 对整体的特征提取效果不如CNN+Transformer方法,忽略了部分和整体的关联性 | [46] |
| CNN、LSTM、MLP、SAE | 自定义数据集 | 将SDN交换机中的数据包长度作为序列收集,用于深度学习模型识别异常和恶意数据包 | 网络攻击和异常行为往往不仅体现在数据包长度上,还会涉及其他多个维度的特征,无法全面反映网络流量的多样性 | [47] |
| GAN+DBN+LSTM | CICDDoS2019 | 首先,通过SDN控制器实现IP流记录的细粒度监控与采集,其次,通过归一化和香农熵预处理数据。最后,设计了一种GAN−DBN−LSTM异常检测方法识别DDoS攻击 | DBN和LSTM都是复杂的深度学习模型,需要大量的计算资源进行训练 | [48] |
| Transformer、Inception−BiGRU−SA | CICIDS2017和CICddos2019 | 提出了基于Transformer和Inception−BiGRU−SA网络的入侵检测模型TIBS。首先,TIBS由Transformer的Encoder部分用于全局捕获连接,并对输入数据进行初步的特征提取。其次,利用改进的Inception模块提取多尺度特征。利用SA对提取的不同尺度空间特征进行加权,使用BiGRU提高模型提取时间特征的能力,最后,使用Softmax激活函数进行最终分类 | TIBS模型结合了多种先进的深度学习技术,因此,模型具有较高的复杂度和较多的参数 | [49] |
3.3 基于强化学习的SDN入侵检测方法
表4 基于强化学习的入侵检测方法 |
| 方法 | 数据集 | 运行机制 | 局限 | 文献 |
| RL | Mininet平台生成的数据 | 通过收集网络指标分类为配置文件,利用强化学习指导SDN控制器处理操作,并根据动作奖励设置异常检测策略。该模型以在线方式平衡流量负载,并通过Linux机器人检测蜜罐 | 虽然通过Linux机器人检测蜜罐可以提高安全性,但这也会引入新的安全风险 | [62] |
| 神经网络拟合Q−learning | 模拟的流量 | 基于神经拟合Q−learning代理的威胁检测机制ATMoS通过在模拟实验床上部署恶意主机和良性主机的变种来检测APT和TCP SYN−flood攻击 | 攻击者破坏或操纵ATMoS的训练过程或决策过程会导致系统失效或产生错误的响应 | [50] |
| DQN | 自生成常规网络流量 | DQN代理基于价值学习,利用神经网络预测未来回报,指导智能体作出更优决策 | DQN算法在连续动作控制问题上表现不佳。这限制了其在某些需要连续动作决策的场景中的应用 | [54] |
| DQN+PPO | 自生成常规网络流量 | 该方法在上一方法的基础上,先计算出主机数据包的最大量,并据此为不同进程设定阈值规则。随后,利用Snort虚拟设备监控网络流量,一旦检测到超过阈值的异常流量,立即触发警报 | 解决了上一方法的不足,但在重定向SDN流和实时分析网络流量在网络环境的可扩展性不足 | [58] |
| DDPG+MDP | 使用Iperf和Hping3工具生成 | 该方法采用DDPG算法为SDN网络的多个流量分析器设计了一种低侵入性的流量采样机制 | 尽管该方法旨在减少流量监控开销,但将采样流量发送到多个流量分析器仍然会产生额外的网络传输开销 | [63] |
| MADDPG+DNN | 模拟的流量 | 提出了一种新的MADDPG集成多代理框架,2个MARL代理在同一环境中相互协作,在较短的时间内完成网络优化任务。使用马尔可夫决策过程进一步对所提出框架的状态、行为和奖励进行数学建模,并随后集成到MADDPG算法中 | 随着代理数量的增加,每个代理的策略梯度估计的方差也会增大,这可能会降低算法的学习效率和稳定性 | [64] |
| GCN+DRL | NSL−KDD | 算法结合了GCN图神经网络和DRL强化学习方法来模拟提取最优空间序列特征 | 使用的深度学习算法缺乏对时间序列特征的提取 | [65] |
| ABO−DRL | 自定义数据集 | 提出了一种MMEDRL−ADM技术,该方法首先设计了基于非洲水牛优化算法的特征选择(ABO−FS),降低了计算复杂度,提高了检测率。然后采用多层集成深度强化学习技术,为了调整MEDRL技术的超参数值,提出了一种改进的IGOA优化算法,根据IGOA的超参数整定模型来检测SDN云环境中的DDoS攻击进行检测 | 超参数的优化结果可能受到初始值、数据集特性等多种因素的影响,导致优化结果的不稳定性 | [66] |
3.4 基于信息熵的SDN入侵检测方法
表5 基于信息熵的入侵检测方法 |
| 方法 | 数据集 | 运行机制 | 局限 | 文献 |
| 联合熵 | hping3工具生成 | 通过识别未受攻击时熵值的正态分布特性,对熵值所指示的正常与异常状态进行了更为细致的区分 | 如果数据收集不完整、不准确或存在偏差,计算出的熵值会偏离真实情况 | [68] |
| 联合熵 | 该方法首先利用信息熵的初始模块快速识别异常流量,然后使用基于SSAE+SVM架构的二次模块进行进一步确认 | 随着网络规模的扩大和复杂性的增加,该方法面临可扩展性不佳的问题 | [70] | |
| 联合熵 | Python脚本生成 | 通过分析网络流量特征,结合了包头特征和Renyi联合熵,有效提高了DDoS攻击流量的检测率 | 对于新型或变种的DDoS攻击,需要进行模型更新 | [75] |
| 联合熵 | Scapy工具生成 | 利用信息熵和对数能量熵的互补性,通过测量网络事件的随机性来检测攻击,有效解决上一方法对新型攻击检测率较低的问题 | 该方法主要关注网络事件的随机性,缺乏关于网络流量上下文信息的深入分析 | [72] |
| 联合熵 | 首先运用广义熵计算识别DDoS流量的特征来辅助SDN控制器处理恶意流量。然后使用Snort检测收集数据平面流量以降低开销进而分析基于熵的流量特征 | 方法准确性高度依赖于收集到的网络流量数据。当数据受到污染或伪造,会影响模型的训练和检测效果 | [76] | |
| 条件熵 | 通过均值、标准差及条件熵值变化来精确识别异常流量。对数据预处理后,随机样本处理即可快速获取熵值,实现高效攻击检测 | 即使结合了签名型和异常型方法,仍然可能无法覆盖所有类型的网络攻击 | [78] | |
| Renyi熵 | 该方法使用Renyi熵进行信息距离的度量,然后使用丢包技术缓解攻击 | Renyi熵在处理大规模网络流量时可扩展性较差 | [79] | |
| Renyi熵 | CICIDS2017数据集 | 使用了带有随机森林分类器模型的混合深度自动编码器,提高本地SDN中的入侵检测性能。模型被整合到一个新的自适应框架中缓解SDN中的攻击。该框架基于混合熵和机器学习共同构成防御 | 尽管框架被设计为自适应的,但在面对快速变化的网络环境和攻击策略时,其自适应速度和准确性可能受到限制 | [80] |
| 统计熵 | CICIDS2017、CICIDS2018、CICIDS2019 | 提出了一种将统计方法与机器学习功能相结合的混合方法,该方法的统计阶段采用基于熵的检测机制,而机器学习阶段采用聚类机制来分析活跃用户对系统熵的影响 | 熵的计算对数据分布非常敏感,如果数据存在噪声或异常值,可能会严重影响熵的准确计算,进而影响后续的分析结果 | [81] |
4 方法对比和评价指标
4.1 方法对比
表6 各类方法的总结和对比 |
| 名称 | 优势 | 劣势 | 主要算法 | 特点 | |
| 相同点 | 不同点 | ||||
| 机器学习 | 可以在一定程度上识别未知的攻击模式。并且通过训练数据可以适应不同的网络环境 | 模型的性能高度依赖于训练数据的数量和质量 | DT、NB、SVM、KNN、K−means、PCA | 基于数据驱动的方法,通过学习和分析网络流量数据来识别异常行为 | 在处理数据、特征提取和分类策略上有所不同 |
| 深度学习 | 能够自动从原始数据中提取高级特征,减少人工干预。在处理复杂和高维数据时,能够提供更准确的检测结果 | 训练深度学习模型需要大量的计算资源和时间。深度学习模型的决策过程相对复杂,难以解释其内部机制 | DNN、RNN、CNN、AE、GAN | 通过多层次非线性变换从数据中自动学习高级特征表示。能够自动学习数据的深层次特征 | 在网络架构、应用场景及学习机制上各具特点 |
| 强化学习 | 根据网络环境的变化自动调整检测策略 | 需要大量的训练样本来确保模型的稳定性和泛化能力 | Q−learning、DQN、PPO、MADDPG | 通过智能体与环境交互来学习优化策略 | 策略表示、更新方式以及是否依赖模型等方面存在差异 |
| 信息熵 | 快速计算并响应网络流量的变化 | 单独使用信息熵方法可能难以准确识别复杂的攻击模式 | 联合熵、统计熵、条件熵、Renyi熵 | 基于统计和信息论的方法,用于评估网络数据的复杂性和不确定性 | 在应用场景、计算公式和所度量的信息特性上有所差异 |
4.2 评价指标
表7 SDN混淆矩阵 |
| 预测值 | |||
| ATTACK | NORMAL | ||
| 真实值 | ATTACK | TP | FP |
| NORMAL | FN | TN | |




