陳 曄
(常州紡織服裝職業(yè)技術(shù)學(xué)院信息服務(wù)中心,江蘇 常州 213164)
傳統(tǒng)網(wǎng)絡(luò)設(shè)備的控制和轉(zhuǎn)發(fā)是緊密結(jié)合的,一般是由同一臺(tái)設(shè)備實(shí)現(xiàn)控制和轉(zhuǎn)發(fā),軟件定義網(wǎng)絡(luò)(SDN)已經(jīng)成為一種新型的網(wǎng)絡(luò)架構(gòu),其核心內(nèi)容是控制平面與數(shù)據(jù)平面分離[1]。 SDN 的架構(gòu)如圖1所示,通常由3 層平面組成:數(shù)據(jù)平面、控制平面和應(yīng)用平面[2]。 其中,數(shù)據(jù)平面一般是指負(fù)責(zé)數(shù)據(jù)轉(zhuǎn)發(fā)的交換機(jī)。 控制平面包含一個(gè)或多個(gè)SDN 控制器,集中管理網(wǎng)絡(luò)中的轉(zhuǎn)發(fā)設(shè)備。 應(yīng)用平面主要是面向業(yè)務(wù)應(yīng)用API。 在交換機(jī)和控制器之間使用開(kāi)放的接口協(xié)議:OpenFlow 協(xié)議。 這種網(wǎng)絡(luò)集中管理方式不僅簡(jiǎn)化了網(wǎng)絡(luò)架構(gòu),而且使網(wǎng)絡(luò)具有靈活性、可編程性。 OpenFlow 協(xié)議主要解決轉(zhuǎn)發(fā)設(shè)備(如OpenFlow 交換機(jī))和控制器之間的通信問(wèn)題[3]。OpenFlow 交換機(jī)包含一個(gè)或多個(gè)由匹配規(guī)則、計(jì)數(shù)器和動(dòng)作字段組成的流表,再根據(jù)指定流量的匹配規(guī)則(控制信令)完成數(shù)據(jù)轉(zhuǎn)發(fā),如圖2 所示。

圖1 SDN 的基本架構(gòu)Fig. 1 The basic architecture of SDN

圖2 數(shù)據(jù)和控制分離Fig. 2 Separation of data and control
SDN 因?yàn)榧軜?gòu)原因,自身存在如劫持、中毒、配置錯(cuò)誤、拒絕服務(wù)和跳板攻擊等安全隱患。 跳板攻擊因?yàn)榉浅H菀讏?zhí)行,又很難被發(fā)現(xiàn),所以被黑客所青睞,黑客只要通過(guò)wireshark 之類的抓包工具,監(jiān)聽(tīng)網(wǎng)絡(luò)流量,很容易就能將控制器和OpenFlow 交換機(jī)之間的控制信令捕獲到。
OpenFlow 協(xié)議最初是在2008年作為斯坦福大學(xué)的一個(gè)研究項(xiàng)目部署在校園網(wǎng),研究OpenFlow 的目的是對(duì)傳統(tǒng)網(wǎng)絡(luò)進(jìn)行變革,通過(guò)一個(gè)或多個(gè)控制器對(duì)多個(gè)交換機(jī)進(jìn)行靈活控制,可按規(guī)則進(jìn)行端口轉(zhuǎn)發(fā),簡(jiǎn)化了網(wǎng)絡(luò)配置與管理,并通過(guò)可編程性實(shí)現(xiàn)網(wǎng)絡(luò)層及應(yīng)用層的創(chuàng)新。 目前OpenFlow 協(xié)議標(biāo)準(zhǔn)已經(jīng)發(fā)布到最新的1.5 版本,國(guó)內(nèi)很多數(shù)通廠商在使用更為穩(wěn)定的1.3 版本(如銳捷、華三),OpenFlow 協(xié)議所控制的交換機(jī)有2 種運(yùn)行模式:主動(dòng)模式和反應(yīng)模式。 其中,主動(dòng)模式是指,匹配規(guī)則在業(yè)務(wù)流量到達(dá)之前提前部署到交換機(jī),而反應(yīng)模式是指先有流量,在流量無(wú)匹配規(guī)則的情況下,交換器向控制器請(qǐng)求匹配規(guī)則再轉(zhuǎn)發(fā)數(shù)據(jù),所以整個(gè)過(guò)程控制器都參與其中,反應(yīng)模式更智能,這個(gè)過(guò)程被稱為“OpenFlow 轉(zhuǎn)發(fā)”。 圖3 用一系列的步驟說(shuō)明這個(gè)過(guò)程。 參照?qǐng)D3,對(duì)比流程步驟可詳述如下。

