system: [SYSTEM]

user: 3. 系统描述 3.1. 系统架构 图1是本文设计的SDN网络中DDoS攻击实时监测和防御系统框架，系统采用Floodlight作为SDN网络的控制器，利用RestAPI整合实现了DDoS实时监测与防御功能。在控制器内分别设计了数据检测和应急处理两个功能模块，同时基于机器学习建立了数据分析模块，各个模块通过文件系统进行的数据存储、读取和交互。 图1. 全局结构图 3.2. SDN数据收集 数据收集主要是利用在OpenFlow协议中控制器与交换机之间通过OFPT_STATS_REQUEST和OFPT_STATS_REPLY消息进行的数据交互(图2)，控制器向交换机获取的各类统计信息，包括Flow、Port、Queue和Table的统计信息。本文模拟所用FloodLight控制器中的数据收集通过Read-State消息实现数据传输，可以针对交换机中的每张流表、每个数据流、每个设备端口、每个转发队列进行维护，同时获取相关信息以供其他模块调用。 图2. 数据交互原理图 在具体实现方面，本文采用多线程的方式，将每个交换机的消息由一个线程获取，线程之间并发执行。首先开启Floodlight中的数据收集线程statisticsCollector，然后由SDN控制器向每个交换机发oftp_stats_request，当交换机返回oftp_stats_reply之后，开启数据预处理线程，加入线程池管理，最后处理结果写入文件。 3.3. 数据分析 为了研究SDN网络中DDoS攻击的特征，本文数据分析主要基于以下三个方面进行特征设计： A、世界经典入侵检测数据集KDD99++(2013年重制)中的传统网络数据特征设计方式； B、SDN网络中DDoS攻击引起的流表及流表项数据变化； C、FloodLight流表数据收集模块基础数据格式。 基于以上三种方式，DDoS的攻击特征维度超过30，然而，基于高维的数据特征，将为控制器带来巨大的数据收集和预处理的成本，此外在分类模型训练方面可也可能带来“维度灾难”以及过拟合的现象。 图3. 特征权值排序 利用梯度决策算法以及特征关联分析，可对于特征对于分类结果的影响权值进行计算和排序(图3)，最终，系统以两类粒度作为基本的特征维度标准，能够适用于不同的安全场景，在时延和精度方面各有优势，由此，本文设计了7元组快速检测模型和16元组精准检测模型。主要的特征设计结果如表1、表2。 Table 1 16 indexes of DDo No. FEATURE NAME ILLUSTRATION 1 DURATION Duration of flow entry 2 PROTOCOL_TYPE Protocol type of traffic 3 BYTES Bytes of traffic 4 LAND Source of flow entry 5 DROP Action of flow entry 6 SDIP_COUNT pks with same DIP for current flow entry 7 SDPORT_COUNT pks with same DPORT for current flow entry 8 SDIP_ DPORT_RATE rate of pks (with same DPORT same DIP) 9 SDIP_DDPORT_RATE rate of pks (with different DPORT same DIP) 10 DHOST_SRV_DHOST_RATE rate of pks (with same DPORT; different DIP) 11 FT_SDIP_COUNT In current flow table， pks that have the same DIP with current flow entry 12 FT_SDIP_SDPORT_COUNT In current flow table， pks with same DPORT and same DIP 13 FT_SDIP_SDPORT_RATE In current flow table， rate of pks (with same host same DPORT) 14 FT_SDIP_DDPORT_RATE In current flow table， rate of pks (with different host different DPORT) 15 FT_DDIP_DSPORT_RATE In current flow table， rate of pks(with different host different DPORT) 16 FT_SDIP_DDIFF_SIP_RATE In current flow table， rate of pks (with same host and DIP different DPORT) 表1. 16元组特征 Table 2 7 indexes of Ddo No. FEATURE NAME ILLUSTRATION 1 MPF Median of Packets per flowtable 2 MBF Median of Bytes per flowtable 3 MDF Median of Duration per flowtable 4 PPF Percentage of Pair-flows 5 CSF Count of Single-flows 6 CDSP Count of Different sPorts 7 CDDP Count of Different dPorts 表2. 7元组特征 梯度决策树分类算法(XGBoost)是本文数据分类的核心算法，也是近年来在天池、Kaggle等各大数据挖掘算法比赛中出类拔萃的高效算法。XGBoost [ 11 ] 是基于GBDT (Gradient Boosting Decision Tree梯度决策树)的优化分类模型，本质还是基于集成思想下的Boosting学习器，并采用梯度提升的方法进行每一轮的迭代最终组建出强学习器。这样的算法的运行往往要生成一定数量的树才能达到令我们满意的准确率，在SDN环境流表、流表项数据纷繁复杂的格式和数量的前提下，传统的分类算法如SVM、KNN可能带来极为复杂的运行成本或是不理想的准确率，且由于系统需要进行实时监测，重复的每运行一次都极有可能需要几千次的迭代运算，这将对我们的系统将造成巨大的计算瓶颈。梯度下降/上升作为XGBoost决策算法的核心，是通过沿梯度求导得到损失函数极小值以获得模型参数的常用方式，其在损失项和正则项上的多项优化，提升了算法所训练模型的准确率、效率及鲁棒性，能够适应与SDN控制器所收集到的多元组数据、多源数据的复杂性，并且达到较好的实时性和准确率。由图4的混淆矩阵可以发现，对于DDoS攻击检测最重要的两个指标误报、漏报，在16元组精准模型中的比例都很小，其综合的流表项数据预测准确率也达到了98.98%。 图4. 16元组XGBoost模型混淆矩阵 3.4. 攻击防御 如图5所示，Floodlight实现了Firewall模块，通过开放统一的北向RestAPI接口，帮助应用实现特定的流量过滤功能。其中主要接口方法包括：查询Firewall模块的开启状态，开启Firewall模块，根据要求添加新的过滤规则等。我们将firewall模块的指令配置方式进行封装，通过Web前端的方式实时监测的数据状态，以异常数据结果驱动安全策略的更新和下发：执行开启自动应急处理模块，上传16元组所反馈的细粒度异常节点信息，根据异常流表项数据中的相关附加字段，精确定位异常信息，自动下发相应规则，由控制器进行相应流表项下发，在靠近网络边缘的位置暂时闲置匹配该端口、协议等属性的数据转发，达到初步缓解DDoS攻击的效果，保证SDN交换机其他端口和其他网段的正常数据传输，防止攻击规模的升级。 图5. 攻击防御原理图