圖3 OpenFlow 協(xié)議轉(zhuǎn)發(fā)(反應(yīng)模式)Fig. 3 OpenFlow protocol forwarding (reactive mode)
(1)源主機(jī)“A”將數(shù)據(jù)包轉(zhuǎn)發(fā)到交換機(jī)(S1)的通信端口port1。
(2) 在收到數(shù)據(jù)包后,交換機(jī)在其流表中進(jìn)行查找該數(shù)據(jù)包的匹配規(guī)則。 如果數(shù)據(jù)包在交換機(jī)(S1) 中沒(méi)有匹配的流條目,那么根據(jù)默認(rèn),交換機(jī)通過(guò)OpenFlow(南向)接口把OF_PACKET_IN消息轉(zhuǎn)發(fā)給控制器。
(3) 控制器收到OF_PACKET_IN消息后,根據(jù)自定義程序,把匹配規(guī)則OF_PACKET_OUT消息發(fā)回給交換機(jī)(S1)。
(4)交換機(jī)(S1) 更新流表,將數(shù)據(jù)包從指定端口轉(zhuǎn)發(fā)到下一個(gè)節(jié)點(diǎn)交換機(jī)(S2)。
(5)同樣,交換機(jī)(S2) 收到數(shù)據(jù)包后,也會(huì)在流表中進(jìn)行查找,如果沒(méi)有找到匹配規(guī)則,也會(huì)把OF_PACKET_IN 消息轉(zhuǎn)發(fā)給控制器。
(6)控制器根據(jù)自定義程序向交換機(jī)(S2) 回復(fù)OF_PACKET_OUT消息。 交換機(jī)(S2) 更新流表后,按規(guī)則把數(shù)據(jù)從port2 送到port1。
(7)源主機(jī)“B”收到數(shù)據(jù)包。
(8)源主機(jī)“A”到“B”的數(shù)據(jù)交換過(guò)程都是由控制器和交換機(jī)完成,數(shù)據(jù)包前后各字段不做改變,除非是網(wǎng)絡(luò)發(fā)生拓?fù)渥兓瑢?duì)應(yīng)目的地址、MAC 發(fā)生變化。
反應(yīng)模式雖然更智能,但是缺點(diǎn)是OpenFlow 交換機(jī)及控制器極易受到DDoS 攻擊。 比如應(yīng)用層DDoS 攻擊中會(huì)使用大量欺騙性O(shè)F_PACKET_IN報(bào)文占用交換機(jī)和控制器之間的OpenFlow 通道的帶寬,降低回復(fù)效率,造成合法的規(guī)則匹配請(qǐng)求被拒絕。
本節(jié)對(duì)在SDN 架構(gòu)下的應(yīng)用層DDoS 攻擊進(jìn)行分類,并說(shuō)明了SDN 架構(gòu)的各種組件遭受攻擊的原因。 研究可知,分類則包括針對(duì)交換機(jī)漏洞的分類,以及按不同的攻擊類型進(jìn)行分類。
基于SDN 架構(gòu)的DDos 攻擊分類如圖4 所示。由圖4 可知,基于SDN 架構(gòu)的DDos 攻擊主要包括:攻擊數(shù)據(jù)平面的交換機(jī);攻擊交換機(jī)橫向數(shù)據(jù)通道;攻擊交換機(jī)的控制單元;攻擊交換機(jī)的流表;攻擊交換機(jī)的數(shù)據(jù)包緩沖器;攻擊南向OpenFlow 接口;攻擊SDN 控制器;攻擊控制器橫向接口;攻擊北向API 接口。

圖4 基于SDN 架構(gòu)的DDos 攻擊分類Fig. 4 Classification of DDos attacks based on SDN architecture
(1)控制單元過(guò)載。 交換機(jī)的轉(zhuǎn)發(fā)由控制器控制,這依賴于交換機(jī)控制單元。 因?yàn)榻粨Q機(jī)控制單元處理和轉(zhuǎn)發(fā)數(shù)據(jù)包的數(shù)量是有限的,當(dāng)DDoS 攻擊發(fā)送Packet_In消息的速度超過(guò)控制單元可以轉(zhuǎn)發(fā)到控制器的速度,那么就會(huì)造成控制單元過(guò)載。所以一旦泛洪,交換機(jī)的整體性能就會(huì)下降,甚至當(dāng)機(jī)。
(2)數(shù)據(jù)包緩沖區(qū)溢出。 當(dāng)交換機(jī)收到新數(shù)據(jù)包時(shí),就會(huì)加載到數(shù)據(jù)包緩沖區(qū),而后使用Packet_In message 將數(shù)據(jù)包的頭轉(zhuǎn)發(fā)給控制器。 在DDoS 攻擊下,緩沖區(qū)很快就會(huì)溢出,根據(jù)OpenFlow 協(xié)議,ofp_action_output 中的max_len 字段要轉(zhuǎn)換成OFPCML_NO_BUFFER,因此交換機(jī)必須將數(shù)據(jù)包完整地轉(zhuǎn)發(fā)給控制器,由此南向接口會(huì)產(chǎn)生大量的數(shù)據(jù)包,造成控制信道的帶寬和控制器的資源枯竭,使控制器的匹配規(guī)則無(wú)法及時(shí)送達(dá),造成交換機(jī)處理數(shù)據(jù)轉(zhuǎn)發(fā)時(shí)間增加,最后引起合法用戶丟包。
(3)流條目持續(xù)時(shí)間。 OpenFlow 交換機(jī)對(duì)每個(gè)流表都會(huì)設(shè)置流條目的超時(shí)機(jī)制、即流條目的在交換機(jī)內(nèi)的持續(xù)時(shí)間。當(dāng)idle_timeout非零時(shí),如果沒(méi)有收到流量,流條目會(huì)在指定的idle_timeout值之后過(guò)期; 當(dāng)hard_timeout為非零時(shí),流條目在指定hard_time out值之后過(guò)期,與入口的數(shù)據(jù)包是否到達(dá)無(wú)關(guān)。 有一種應(yīng)用層DDos 攻擊以最小的持續(xù)時(shí)間連續(xù)發(fā)送攻擊流量,造成交換機(jī)流條目超時(shí)溢出,合法的流表被覆蓋,使交換機(jī)數(shù)據(jù)包轉(zhuǎn)發(fā)失敗。
應(yīng)用層DDoS 攻擊主要分為2 種類型:帶寬飽和攻擊和資源飽和攻擊。 其中,帶寬飽和攻擊的目的是通過(guò)發(fā)送大量的欺騙性數(shù)據(jù)包,消耗其通道的帶寬能力,攻擊SDN 架構(gòu)的控制通道(南向API)、交換機(jī)橫向數(shù)據(jù)通道、控制器橫向通道和北向通道。另外,資源飽和攻擊消耗的是SDN 網(wǎng)絡(luò)設(shè)備的性能資源,如CPU、內(nèi)存。
(1)交換機(jī)的資源飽和度。 交換機(jī)是轉(zhuǎn)發(fā)設(shè)備,使用 OpenFlow 通道與控制器進(jìn)行通信。OpenFlow 交換機(jī)最多支持幾百到幾千個(gè)流條目。與控制器每秒可處理的流量請(qǐng)求數(shù)量相比,交換機(jī)的處理能力也是一個(gè)瓶頸。 DDoS 攻擊者可以利用流條目的反應(yīng)性規(guī)則安裝機(jī)制瞬間使交換機(jī)流條目達(dá)到峰值。
(2)控制器的資源飽和度。 因?yàn)榭刂破鞯陌幚砟芰h(yuǎn)高于交換機(jī),所以黑客往往優(yōu)先攻擊交換機(jī),當(dāng)交換機(jī)的數(shù)據(jù)包緩沖區(qū)溢出,因?yàn)镺FPCML_NO_BUFFER 的原因,同步攻擊控制器,就會(huì)大量消耗控制器的處理能力(CPU)和物理內(nèi)存(RAM)。當(dāng)主控制器的資源耗盡出現(xiàn)問(wèn)題,就會(huì)影響整個(gè)網(wǎng)絡(luò),造成高延遲和長(zhǎng)響應(yīng)時(shí)間,使合法的網(wǎng)絡(luò)服務(wù)完全退化和不可用。 現(xiàn)在成熟的SDN 網(wǎng)絡(luò)都會(huì)部署多個(gè)控制器做負(fù)載均衡,從而提高控制器的處理能力。
(3)控制通道飽和度。 南向API,也被稱為“控制通道”,用于連接交換機(jī)和控制器。 通過(guò)OpenFlow 協(xié)議在交換機(jī)和控制器之間提供了一個(gè)接口。 控制器實(shí)時(shí)與交換機(jī)保持連接,為交換機(jī)提供路由和控制網(wǎng)絡(luò)流量(Qos)的決策。 黑客可以利用OpenFlow 在數(shù)據(jù)平面和控制平面之間的這種可擴(kuò)展性缺陷,發(fā)起基于新流表的分布式拒絕服務(wù)攻擊,也就是通過(guò)發(fā)送大量的欺騙性IP 地址攻擊數(shù)據(jù)包,使交換機(jī)和控制器之間的OpenFlow 協(xié)議接口飽和,導(dǎo)致控制器無(wú)法控制交換機(jī)。
(4) 交換機(jī)橫向數(shù)據(jù)通道飽和度。 交換機(jī)橫向數(shù)據(jù)通道是指2 個(gè)以上OpenFlow 交換機(jī)之間的通信鏈接。 是在交換機(jī)之間轉(zhuǎn)發(fā)網(wǎng)絡(luò)流量,受到DDos攻擊后,交換機(jī)之間的一些數(shù)據(jù)通道或鏈接將被惡意數(shù)據(jù)包占據(jù),那么交換機(jī)之間將中斷連接。 一旦數(shù)據(jù)通道存在瓶頸,交換機(jī)根本無(wú)法轉(zhuǎn)發(fā)任何數(shù)據(jù)包,這種情況也會(huì)造成整個(gè)網(wǎng)絡(luò)的癱瘓。
(5)控制器橫向通道飽和度。 在SDN 架構(gòu)中,橫向通道指的多個(gè)控制器之間的接口通道。 當(dāng)單一的集中式控制器由于網(wǎng)絡(luò)交換機(jī)數(shù)量的增加而無(wú)法處理網(wǎng)絡(luò)流量時(shí),多個(gè)控制器通過(guò)橫向綁定的API接口提供負(fù)載均衡以保證整個(gè)網(wǎng)絡(luò)可靠性,DDos 可以從任何一個(gè)方向攻擊控制器,導(dǎo)致橫向通道的接口被大量進(jìn)入的攻擊數(shù)據(jù)包所占用,控制器如果無(wú)法及時(shí)解決負(fù)載問(wèn)題,也會(huì)造成整個(gè)網(wǎng)絡(luò)癱瘓。
(6)北向通道飽和度。 控制器依靠可編程應(yīng)用的北向API 來(lái)保證整個(gè)網(wǎng)絡(luò)系統(tǒng)靈活度。 軟件開(kāi)發(fā)人員使用這個(gè)接口對(duì)網(wǎng)絡(luò)控制實(shí)現(xiàn)可編程。 與南向API 不同,每個(gè)平臺(tái)都有自己的北向API,缺少統(tǒng)一的標(biāo)準(zhǔn)。 這種標(biāo)準(zhǔn)化的缺失也是一種安全威脅,所以黑客也可以通過(guò)北向API 針對(duì)控制器進(jìn)行攻擊,導(dǎo)致北向接口的擁堵。
SDN 網(wǎng)絡(luò)一直受到DDoS 攻擊,研究者掌握了許多檢測(cè)DDoS 攻擊的方法:
(1)一種基于時(shí)間特征的DDoS 攻擊檢測(cè)方法,提取攻擊的時(shí)間并記錄,使用時(shí)間特征快速有效地檢測(cè)和防御DDoS 攻擊。 有的黑客利用控制器處理新網(wǎng)絡(luò)數(shù)據(jù)包的反應(yīng)時(shí)間差,在這個(gè)時(shí)間窗口內(nèi)向控制器發(fā)送大量的請(qǐng)求,從而對(duì)SDN 控制器發(fā)起攻擊,利用這個(gè)特點(diǎn),可以迅速發(fā)現(xiàn)此類攻擊并定位到源IP 進(jìn)行有效阻斷,這個(gè)檢測(cè)方法的缺點(diǎn)是僅針對(duì)長(zhǎng)快頻的攻擊有效,對(duì)低速低頻攻擊無(wú)效。
(2)一種過(guò)濾請(qǐng)求的新方法可以通過(guò)OpenFlow主動(dòng)模式將所有的新數(shù)據(jù)包直接發(fā)送到安全網(wǎng)關(guān),而不是使用控制器來(lái)降低熵值(參見(jiàn)圖5),通過(guò)熵值法來(lái)檢測(cè)DDoS 攻擊,及時(shí)生成新規(guī)則更新交換機(jī)流表,交換機(jī)對(duì)符合規(guī)則的源目地址做丟包處理,這種方法必須抓取3 個(gè)特征值:協(xié)議、源IP 地址和目的IP 地址。 該檢測(cè)方法需要消耗時(shí)間來(lái)處理新的數(shù)據(jù)流,同時(shí)也會(huì)消耗系統(tǒng)性能。

圖5 主動(dòng)模式下的DDos 防御Fig. 5 DDos defence in active mode
(3)在OpenFlow 中采用基于熵的輕量級(jí)DDoS泛濫攻擊檢測(cè)方法,減少對(duì)控制器的流量收集負(fù)載,減輕控制器因?yàn)轭l繁的流量收集帶來(lái)性能消耗,使交換機(jī)更智能地主動(dòng)檢測(cè)交換機(jī)上的DDoS 攻擊,這種方式缺點(diǎn)就是會(huì)降低控制器和交換機(jī)之間的通信頻率。
Mininet 是一個(gè)基于Linux 的輕量級(jí)虛擬化工具,本文使用Mininet 快速創(chuàng)建SDN 網(wǎng)絡(luò)模型(見(jiàn)圖6),該軟件可以虛擬添加交換機(jī)、主機(jī)和控制器,也可以改變或修改網(wǎng)絡(luò)結(jié)構(gòu)和連接。 創(chuàng)建步驟如下:

圖6 簡(jiǎn)單SDN 網(wǎng)絡(luò)模型Fig. 6 Simple SDN network model
(1)將Mininet 安裝在Ubuntu Linux 上。
(2)命令行:
mn -topo single,3 -mac -switch ovsk -controller remote
創(chuàng)建3 個(gè)虛擬主機(jī),在內(nèi)核中創(chuàng)建1 個(gè)具有3個(gè)端口的OpenFlow 交換機(jī),為每個(gè)主機(jī)設(shè)置MAC和IP 地址,配置交換機(jī)連接到控制器。 控制器在本地運(yùn)行,與模擬器Mininet 所運(yùn)行的硬件相同。
(3)命令行:
dpctl dump-flows tcp:127.0.0.1:6634
連接到交換機(jī)并顯示安裝的流量表。
(4)命令行:
dpctl add-flow tcp:127.0.0.1:6634 in_port =0,actions=output:1
創(chuàng)建一個(gè)規(guī)則,所有到達(dá)交換機(jī)端口0 的數(shù)據(jù)包將被轉(zhuǎn)發(fā)到端口1。
(5)安裝開(kāi)源的Floodlight OpenFlow 控制器。
(6)安裝網(wǎng)絡(luò)分析軟件sFlowRT,該軟件內(nèi)嵌在OpenFlow 控制器中,可以實(shí)時(shí)監(jiān)控OpenFlow 交換機(jī)和控制器之間的通信流量。
(7)安裝sFlow-RT 分析器的命令:
sudo mn-controller=remote,ip =172.0.0.1,port =6653-topo =single,3。
(8)連接OpenFlow 到sFlow-RT 分析器的命令:
sudo ovs-vsctl--id =@sflow create sflow agent =eth0 target = 172.0.0.1:6643,ampling =10 polling =20--set bridge s1 sflow =@ sflow,設(shè)置完成后,手動(dòng)啟動(dòng)sFlow 分析器,通過(guò)./sFlow-rt/start 命令收集的數(shù)據(jù)樣本,同時(shí)設(shè)置訪問(wèn)地址:http:/ /localhost:8080/ui/pages/index.html。
(9)安裝WEKA 機(jī)器學(xué)習(xí)軟件。
(10)測(cè)試期間控制器不可人為斷開(kāi),否則測(cè)試將失敗。
本次測(cè)試使用了2 臺(tái)主機(jī)、2 臺(tái)OpenFlow 交換機(jī)和1 個(gè)控制器。 WEKA 是一款開(kāi)源的機(jī)器學(xué)習(xí)以及數(shù)據(jù)挖掘軟件,該軟件可以在同一數(shù)據(jù)集上建立多個(gè)機(jī)器學(xué)習(xí)模型,本文使用WEKA 機(jī)器學(xué)習(xí)軟件建立模型并測(cè)試模型的準(zhǔn)確性,同時(shí)對(duì)正常和Dos攻擊的數(shù)據(jù)建立數(shù)據(jù)集,包括TCP、UDP、ICMP、ARP、IPv4 和SSH 等6 種協(xié)議。 在DDos 攻擊期間,1 臺(tái)主機(jī)作為受害者,1 臺(tái)主機(jī)作為攻擊者,主動(dòng)采集每個(gè)交換機(jī)及控制器上的流量情況。 正常情況下控制器上數(shù)據(jù)流量如圖7 所示,DDos 環(huán)境下控制器數(shù)據(jù)流量如圖8 所示。

圖7 正常情況下控制器上數(shù)據(jù)流量Fig. 7 Data traffic on the controller under normal conditions

圖8 DDos 環(huán)境下控制器數(shù)據(jù)流量Fig. 8 Controller data traffic in the DDos environment
由于數(shù)據(jù)集實(shí)例不是很大,為了減少偏差,在數(shù)據(jù)集中加入了25% 的噪聲數(shù)據(jù)。 本文使用AdaBoosting 機(jī)器學(xué)習(xí)算法,將決策樹(shù)作為一個(gè)弱分類器來(lái)建立網(wǎng)絡(luò)的分類器模型。
為了降低復(fù)雜性,減少了特征的數(shù)量,使用遞歸特征消除(RFE)進(jìn)行遞歸刪除特征,并在剩余的特征上構(gòu)建模型。 RFE 根據(jù)數(shù)據(jù)集中所有特征在實(shí)例分類中對(duì)重要特征進(jìn)行排序。 RFE 算法需要2 個(gè)參數(shù),一是要保留的特征數(shù)量,二是在評(píng)估特征重要性的過(guò)程中要使用的模型,經(jīng)測(cè)試選擇的特征數(shù)量最終確定為7 個(gè),分別是:目的地端口;Bwd 包長(zhǎng)度平均值;Bwd 包長(zhǎng)度標(biāo)準(zhǔn);Bwd 包/s;包長(zhǎng)度平均值;最大包長(zhǎng)度;平均Bwd 段大小。
(1)AdaBoost 是自適應(yīng)模型,這個(gè)模型從弱分類器中自我學(xué)習(xí),性能隨著后續(xù)的分類器而提高。分類方程為:
(2)決策樹(shù)評(píng)估了特征的重要性和準(zhǔn)確性。 推得的公式為:
(3)多層感知器模型。 模型公式可寫為:
模型建立后,該模型與SDN 控制器相連接,控制器只轉(zhuǎn)發(fā)那些被分類器模型過(guò)濾的流量,涉及2次網(wǎng)絡(luò)流量過(guò)濾,第一次由SDN 控制器本身執(zhí)行,利用自定義網(wǎng)絡(luò)配置過(guò)濾掉普通的攻擊流量;第二次,由SDN 控制器通過(guò)機(jī)器學(xué)習(xí)分類器再次過(guò)濾掉攻擊流量,該分類器只通過(guò)機(jī)器學(xué)習(xí)算法中被標(biāo)記為良性的數(shù)據(jù)流量。 WEKA 數(shù)據(jù)集概述見(jiàn)圖9。

圖9 WEKA 數(shù)據(jù)集概述Fig. 9 WEKA dataset overview
(1)真陽(yáng)性(TP):攻擊時(shí)產(chǎn)生的異常數(shù)據(jù);假陽(yáng)性(FP):將正常數(shù)據(jù)分類為攻擊;假陰性(FN):異常數(shù)據(jù)被分類為正常數(shù)據(jù);真陰性(TN):被分類為正常的數(shù)據(jù)。
(2)指標(biāo)定義及計(jì)算公式
①精度。 是指正確分類為攻擊的數(shù)據(jù)與分類為攻擊的總數(shù)據(jù)之比。 具體數(shù)學(xué)公式為:
②召回。 是指正確分類數(shù)據(jù)的比率。 具體數(shù)學(xué)公式為:
③F -衡量。 是指精確度和召回率的加權(quán)平均值。 具體數(shù)學(xué)公式為:
(3)對(duì)多個(gè)機(jī)器學(xué)習(xí)模型計(jì)算得出結(jié)果進(jìn)行比較,AdaBoost 精度相對(duì)更準(zhǔn)確些,多層感知器模型,屬于人工神經(jīng)網(wǎng)絡(luò),但是執(zhí)行效率非常低,見(jiàn)表1。

表1 不同機(jī)器學(xué)習(xí)技術(shù)的性能指標(biāo)分析Tab. 1 Analysis of performance metrics of different machine learning techniques
綜上所述,SDN 將控制平面與數(shù)據(jù)平面分離,使管理更加便捷,同時(shí)實(shí)現(xiàn)可編程[4-6]。 盡管國(guó)內(nèi)外學(xué)者在SDN 環(huán)境下針對(duì)DDoS 攻擊方面的研究有了很多成果,但DDoS 攻擊面仍在擴(kuò)大,而且技術(shù)更新迭代很快。 以下是SDN 環(huán)境下檢測(cè)DDoS 攻擊所面臨一些實(shí)際困難。
大多數(shù)DDoS 攻擊檢測(cè)技術(shù)需要從OpenFlow交換機(jī)中收集數(shù)據(jù)構(gòu)建規(guī)則,例如提取數(shù)據(jù)報(bào)頭的特征來(lái)檢測(cè)異常行為的方法。 但是在低速率DDoS攻擊時(shí),從流量中收集統(tǒng)計(jì)數(shù)據(jù)就很困難,另外采用負(fù)載均衡技術(shù)用多個(gè)分布式交換機(jī)來(lái)收集數(shù)據(jù),所收集的數(shù)據(jù)精度達(dá)不到要求,同時(shí)收集難度也會(huì)加大。
DDoS 攻擊行為的多樣化使SDN 環(huán)境中的異常流量檢測(cè)變得復(fù)雜。 因此,許多算法已經(jīng)轉(zhuǎn)向人工神經(jīng)網(wǎng)絡(luò)、貝葉斯分類法、模糊邏輯等來(lái)檢測(cè)DDoS攻擊行為。 但是沒(méi)有一種算法能夠真正應(yīng)對(duì)所有DDoS 攻擊。
及時(shí)響應(yīng)是SDN 控制器的關(guān)鍵,被DDoS 攻擊后,控制器要處理大量的流量,這會(huì)耗盡其性能,從而削弱響應(yīng)合法用戶請(qǐng)求的能力。 現(xiàn)有的DDoS 攻擊檢測(cè)方法存在許多問(wèn)題,包括控制器在短時(shí)間內(nèi)處理大量入口數(shù)據(jù)包的響應(yīng)速度;無(wú)法檢測(cè)低速率的DDoS 攻擊;高網(wǎng)絡(luò)帶寬的消耗;無(wú)效的數(shù)據(jù)包帶來(lái)的處理負(fù)擔(dān)等都會(huì)導(dǎo)致攻擊檢測(cè)的延遲或無(wú)效。
本文使用Adaboost 和決策樹(shù)作為弱分類器,發(fā)現(xiàn)數(shù)據(jù)集的DDoS 攻擊檢測(cè)準(zhǔn)確率可以達(dá)到94%。用機(jī)器學(xué)習(xí)模型的優(yōu)點(diǎn)是SDN 控制器通過(guò)自定義規(guī)則,利用分類器的輸出,可以有效阻斷那些特定的攻擊類型,在一定程度上增加了安全性。 但是隨著DDoS 攻擊的復(fù)雜程度不斷提高,尤其針對(duì)數(shù)據(jù)中心和網(wǎng)絡(luò)基礎(chǔ)設(shè)施的攻擊級(jí)別不斷提高,基于應(yīng)用層的DDoS 攻擊給SDN 架構(gòu)帶來(lái)了許多安全挑戰(zhàn)和威脅,研究人員希望使用一種檢測(cè)防御方法來(lái)解決所有的DDos 的攻擊問(wèn)題顯然是不可能的。 個(gè)人認(rèn)為SDN 中集中控制的特性應(yīng)該是DDoS 攻擊的核心,而分布式控制器的設(shè)計(jì)可以提供更好的負(fù)載分配、處理能力和可靠性,最大限度地降低因?yàn)閱蝹€(gè)控制器的通信故障而造成整網(wǎng)癱瘓的風(fēng)險(xiǎn),同時(shí)機(jī)器學(xué)習(xí)在未來(lái)的網(wǎng)絡(luò)應(yīng)用中具有很大的研究潛力,如何提高檢測(cè)精度,使檢測(cè)過(guò)程完全自動(dòng)化,減少人為干預(yù)也是未來(lái)的研究方向。