摘 要:針對(duì)基于固定周期或特定事件調(diào)度的網(wǎng)絡(luò)遙測(cè)在流表溢出攻擊檢測(cè)中產(chǎn)生的數(shù)據(jù)冗余問(wèn)題,提出了一種面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法——F-Sense INT。F-Sense INT通過(guò)分析流表溢出攻擊流的特征,在數(shù)據(jù)平面針對(duì)性地收集對(duì)用于流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)狀態(tài)信息,在降低控制器資源及南向通道帶寬占用的前提下減少遙測(cè)報(bào)告量。實(shí)驗(yàn)結(jié)果表明,與原生OVS系統(tǒng)相比,在僅增加1.13%的交換機(jī)CPU占用率和4.18%的內(nèi)存占用率的情況下,F(xiàn)-Sense INT能有效地過(guò)濾網(wǎng)絡(luò)中的非流表溢出攻擊流,使遙測(cè)數(shù)據(jù)包數(shù)量減少。F-Sense INT顯著提升了面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)效率,同時(shí)也具備了較高的實(shí)用性。
關(guān)鍵詞:網(wǎng)絡(luò)遙測(cè); 流表溢出攻擊; 數(shù)據(jù)平面
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2024)11-038-3464-07
doi: 10.19734/j.issn.1001-3695.2024.03.0075
Network telemetry scheduling method for detecting flow table overflow attacks in SDN
Deng Di1,2a, 2b, Cui Yunhe1,2a, 2b?, Shen Guowei1,2a, 2b, Guo Chun1,2a, 2b, Chen Yi1,2a, 2b, Qian Qing3
(1. State Key Laboratory of Public Big Data, Guizhou University, Guiyang 550025, China; 2.a. Engineering Research Center of Text Computing amp; Cognitive Intelligence, Ministry of Education, b. Provincial Key Laboratory of Software Engineering and Information Security, College of Computer Science amp; Technology, Guizhou University,Guiyang 550025, China; 3. School of Information, Guizhou University of Finance amp; Economics,Guiyang 550025, China)
Abstract:This paper proposed a network telemetry scheduling method, F-Sense INT, aimed at solving the data redundancy issue caused by network telemetry scheduling based on fixed periods or specific event scheduling for detecting flow table overflow attacks. F-Sense INT analyzed the characteristics of flow table overflow attack traffic flows and collected network state information used for detecting such attacks. F-Sense INT decreased telemetry reporting volume while reducing the use of controller resources consumption and southbound channel bandwidth consumption. Experimental results demonstrate that F-Sense INT effectively filters out non-flow table overflow attack flows in the network. It reduces the quantity of telemetry data packets compared to the native OVS system, with only a 1.13% increase in switches CPU utilization and a 4.18% increase in memory usage. F-Sense INT significantly enhances network telemetry efficiency in the context of flow table overflow attack detection and offers high practicality.
Key words:network telemetry; flow table overflow attack; data plane
0 引言
軟件定義網(wǎng)絡(luò)(software-defined network,SDN)是一種全新的網(wǎng)絡(luò)架構(gòu),其控制和轉(zhuǎn)發(fā)相分離[1]的思想使其具有良好的可用性和可拓展性,因此被廣泛應(yīng)用于數(shù)據(jù)中心[2]、物聯(lián)網(wǎng)等領(lǐng)域。但SDN的新型網(wǎng)絡(luò)架構(gòu)也帶來(lái)了新的安全問(wèn)題,例如攻擊者能夠利用SDN流表項(xiàng)超時(shí)機(jī)制對(duì)SDN交換機(jī)發(fā)起流表溢出攻擊,使攻擊流表項(xiàng)在交換機(jī)中長(zhǎng)期存在,并逐漸占滿交換機(jī)流表項(xiàng)存儲(chǔ)空間,使交換機(jī)不可用。流表溢出攻擊檢測(cè)是防御流表溢出攻擊的重要技術(shù)手段。常用的流表溢出攻擊檢測(cè)方法包括基于統(tǒng)計(jì)分析的方法和基于機(jī)器學(xué)習(xí)的方法[3]等,其中基于機(jī)器學(xué)習(xí)的SDN攻擊檢測(cè)是目前最廣泛使用的方法[4]。流表溢出攻擊使用的檢測(cè)數(shù)據(jù)由數(shù)據(jù)采集方法獲得。SDN中流表溢出攻擊檢測(cè)所用的數(shù)據(jù)采集方法通?;贠penFlow協(xié)議[5]的SDN網(wǎng)絡(luò)測(cè)量或基于sFlow等技術(shù)的傳統(tǒng)網(wǎng)絡(luò)測(cè)量,受采集路徑或交換機(jī)性能限制,使用上述網(wǎng)絡(luò)測(cè)量技術(shù)采集的數(shù)據(jù)會(huì)犧牲一定精度或不能準(zhǔn)確反映網(wǎng)絡(luò)的性能[6]。作為一種新型的網(wǎng)絡(luò)測(cè)量技術(shù),網(wǎng)絡(luò)遙測(cè)(network telemetry)能夠獲取細(xì)粒度的網(wǎng)絡(luò)狀態(tài)信息。網(wǎng)絡(luò)遙測(cè)一般是指網(wǎng)絡(luò)設(shè)備自動(dòng)化遠(yuǎn)程收集多元異構(gòu)網(wǎng)絡(luò)狀態(tài)信息,并將其嵌入網(wǎng)絡(luò)數(shù)據(jù)包中進(jìn)行傳輸?shù)倪^(guò)程[7]。與傳統(tǒng)網(wǎng)絡(luò)測(cè)量技術(shù)相比,網(wǎng)絡(luò)遙測(cè)具有更好的靈活性、實(shí)時(shí)性以及更細(xì)粒度獲取網(wǎng)絡(luò)狀態(tài)的能力。
一些研究者設(shè)計(jì)了基于網(wǎng)絡(luò)遙測(cè)的網(wǎng)絡(luò)數(shù)據(jù)收集方法。Cao等人[8]通過(guò)帶內(nèi)網(wǎng)絡(luò)遙測(cè)(in-band network telemetry,INT)感知交換機(jī)的狀態(tài)信息,并基于交換機(jī)狀態(tài)信息檢測(cè)交換機(jī)是否受到了攻擊。上述方式中,網(wǎng)絡(luò)遙測(cè)僅用于收集定位異常設(shè)備的粗粒度信息,不能為流表溢出攻擊檢測(cè)提供詳細(xì)的網(wǎng)絡(luò)流數(shù)據(jù)。此外,為了更合理地調(diào)度網(wǎng)絡(luò)遙測(cè),有研究者提出了基于不同事件的網(wǎng)絡(luò)遙測(cè)調(diào)度方法。Wang等人[9]將網(wǎng)絡(luò)狀態(tài)分為可數(shù)網(wǎng)絡(luò)狀態(tài)和基于閾值網(wǎng)絡(luò)狀態(tài)兩類,狀態(tài)發(fā)生任何變化則意味著發(fā)生網(wǎng)絡(luò)事件的同時(shí)觸發(fā)網(wǎng)絡(luò)遙測(cè)。Castanheira等人[10]利用數(shù)據(jù)包計(jì)數(shù)的方式重點(diǎn)關(guān)注網(wǎng)絡(luò)中的大流,通過(guò)統(tǒng)計(jì)每條流的數(shù)據(jù)包個(gè)數(shù)并設(shè)置包數(shù)量閾值觸發(fā)網(wǎng)絡(luò)遙測(cè)調(diào)度。雖然流表溢出攻擊流和網(wǎng)絡(luò)大流都具有持續(xù)時(shí)間長(zhǎng)的特點(diǎn),但流表溢出攻擊流同時(shí)還具有數(shù)據(jù)包數(shù)量極少的特點(diǎn),故上述通過(guò)判斷網(wǎng)絡(luò)流數(shù)據(jù)包數(shù)量是否超過(guò)閾值進(jìn)行網(wǎng)絡(luò)遙測(cè)調(diào)度的方法不適用于流表溢出攻擊檢測(cè)場(chǎng)景。
綜上所述,在現(xiàn)有研究中,面向事件的網(wǎng)絡(luò)遙測(cè)調(diào)度方法是針對(duì)特定事件設(shè)計(jì)的,事件發(fā)生與流表溢出攻擊并無(wú)直接相關(guān)性,故在流表溢出攻擊檢測(cè)的應(yīng)用場(chǎng)景中,無(wú)法根據(jù)上述網(wǎng)絡(luò)遙測(cè)調(diào)度方法進(jìn)行特定的網(wǎng)絡(luò)數(shù)據(jù)收集。此外,Tang等人[11]提出了FTODefender。該方法以固定周期向交換機(jī)獲取流表信息,并從中提取四個(gè)特定的檢測(cè)特征,然后利用訓(xùn)練好的機(jī)器學(xué)習(xí)檢測(cè)算法,根據(jù)提取的特征計(jì)算檢測(cè)分?jǐn)?shù),以驗(yàn)證是否發(fā)生了流表溢出攻擊。上述方法以1 s為固定周期頻繁獲取所有交換機(jī)的流表信息,檢測(cè)時(shí)需要從大量冗余流量信息中提取網(wǎng)絡(luò)流特征,在很大程度上增加了控制器的額外開(kāi)銷。綜上,目前面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)狀態(tài)獲取方法尚存在如下問(wèn)題:
a)基于OpenFlow協(xié)議的SDN網(wǎng)絡(luò)測(cè)量技術(shù)靈活性不足,限制了其發(fā)現(xiàn)和分析網(wǎng)絡(luò)異常流量的能力[12]。基于sFlow等方法的網(wǎng)絡(luò)傳統(tǒng)測(cè)量技術(shù)需要對(duì)網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行采樣和傳輸,會(huì)產(chǎn)生大量的額外采樣數(shù)據(jù)包。
b)通過(guò)固定周期收集網(wǎng)絡(luò)信息主要依靠人工經(jīng)驗(yàn)確定周期,但是如何確定是一個(gè)難題,例如周期過(guò)大可能會(huì)遺漏大量網(wǎng)絡(luò)信息,周期過(guò)小導(dǎo)致網(wǎng)絡(luò)頻繁收集大量冗余信息,且需要消耗大量控制器資源。
c)基于事件的網(wǎng)絡(luò)遙測(cè)調(diào)度方法是針對(duì)特定事件的網(wǎng)絡(luò)狀態(tài)信息收集設(shè)計(jì)的,均不適用于流表溢出攻擊檢測(cè)方法中。目前尚沒(méi)有面向流表溢出攻擊檢測(cè)事件設(shè)計(jì)的網(wǎng)絡(luò)遙測(cè)調(diào)度方案,現(xiàn)有基于事件的網(wǎng)絡(luò)遙測(cè)調(diào)度方法只關(guān)注網(wǎng)絡(luò)流的一般特征,不考慮流表溢出攻擊的特定行為模式,因而其不適用于流表溢出攻擊檢測(cè)場(chǎng)景。
針對(duì)面向SDN網(wǎng)絡(luò)安全的數(shù)據(jù)采集方式所面臨的上述問(wèn)題,本文提出了一種面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法,其主要貢獻(xiàn)如下:a)基于流表溢出攻擊流的特點(diǎn),設(shè)計(jì)了面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法——F-Sense INT,同時(shí)在OpenvSwitch(OVS)中進(jìn)行了部署和實(shí)現(xiàn);b)F-Sense INT通過(guò)網(wǎng)絡(luò)遙測(cè)啟動(dòng)算法動(dòng)態(tài)調(diào)整網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件,能有針對(duì)性地收集流表溢出攻擊檢測(cè)需要的網(wǎng)絡(luò)狀態(tài)信息,剔除大量無(wú)關(guān)信息,減少網(wǎng)絡(luò)遙測(cè)報(bào)告量,且無(wú)須控制器參與。
1 相關(guān)工作
1.1 流表溢出攻擊檢測(cè)
網(wǎng)絡(luò)受到流表溢出攻擊時(shí),為了快速并準(zhǔn)確檢測(cè)到SDN中的惡意流,研究者通常使用基于統(tǒng)計(jì)的方法和基于機(jī)器學(xué)習(xí)的方法對(duì)流表溢出攻擊進(jìn)行檢測(cè)?;跈C(jī)器學(xué)習(xí)的檢測(cè)方法還可繼續(xù)細(xì)分為有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、強(qiáng)化學(xué)習(xí)和深度學(xué)習(xí)等[3],選擇合適的機(jī)器學(xué)習(xí)檢測(cè)方法可以提高對(duì)流表溢出攻擊的檢測(cè)準(zhǔn)確性。
基于統(tǒng)計(jì)的檢測(cè)方法通過(guò)驗(yàn)證網(wǎng)絡(luò)流量是否符合流量統(tǒng)計(jì)模型,以區(qū)分攻擊流量和正常流量。Rinaldi等人[13]引入了一種流量代理TACs。TACs通過(guò)OpenFlow監(jiān)控交換機(jī)獲取網(wǎng)絡(luò)流信息,使用KLD熵來(lái)對(duì)合法流和惡意流進(jìn)行分類?;跈C(jī)器學(xué)習(xí)的檢測(cè)方法通過(guò)獲取網(wǎng)絡(luò)流信息,并從中提取合適的數(shù)據(jù)特征用于模型訓(xùn)練和攻擊檢測(cè)。Tang等人[14,15]提出了SFTO-Guard和FTOP。前者對(duì)交換機(jī)流表中的規(guī)則號(hào)進(jìn)行實(shí)時(shí)監(jiān)控,通過(guò)設(shè)定閾值,使用命令通過(guò)協(xié)議接口收集交換機(jī)流表中包含的全部流規(guī)則信息,并設(shè)計(jì)流表溢出攻擊檢測(cè)算法進(jìn)行檢測(cè);后者采用預(yù)測(cè)器以固定間隔時(shí)間輪詢交換機(jī)的流條目的數(shù)量,并生成下一個(gè)時(shí)間戳計(jì)數(shù)的估計(jì)值,如果估計(jì)值超過(guò)閾值,則激活檢測(cè)器,當(dāng)檢測(cè)器被激活時(shí),輪詢交換機(jī)流表并計(jì)算特征,并將它們輸入到隨機(jī)森林分類器進(jìn)行流表溢出攻擊檢測(cè)。
上述檢測(cè)策略在實(shí)際過(guò)程中被證明是有效的,但同時(shí)也面臨一些挑戰(zhàn),例如基于統(tǒng)計(jì)的方法其目標(biāo)精度與需要處理的流量規(guī)模直接相關(guān),而機(jī)器學(xué)習(xí)方法缺乏高質(zhì)量和標(biāo)準(zhǔn)化的數(shù)據(jù)集、缺乏針對(duì)當(dāng)前數(shù)據(jù)集的適當(dāng)特征選擇方法等[16]。
1.2 面向事件的網(wǎng)絡(luò)遙測(cè)調(diào)度
網(wǎng)絡(luò)遙測(cè)代表性的技術(shù)是INT,它是由P4聯(lián)盟主導(dǎo)的一種數(shù)據(jù)平面帶內(nèi)網(wǎng)絡(luò)遙測(cè)思想。INT在推動(dòng)可編程數(shù)據(jù)平面(programmable data-plane,PDP)發(fā)展的同時(shí)提出了INT v2.1的基本實(shí)現(xiàn)思想[17]。Gulenko等人[18]提出了在OVS交換機(jī)上INT的原型實(shí)現(xiàn),并對(duì)所收集到的數(shù)據(jù)表達(dá)能力和整體性能開(kāi)銷進(jìn)行了評(píng)估。一些研究者則提出了基于事件的網(wǎng)絡(luò)遙測(cè)調(diào)度方法。Castanheira等人[10]重點(diǎn)關(guān)注大象流,在每個(gè)交換機(jī)上檢查每個(gè)數(shù)據(jù)包在所屬流中的包計(jì)數(shù)器是否超過(guò)設(shè)定閾值,若超過(guò)該閾值則通知控制器進(jìn)入收集過(guò)程,同時(shí)繼續(xù)計(jì)數(shù)數(shù)據(jù)包個(gè)數(shù)。上述方案采用先判斷、后收集的網(wǎng)絡(luò)遙測(cè)調(diào)度方式,能降低INT報(bào)告量,在一定程度上減輕了南向通道的帶寬壓力。Vestin等人[19]設(shè)計(jì)了一種可編程的事件檢測(cè)框架,事件檢測(cè)分為快速檢測(cè)和復(fù)雜的邏輯檢測(cè)。該框架在數(shù)據(jù)平面執(zhí)行事件檢測(cè)算法,若檢測(cè)到網(wǎng)絡(luò)事件則標(biāo)記該數(shù)據(jù)包,在INT宿節(jié)點(diǎn)(INT sink node)只報(bào)告檢測(cè)到事件的INT數(shù)據(jù),自動(dòng)丟棄其余INT報(bào)告。目前尚沒(méi)有面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法的相關(guān)研究。上述基于事件的網(wǎng)絡(luò)遙測(cè)調(diào)度會(huì)無(wú)差別地采集網(wǎng)絡(luò)流信息,均不考慮流表溢出攻擊流的明顯特征。因此上述調(diào)度方法只適用于本身特定的應(yīng)用場(chǎng)景,均不適用于流表溢出攻擊檢測(cè)方法中。
2 面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法
2.1 F-Sense INT工作流程
面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法——F-Sense INT的工作流程如圖1所示。該網(wǎng)絡(luò)遙測(cè)調(diào)度方法部署在SDN數(shù)據(jù)平面中,其主要工作流程主要分為如下四個(gè)步驟:
a)網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算。交換機(jī)啟動(dòng)完成后立即運(yùn)行網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法,該算法根據(jù)交換機(jī)中各流表項(xiàng)狀態(tài)計(jì)算網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件,將啟動(dòng)條件存儲(chǔ)在臨界區(qū)中,該臨界區(qū)通過(guò)該算法進(jìn)行動(dòng)態(tài)更新,并作為步驟c)的其中一個(gè)輸入。
b)數(shù)據(jù)平面流量信息獲取。數(shù)據(jù)包在數(shù)據(jù)平面進(jìn)行轉(zhuǎn)發(fā)時(shí),部署在交換機(jī)的網(wǎng)絡(luò)遙測(cè)調(diào)度機(jī)制能夠通過(guò)流表匹配機(jī)制獲取當(dāng)前匹配數(shù)據(jù)包所屬流的流表項(xiàng)信息,隨后F-Sense INT提取流表項(xiàng)信息并正常轉(zhuǎn)發(fā)該數(shù)據(jù)包,流表項(xiàng)信息也作為步驟c)的一個(gè)輸入。
c)網(wǎng)絡(luò)遙測(cè)啟動(dòng)和冗余數(shù)據(jù)過(guò)濾。在此步驟中,F(xiàn)-Sense INT啟動(dòng)線程池調(diào)度和網(wǎng)絡(luò)遙測(cè)冗余數(shù)據(jù)過(guò)濾算法啟動(dòng)網(wǎng)絡(luò)遙測(cè)并減少冗余網(wǎng)絡(luò)遙測(cè)報(bào)告,過(guò)濾的冗余網(wǎng)絡(luò)遙測(cè)流包括INT流以及重復(fù)網(wǎng)絡(luò)遙測(cè)流,非冗余流的流量信息和設(shè)備狀態(tài)信息將由F-Sense INT發(fā)送至步驟d)。
d)網(wǎng)絡(luò)遙測(cè)信息封裝和發(fā)送。該步驟先設(shè)置網(wǎng)絡(luò)遙測(cè)頭信息用于區(qū)分網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包和正常數(shù)據(jù)包;再將網(wǎng)絡(luò)遙測(cè)頭信息和需要網(wǎng)絡(luò)遙測(cè)的元數(shù)據(jù)依次封裝在UDP報(bào)文負(fù)載部分;最后設(shè)置網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包以太網(wǎng)包頭報(bào)文參數(shù),通過(guò)軟件交換機(jī)包轉(zhuǎn)發(fā)函數(shù)將網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包發(fā)送至網(wǎng)絡(luò)遙測(cè)服務(wù)器。
2.2 F-Sense INT
2.2.1 網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法
本文依據(jù)流表溢出攻擊流量的特點(diǎn)和空閑超時(shí)機(jī)制,設(shè)計(jì)了面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法。在網(wǎng)絡(luò)遭受流表溢出攻擊時(shí),該攻擊會(huì)探測(cè)流表項(xiàng)空閑超時(shí)大小,并設(shè)置略小于該空閑超時(shí)的攻擊周期,誘使交換機(jī)在其上安裝攻擊流表項(xiàng)并使攻擊流表項(xiàng)長(zhǎng)期存在,在此過(guò)程中,攻擊流的持續(xù)存在時(shí)間會(huì)不斷增加。而現(xiàn)有文獻(xiàn)表明:在數(shù)據(jù)中心環(huán)境下的正常流,其80%的正常流量持續(xù)時(shí)間少于10 s,只有不足0.1%的正常流量持續(xù)時(shí)間超過(guò)200 s[20,21]。即數(shù)據(jù)中心轉(zhuǎn)發(fā)正常流的情況下,大部分流持續(xù)時(shí)間比較短,只有少量的流持續(xù)時(shí)間比較長(zhǎng)。綜上,數(shù)據(jù)中心內(nèi)數(shù)量眾多、持續(xù)時(shí)間較短的網(wǎng)絡(luò)流不太可能是流表溢出攻擊流。因此,基于上述現(xiàn)象,F(xiàn)-Sense INT擬過(guò)濾上述不太可能是流表溢出攻擊的、數(shù)量眾多的、持續(xù)時(shí)間較短的網(wǎng)絡(luò)流。以此方式大幅降低需要進(jìn)行網(wǎng)絡(luò)遙測(cè)的非攻擊流的數(shù)量,進(jìn)而降低網(wǎng)絡(luò)遙測(cè)開(kāi)銷,節(jié)省網(wǎng)絡(luò)流狀態(tài)信息傳輸需消耗的網(wǎng)絡(luò)和計(jì)算資源。假定一條網(wǎng)絡(luò)流的總持續(xù)時(shí)間為ti,匹配該流的流表項(xiàng)空閑超時(shí)時(shí)間為tidl,在不考慮硬超時(shí)的情況下,假定上述流表項(xiàng)的總存在時(shí)間為Ta,則有
Ta=ti+tidl(1)
當(dāng)該流為正常流時(shí),tidl在流表項(xiàng)安裝時(shí)其值固定不變,則Ta值的大小取決于該條流在網(wǎng)絡(luò)中的持續(xù)時(shí)間ti。在數(shù)據(jù)中心中,絕大部分流為老鼠流,即ti值很小,若ti值小到可以被忽視,則此時(shí)Ta值接近于tidl,數(shù)據(jù)中心同時(shí)存在少量的大象流,此時(shí)這些大象流的ti值不能被忽視。
針對(duì)流表空閑超時(shí)機(jī)制下的流表溢出攻擊,設(shè)攻擊周期為T(1≤Tlt;ti),攻擊流量的持續(xù)時(shí)間ti和攻擊周期的輪次有關(guān),設(shè)攻擊輪次為n(n≥1),則攻擊流在交換機(jī)中的流表項(xiàng)總存在時(shí)間為
Ta=ti+tidl=(n-1)×T+tidl(2)
網(wǎng)絡(luò)遭受攻擊時(shí),其攻擊流在交換機(jī)中的流規(guī)則存在時(shí)間會(huì)隨著攻擊輪次的增加而線性增加。在低速的流表溢出攻擊環(huán)境下,持續(xù)時(shí)間較長(zhǎng)的流量極大可能為攻擊流,而持續(xù)時(shí)間很短的流量極大可能為正常流[22]。在數(shù)據(jù)平面,設(shè)總流量集合為G={α,β,ε},其中α表示老鼠流,β表示大象流,ε表示流表溢出攻擊流,單條流量可表示為
α={α1,α2,…,αh}β={β1,β2,…,βk}ε={ε1,ε2,…,εs}(3)
網(wǎng)絡(luò)在正常運(yùn)行的情況下,流量集合為G1={α,β},遭受流表溢出攻擊時(shí)流量集合為G2={α,β,ε},F(xiàn)-Sense INT的網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算目標(biāo)為需要遙測(cè)G2中的全部ε并盡可能過(guò)濾掉G1或G2中的α。為了實(shí)現(xiàn)上述目標(biāo),本文設(shè)計(jì)了網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法。該算法建立在交換機(jī)自身維護(hù)的一張Expirable表的基礎(chǔ)之上,Expirable存儲(chǔ)了當(dāng)前交換機(jī)中所有流表項(xiàng)的存在時(shí)間。同時(shí),交換機(jī)會(huì)實(shí)時(shí)輪詢?cè)摫硪詣h除空閑超時(shí)的流表項(xiàng)。網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法在交換機(jī)自身輪詢列表Expirable時(shí)記錄其中的流表項(xiàng)個(gè)數(shù)n以及每條流表項(xiàng)存在的時(shí)間Ti,計(jì)算得出流表項(xiàng)平均存在時(shí)間Tv:
Tv=∑ni=1Tin(4)
每次輪詢后,通過(guò)Tv更新網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件Tc。算法首先設(shè)置網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件的下限值:
Tmin=tidl+C(5)
網(wǎng)絡(luò)遙測(cè)啟動(dòng)的下限值Tmin即為在tidl的基礎(chǔ)上增加C秒,該值為常數(shù),且大小取決于定義老鼠流持續(xù)時(shí)間的最大值。若Tv≤Tmin,則Tc=Tmin,通過(guò)該條件能過(guò)濾掉數(shù)據(jù)平面中持續(xù)時(shí)間很小的老鼠流α;其次,算法限制其網(wǎng)絡(luò)遙測(cè)時(shí)間上限Tmax,即網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件不能無(wú)限增大,將上限值設(shè)置為x倍tidl。在SDN中,tidl取整數(shù)且最小值為1 s,則由不等式
tidl+C≤x×tidltidl≥1(tidl∈N)(6)
可得出x最小取值為x=C+1,在本文算法中設(shè)置其上限值為Tmax=(C+1)×tidl。當(dāng)Tv≥Tmax時(shí),Tc=Tmax。當(dāng)Tminlt;Tvlt;Tmax時(shí),
Tmid=η×Tr+(1-η)×Tv(7)
其中:Tr為上一輪次得出的網(wǎng)絡(luò)遙測(cè)啟動(dòng)時(shí)間;Tmid為本輪得出的網(wǎng)絡(luò)遙測(cè)啟動(dòng)時(shí)間;η為權(quán)重值。在該條件下意味著其網(wǎng)絡(luò)中的持續(xù)時(shí)間較長(zhǎng)的流開(kāi)始增多,其網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件會(huì)自適應(yīng)變化。綜上,Tc的動(dòng)態(tài)更新公式為
Tc=TminTv≤TminTmid
Tminlt;Tvlt;TmaxTmaxTv≥Tmax(8)
最后,算法每一輪輪詢后令Tr=Tc,同時(shí)將Tc更新到臨界區(qū),作為當(dāng)前網(wǎng)絡(luò)遙測(cè)啟動(dòng)和網(wǎng)絡(luò)遙測(cè)冗余數(shù)據(jù)過(guò)濾算法的一個(gè)輸入。
算法1 網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法
輸入:Expirable,Tr,tidl。
輸出:Tc。
a) for i←1 to N do Tall←Tall+Ti;n←n+1;end for。
//循環(huán)遍歷Expirable
b)Tv←Tall/n。 // 流表項(xiàng)的平均存在時(shí)間計(jì)算
c)if Tv≤tidl+C" then Tc←tidl+C;
else if tidl+Clt;Tvlt;(C+1)×tidl then
Tc←η×Tr+(1-η)×Tv;
else Tv≥(C+1)×tidl then Tc←(C+1)×tidl end if。
//網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算
d)Tr←Tc。 // 存儲(chǔ)本輪網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件
e) return Tc。 // 臨界區(qū)更新網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件
2.2.2 數(shù)據(jù)平面流量信息獲取
數(shù)據(jù)平面在數(shù)據(jù)轉(zhuǎn)發(fā)過(guò)程中,數(shù)據(jù)包通過(guò)匹配交換機(jī)中的流表項(xiàng)進(jìn)行轉(zhuǎn)發(fā)。數(shù)據(jù)包到達(dá)交換機(jī)后,交換機(jī)會(huì)提取數(shù)據(jù)包的源IP、目的IP、協(xié)議類型、源端口、目的端口等信息與流表中的流表項(xiàng)進(jìn)行匹配轉(zhuǎn)發(fā)。流表項(xiàng)除存儲(chǔ)上述流信息外,還存儲(chǔ)了流的最近使用時(shí)間和流創(chuàng)建時(shí)間等信息。流的詳細(xì)信息用集合Irule表示。當(dāng)數(shù)據(jù)包匹配到流表規(guī)則時(shí),可以從交換機(jī)中獲取當(dāng)前數(shù)據(jù)包所屬流的Irule,提取該條流信息Irule后立即轉(zhuǎn)發(fā)數(shù)據(jù)包,同時(shí)啟動(dòng)網(wǎng)絡(luò)遙測(cè)線程進(jìn)行網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)冗余數(shù)據(jù)過(guò)濾和網(wǎng)絡(luò)遙測(cè)啟動(dòng),Irule作為其網(wǎng)絡(luò)遙測(cè)啟動(dòng)和冗余數(shù)據(jù)過(guò)濾算法的一個(gè)輸入。
2.2.3 網(wǎng)絡(luò)遙測(cè)啟動(dòng)和冗余數(shù)據(jù)過(guò)濾
該步驟中,開(kāi)啟單獨(dú)網(wǎng)絡(luò)遙測(cè)線程進(jìn)行網(wǎng)絡(luò)遙測(cè)調(diào)度。數(shù)據(jù)包匹配流表項(xiàng)時(shí),會(huì)更新流規(guī)則Irule中的最近使用時(shí)間tmd,由此可獲取該條流在交換機(jī)中的持續(xù)存在時(shí)間Tas,計(jì)算公式為
Tas=tmd-tcreat(9)
其中:tcreat是交換機(jī)中流表項(xiàng)的創(chuàng)建時(shí)間。將Tas與Tc進(jìn)行比較。若Taslt;Tc,數(shù)據(jù)包不滿足網(wǎng)絡(luò)遙測(cè)條件,則不進(jìn)行網(wǎng)絡(luò)遙測(cè)且銷毀線程;當(dāng)Tas≥Tc時(shí),數(shù)據(jù)包滿足網(wǎng)絡(luò)遙測(cè)條件,且該條流后續(xù)到來(lái)的數(shù)據(jù)包也會(huì)啟動(dòng)網(wǎng)絡(luò)遙測(cè),若為滿足網(wǎng)絡(luò)遙測(cè)條件的同一條流數(shù)據(jù)包都進(jìn)行網(wǎng)絡(luò)遙測(cè),會(huì)使數(shù)據(jù)平面產(chǎn)生大量網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)冗余。為解決該問(wèn)題,本文設(shè)計(jì)了網(wǎng)絡(luò)遙測(cè)冗余數(shù)據(jù)過(guò)濾算法,該算法目的在于過(guò)濾冗余網(wǎng)絡(luò)遙測(cè)信息。該方法由INT數(shù)據(jù)包過(guò)濾以及重復(fù)遙測(cè)數(shù)據(jù)包過(guò)濾兩個(gè)子方法組成。INT數(shù)據(jù)包過(guò)濾用于過(guò)濾對(duì)INT數(shù)據(jù)包本身進(jìn)行遙測(cè)的情況;重復(fù)遙測(cè)數(shù)據(jù)包過(guò)濾用于避免重復(fù)遙測(cè)近期已遙測(cè)過(guò)的網(wǎng)絡(luò)流。INT數(shù)據(jù)包過(guò)濾根據(jù)INT包中特殊字段判斷其是否為INT數(shù)據(jù)包,銷毀對(duì)INT流本身進(jìn)行遙測(cè)的線程,避免對(duì)INT數(shù)據(jù)流進(jìn)行遙測(cè)。重復(fù)遙測(cè)數(shù)據(jù)包過(guò)濾在臨界區(qū)位置維護(hù)一張遙測(cè)流表—telTable,從輸入的當(dāng)前流規(guī)則Irule中提取唯一標(biāo)識(shí)網(wǎng)絡(luò)遙測(cè)流的五元組信息,并將其存儲(chǔ)在telTable中。一條流在telTable中僅有一條記錄,線程運(yùn)行時(shí)查詢滿足網(wǎng)絡(luò)遙測(cè)條件的流在telTable中是否存在,判斷該條流是否已經(jīng)啟動(dòng)過(guò)網(wǎng)絡(luò)遙測(cè),對(duì)于遙測(cè)過(guò)的流量不再進(jìn)行遙測(cè),對(duì)于近期未遙測(cè)的流,會(huì)啟動(dòng)網(wǎng)絡(luò)遙測(cè)函數(shù)進(jìn)行網(wǎng)絡(luò)遙測(cè)信息封裝與發(fā)送,同時(shí)將該條流標(biāo)識(shí)加入telTable中。
2.2.4 網(wǎng)絡(luò)遙測(cè)信息封裝與發(fā)送
F-Sense INT需要對(duì)滿足網(wǎng)絡(luò)遙測(cè)條件及通過(guò)冗余數(shù)據(jù)過(guò)濾的流進(jìn)行網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)封裝。將采集的遙測(cè)數(shù)據(jù)聚合為遙測(cè)元數(shù)據(jù),并將其與遙測(cè)頭一起按一定規(guī)則封裝成網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包。本文選取了8個(gè)數(shù)據(jù)作為遙測(cè)元數(shù)據(jù),其詳細(xì)字段如表2所示,并設(shè)計(jì)了專用的網(wǎng)絡(luò)遙測(cè)包結(jié)構(gòu)以封裝網(wǎng)絡(luò)遙測(cè)數(shù)據(jù),其數(shù)據(jù)包結(jié)構(gòu)如圖2所示。
如圖2所示,網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包由以太網(wǎng)報(bào)頭信息、遙測(cè)頭信息和元數(shù)據(jù)信息三個(gè)部分組成。以太網(wǎng)報(bào)頭信息是網(wǎng)絡(luò)數(shù)據(jù)包的常規(guī)以太網(wǎng)報(bào)文頭部;遙測(cè)頭信息主要由網(wǎng)絡(luò)遙測(cè)協(xié)議號(hào)INT Proto和網(wǎng)絡(luò)遙測(cè)標(biāo)識(shí)兩個(gè)字段組成;遙測(cè)元數(shù)據(jù)部分是當(dāng)前設(shè)備信息和需要遙測(cè)流的特征信息。F-Sense INT將遙測(cè)頭信息和元數(shù)據(jù)信息作為遙測(cè)數(shù)據(jù)負(fù)載依次嵌入遙測(cè)包,完成網(wǎng)絡(luò)遙測(cè)數(shù)據(jù)包封裝。F-Sense INT使用INT-XD模式收集遙測(cè)數(shù)據(jù),與INT-MD不同,INT-XD中每一臺(tái)交換機(jī)既是INT源節(jié)點(diǎn)也是INT宿節(jié)點(diǎn),且不存在INT轉(zhuǎn)發(fā)節(jié)點(diǎn)。F-Sense INT部署在數(shù)據(jù)平面每一臺(tái)交換機(jī)中,在不需要網(wǎng)絡(luò)遙測(cè)路徑編排的情況下可以實(shí)現(xiàn)監(jiān)控全網(wǎng)的網(wǎng)絡(luò)遙測(cè)。網(wǎng)絡(luò)中設(shè)置一臺(tái)網(wǎng)絡(luò)遙測(cè)服務(wù)器,當(dāng)網(wǎng)絡(luò)節(jié)點(diǎn)觸發(fā)網(wǎng)絡(luò)遙測(cè)時(shí)將遙測(cè)數(shù)據(jù)包中目的地址指向該服務(wù)器地址,從而收集該節(jié)點(diǎn)的遙測(cè)數(shù)據(jù)。
2.3 算法復(fù)雜度分析
F-Sense INT的時(shí)間復(fù)雜度主要是由2.2.1節(jié)的網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算和2.2.3節(jié)中的循環(huán)結(jié)構(gòu)決定的。網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算中除循環(huán)外,其余操作均為常數(shù)時(shí)間,其時(shí)間復(fù)雜度為常數(shù)。而循環(huán)的執(zhí)行次數(shù)取決于Expirable列表的長(zhǎng)度且循環(huán)內(nèi)部操作為常數(shù)時(shí)間。設(shè)Expirable的長(zhǎng)度為n,則網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法的時(shí)間復(fù)雜度為O(n)。同理,在2.2.3節(jié)中,時(shí)間復(fù)雜度取決于telTable的長(zhǎng)度,其時(shí)間復(fù)雜度為O(n),綜上,F(xiàn)-Sense INT的時(shí)間復(fù)雜度為O(n)+O(n)=O(n)。
F-Sense INT的空間復(fù)雜度計(jì)算中,算法1執(zhí)行期間不使用動(dòng)態(tài)分配內(nèi)存空間,也不使用額外的數(shù)組空間,故算法1空間復(fù)雜度取決于算法中定義的與輸入規(guī)模無(wú)關(guān)的變量,因此整體空間復(fù)雜度為O(1)。同理,在2.2.3節(jié)中,變量空間復(fù)雜度為O(1),數(shù)組空間取決于telTable的長(zhǎng)度,該數(shù)組空間大小與表數(shù)目成正比,故數(shù)組空間復(fù)雜度為O(n)。綜上,F(xiàn)-Sense INT的整體空間復(fù)雜度為O(1)+O(n)=O(n)。
2.4 F-Sense INT實(shí)現(xiàn)
F-Sense INT實(shí)現(xiàn)如圖3所示。本文在虛擬交換機(jī)OVS中編程實(shí)現(xiàn)了F-Sense INT,并將F-Sense INT分布式部署在交換機(jī)中收集網(wǎng)絡(luò)狀態(tài)信息。F-Sense INT主要基于OVS中的ovs-vswitchd、ofptoto-dpif、ofptoto-dpif-xlate和datapath 四個(gè)模塊協(xié)同運(yùn)行。
如圖3所示,ovs-vswitchd模塊在主函數(shù)中維護(hù)了OVS的守護(hù)進(jìn)程。本文在該模塊中拓展了網(wǎng)絡(luò)遙測(cè)線程池,并調(diào)用thpool_init()方法初始化16個(gè)最大線程數(shù)。網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算則部署在ofptoto-dpif模塊中。本文在該模塊中使用LIST_FOR_EACH_SAFE()方法不斷輪詢流規(guī)則列表Expirable,計(jì)算得出網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件。本文設(shè)計(jì)了telemetry_condition update()方法,負(fù)責(zé)將網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件更新到臨界區(qū)中。在ofptoto-dpif-xlate模塊中,網(wǎng)絡(luò)數(shù)據(jù)包隊(duì)列在xlate_actions()方法中進(jìn)行匹配,在此過(guò)程中網(wǎng)絡(luò)遙測(cè)通過(guò)數(shù)據(jù)包獲取數(shù)據(jù)平面流量狀態(tài),并從臨界區(qū)獲取網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件,當(dāng)流滿足遙測(cè)啟動(dòng)條件時(shí)由thool_add_work()方法向線程池申請(qǐng)啟動(dòng)網(wǎng)絡(luò)遙測(cè)線程,申請(qǐng)成功則執(zhí)行thread_is_telemetry()方法。在該方法中,F(xiàn)lowTuple_equals()方法負(fù)責(zé)網(wǎng)絡(luò)遙測(cè)冗余數(shù)據(jù)過(guò)濾,send_net_telemtry_data()方法則完成網(wǎng)絡(luò)遙測(cè)信息封裝和發(fā)送等功能,該方法將網(wǎng)絡(luò)遙測(cè)包提交至數(shù)據(jù)通路datapath模塊中,由該模塊將其轉(zhuǎn)發(fā)至網(wǎng)絡(luò)遙測(cè)服務(wù)器。
3 實(shí)驗(yàn)與分析
3.1 實(shí)驗(yàn)設(shè)置
本文用于搭建網(wǎng)絡(luò)遙測(cè)調(diào)度方法實(shí)驗(yàn)的軟硬件信息如表3所示。硬件方面,使用具有i7-7700處理器、內(nèi)存和硬盤大小分別是16 GB、512 GB的主機(jī)進(jìn)行測(cè)試。同時(shí),該主機(jī)安裝了Ubuntu 18.04操作系統(tǒng),利用Mininet搭建SDN網(wǎng)絡(luò)。網(wǎng)絡(luò)中包含一臺(tái)網(wǎng)絡(luò)遙測(cè)服務(wù)器,一臺(tái)RYU控制器,數(shù)據(jù)平面使用數(shù)據(jù)中心廣泛使用的胖樹結(jié)構(gòu)[23,24],其拓?fù)浣Y(jié)構(gòu)如圖4所示,其中包括20臺(tái)OVS交換機(jī)和32臺(tái)終端主機(jī),控制平面與數(shù)據(jù)平面使用OpenFlow 1.3協(xié)議通信。
實(shí)驗(yàn)場(chǎng)景設(shè)置為無(wú)攻擊場(chǎng)景和有攻擊場(chǎng)景。實(shí)驗(yàn)中的背景流量包括正常流量和攻擊流量?jī)蓚€(gè)大類,流量類別如表4所示。正常流量中含有老鼠流(非流表溢出攻擊的小流)588條,大象流(非流表溢出攻擊的大流)126條,比例為4∶1,其中,一條老鼠流中每個(gè)數(shù)據(jù)包有效載荷為100 Byte,發(fā)送速率為800 bit/s,流持續(xù)時(shí)間為5 s;一條大象流中每個(gè)數(shù)據(jù)包有效載荷為1 000 Byte,發(fā)送速率為2 400 bit/s,流持續(xù)時(shí)間為15 s,且流量服從正態(tài)分布[25]。攻擊流量包含84條攻擊流,每一條攻擊流單個(gè)周期內(nèi)僅發(fā)送1個(gè)數(shù)據(jù)包,有效載荷為100 Byte,發(fā)送速率為800 bit/s,正常流量發(fā)送60 s后,以9 s為攻擊周期持續(xù)發(fā)送攻擊流量。上述流量產(chǎn)生與此前團(tuán)隊(duì)在文獻(xiàn)[26]中工作類似,使用Nping發(fā)包工具產(chǎn)生流量。實(shí)驗(yàn)部署F-Sense INT時(shí),網(wǎng)絡(luò)遙測(cè)啟動(dòng)條件計(jì)算算法中式(5)中的常數(shù)C依據(jù)文獻(xiàn)[19]取值為10,式(7)中的權(quán)重值η取值為0.875。
實(shí)驗(yàn)分為三個(gè)部分:第一部分用于評(píng)估不同網(wǎng)絡(luò)遙測(cè)調(diào)度方法在無(wú)攻擊場(chǎng)景下的網(wǎng)絡(luò)遙測(cè)信息報(bào)告量;第二部分用于在有攻擊場(chǎng)景下評(píng)估不同網(wǎng)絡(luò)遙測(cè)調(diào)度方法的網(wǎng)絡(luò)攻擊流有效遙測(cè)比例;第三部分用于評(píng)估不同網(wǎng)絡(luò)遙測(cè)調(diào)度方法在交換機(jī)上的計(jì)算開(kāi)銷。具體地,在第一和二部分,將本文方法F-Sense INT與Per-NetInfo(文獻(xiàn)[11]中基于固定周期網(wǎng)絡(luò)遙測(cè)調(diào)度方法,該方法通過(guò)設(shè)置一個(gè)固定1 s的時(shí)間窗口定期向網(wǎng)絡(luò)交換機(jī)收集流量信息)、PerioSync(文獻(xiàn)[27]中基于固定周期網(wǎng)絡(luò)遙測(cè)調(diào)度方法,該方法通過(guò)設(shè)置一個(gè)固定5 s時(shí)間窗口定期向網(wǎng)絡(luò)交換機(jī)收集流量信息)和FlowStalker(文獻(xiàn)[10]中基于數(shù)據(jù)包閾值網(wǎng)絡(luò)遙測(cè)調(diào)度方法,該方法統(tǒng)計(jì)每一條流數(shù)據(jù)包個(gè)數(shù)并設(shè)置閾值,超過(guò)該閾值則觸發(fā)網(wǎng)絡(luò)交換機(jī)收集流量信息)進(jìn)行對(duì)比。第三部分實(shí)驗(yàn)獲取了實(shí)驗(yàn)平臺(tái)運(yùn)行仿真實(shí)驗(yàn)時(shí)的資源開(kāi)銷,對(duì)比在原生OVS、PerioSync、FlowStalker和F-Sense INT 四種不同數(shù)據(jù)平面下仿真實(shí)驗(yàn)平臺(tái)的計(jì)算開(kāi)銷。
3.2 結(jié)果與分析
1) 無(wú)攻擊場(chǎng)景下網(wǎng)絡(luò)遙測(cè)報(bào)告量對(duì)比
無(wú)攻擊場(chǎng)景下四種網(wǎng)絡(luò)遙測(cè)調(diào)度方法在相同時(shí)間內(nèi)INT報(bào)告量如圖5所示。結(jié)果顯示,Per-NetInfo和PerioSync的遙測(cè)報(bào)告量呈線性增長(zhǎng),實(shí)驗(yàn)過(guò)程中網(wǎng)絡(luò)遙測(cè)報(bào)告量分別達(dá)到23 140和10 818個(gè);FlowStalker在實(shí)驗(yàn)周期內(nèi)收集了618個(gè)遙測(cè)包,遙測(cè)報(bào)告量增長(zhǎng)緩慢;F-Sense INT在300 s之后幾乎不產(chǎn)生新的遙測(cè)數(shù)據(jù)包,實(shí)驗(yàn)周期內(nèi)總共收集168個(gè)遙測(cè)數(shù)據(jù)包。FlowStalker和F-Sense INT兩者與Per-NetInfo和PerioSync相比,遙測(cè)報(bào)告量存在量級(jí)差異。
在本次實(shí)驗(yàn)周期內(nèi),正常流量下遙測(cè)流總數(shù)如表5所示,Per-NetInfo收集到全部588條老鼠流和全部126條大象流;PerioSync收集到496條老鼠流和全部126條大象流;FlowStalker收集到350條老鼠流和全部126條大象流;F-Sense INT收集到0條老鼠流及全部126條大象流,老鼠流過(guò)濾率為100%。
2)攻擊場(chǎng)景下網(wǎng)絡(luò)攻擊流有效遙測(cè)比例對(duì)比
有攻擊場(chǎng)景下四種網(wǎng)絡(luò)遙測(cè)調(diào)度方法在相同遙測(cè)報(bào)告量下對(duì)網(wǎng)絡(luò)攻擊流的有效遙測(cè)比例對(duì)比如圖6所示。
由于Per-NetInfo和PerioSync與另外兩種網(wǎng)絡(luò)遙測(cè)調(diào)度方法收集的遙測(cè)報(bào)告量存在量級(jí)差異,本文在攻擊流量背景實(shí)驗(yàn)中以FlowStalker收集到的700個(gè)報(bào)告量為基準(zhǔn),驗(yàn)證在收集到相同INT個(gè)數(shù)時(shí)攻擊流量的收集比例。由圖6可知,周期網(wǎng)絡(luò)遙測(cè)Per-NetInfo和PerioSync在基準(zhǔn)值內(nèi)均未檢測(cè)到攻擊流量,原因在于攻擊流量還未發(fā)送時(shí),周期調(diào)度已經(jīng)開(kāi)始收集流表項(xiàng)中已有的正常流量,且這些INT報(bào)告都是冗余信息;隨著INT數(shù)量增多,F(xiàn)lowStalker最終只能收集到52.4%的攻擊流,近一半的INT報(bào)告是大象流的遙測(cè)信息;F-Sense INT對(duì)大象流和流表溢出攻擊流量均敏感,僅收集585個(gè)INT數(shù)據(jù)包即收集到100%的網(wǎng)絡(luò)攻擊流信息。有攻擊場(chǎng)景下四種網(wǎng)絡(luò)遙測(cè)調(diào)度方法在相同時(shí)間內(nèi)INT報(bào)告量如圖7所示。
引入攻擊流后,Per-NetInfo和PerioSync的遙測(cè)報(bào)告量依然隨時(shí)間線性增長(zhǎng),實(shí)驗(yàn)周期內(nèi)網(wǎng)絡(luò)遙測(cè)報(bào)告量分別達(dá)到23 244和12 522個(gè);FlowStalker在實(shí)驗(yàn)周期內(nèi)僅收集709個(gè)遙測(cè)包,與圖5相比,其遙測(cè)報(bào)告量相差不大且依然增長(zhǎng)緩慢;F-Sense INT則對(duì)攻擊流敏感,實(shí)驗(yàn)周期內(nèi)共收集1 389個(gè)遙測(cè)數(shù)據(jù)包。有攻擊場(chǎng)景下,Per-NetInfo和PerioSync與另外兩種網(wǎng)絡(luò)遙測(cè)調(diào)度方法依然存在量級(jí)差異,與圖5相比,不同之處在于F-Sense INT在該攻擊場(chǎng)景下,其遙測(cè)數(shù)據(jù)包數(shù)明顯增長(zhǎng)。
有攻擊場(chǎng)景下遙測(cè)流總數(shù)如表6所示,其中,Per-NetInfo收集到老鼠流588條、大象流126條、攻擊流84條,攻擊流遙測(cè)率為100%;PerioSync收集到老鼠流499條、大象流126條、攻擊流84條,攻擊流遙測(cè)率為100%;FlowStalker收集到老鼠流438條、大象流126條、攻擊流44條,攻擊流遙測(cè)率為52.4%;F-Sense INT收集到老鼠流0條、大象流126條、攻擊流84條,老鼠流過(guò)濾率為100%,攻擊流遙測(cè)率為100%。
由第一、二部分實(shí)驗(yàn)得出,四種網(wǎng)絡(luò)遙測(cè)調(diào)度模式均對(duì)大象流敏感,無(wú)論在無(wú)攻擊場(chǎng)景或有攻擊場(chǎng)景下均能收集到全部大象流;對(duì)于老鼠流,由于周期大小設(shè)置的不同,Per-NetInfo和PerioSync對(duì)老鼠流的敏感性也不同。例如周期值較小的Per-NetInfo頻繁收集網(wǎng)絡(luò)流信息,該方法能收集全部老鼠流信息,但同時(shí)造成的資源開(kāi)銷和冗余信息量也最大;周期值較大的PerioSync會(huì)收集大部分老鼠流信息,小部分老鼠流會(huì)在調(diào)度周期到來(lái)之前被流表超時(shí)機(jī)制刪除而不會(huì)被檢測(cè)到,PerioSync仍然造成較大資源開(kāi)銷和信息冗余。FlowStalker也收集了部分老鼠流,但F-Sense INT則完全將老鼠流過(guò)濾,大大降低了信息冗余和資源開(kāi)銷。對(duì)于攻擊流,Per-NetInfo和PerioSync兩者與F-Sense INT相比,雖然攻擊流遙測(cè)率均為100%,但Per-NetInfo和PerioSync收集了太多冗余信息,其遙測(cè)報(bào)告量分別是F-Sense INT的16.7倍和9倍。FlowStalker在本次實(shí)驗(yàn)周期內(nèi)只能檢測(cè)到52.4%攻擊流,原因是攻擊流與大象流雖然都有流持續(xù)時(shí)間長(zhǎng)的特性,但每條攻擊流在一個(gè)周期內(nèi)只發(fā)送極少個(gè)數(shù)據(jù)包,導(dǎo)致攻擊流數(shù)據(jù)包計(jì)數(shù)時(shí)難以達(dá)到數(shù)據(jù)包閾值條件,只有部分攻擊流被啟動(dòng)遙測(cè),故采用FlowStalker在該攻擊場(chǎng)景中并不適用。F-Sense INT能獲取每一個(gè)交換機(jī)中每一條持續(xù)時(shí)間長(zhǎng)的流從而啟動(dòng)遙測(cè),在圖7中,與FlowStalker相比,F(xiàn)-Sense INT要收集更多攻擊流的網(wǎng)絡(luò)遙測(cè)包,而與Per-NetInfo和PerioSync相比,F(xiàn)-Sense INT只需收集少量的INT數(shù)據(jù)包即可獲取到所有攻擊流量。綜上所述,在SDN流表溢出攻擊檢測(cè)環(huán)境下使用Per-NetInfo和PerioSync收集遙測(cè)信息,雖然可以收集到全部攻擊流量,但這種無(wú)差別的收集會(huì)導(dǎo)致大量的信息冗余;FlowStalker使用數(shù)據(jù)包閾值啟動(dòng)網(wǎng)絡(luò)遙測(cè),該調(diào)度方式對(duì)大象流有不錯(cuò)的效果,但并不適用于流表溢出攻擊檢測(cè)場(chǎng)景下的攻擊流信息收集。本文F-Sense INT滿足該攻擊場(chǎng)景下低冗余的攻擊流遙測(cè)信息收集。
3)計(jì)算開(kāi)銷對(duì)比
本部分使用對(duì)原生OVS、Per-NetInfo、PerioSync、FlowStalker和F-Sense INT 五種不同數(shù)據(jù)平面的實(shí)驗(yàn)仿真平臺(tái)的計(jì)算開(kāi)銷進(jìn)行測(cè)試,評(píng)估指標(biāo)包括CPU利用率和內(nèi)存占用率。使用第二部分實(shí)驗(yàn)中有攻擊場(chǎng)景的背景流量,分別在50~200條、間隔為50的5個(gè)大小不同的telTable系統(tǒng)中進(jìn)行實(shí)驗(yàn),運(yùn)行時(shí)每隔10 s進(jìn)行一次采樣獲取系統(tǒng)CUP利用率和內(nèi)存占用率,最后將所有采樣結(jié)果進(jìn)行處理得出系統(tǒng)運(yùn)行的性能指標(biāo)。
原生OVS、Per-NetInfo、PerioSync、FlowStalker和F-Sense INT的CPU利用率如圖8所示。圖8中,原生OVS的CPU平均利用率為4.08%,與之相比,引入另外四種網(wǎng)絡(luò)遙測(cè)調(diào)度方法后,CPU平均利用率都有所增加,但三者的計(jì)算開(kāi)銷相差較小。F-Sense INT的CPU開(kāi)銷僅增加0.33%~1.13%。原生OVS、Per-NetInfo、PerioSync、FlowStalker和F-Sense INT的內(nèi)存占用率如圖9所示。圖9中,原生OVS內(nèi)存平均占用率為37.48%,與之相比,引入三種網(wǎng)絡(luò)遙測(cè)模式后內(nèi)存平均占用率均有所增加,F(xiàn)-Sense INT的內(nèi)存開(kāi)銷僅增加1.56%~4.18%。
第三部分實(shí)驗(yàn)結(jié)果表明,Per-NetInfo和PerioSync相比,其內(nèi)存開(kāi)銷相差不大,但CPU利用率Per-NetInfo明顯更高,原因在于Per-NetInfo的周期間隔小,導(dǎo)致數(shù)據(jù)平面頻繁進(jìn)行數(shù)據(jù)采集。與原生OVS系統(tǒng)相比,引入四種網(wǎng)絡(luò)遙測(cè)調(diào)度方法后雖然增加了對(duì)應(yīng)開(kāi)銷,但其開(kāi)銷較小,本文提出的網(wǎng)絡(luò)遙測(cè)調(diào)度方法F-Sense INT滿足該攻擊場(chǎng)景下低開(kāi)銷的攻擊流遙測(cè)信息收集。
4 結(jié)束語(yǔ)
針對(duì)現(xiàn)有在SDN網(wǎng)絡(luò)安全中使用控制器和南向通道協(xié)議周期輪詢采集網(wǎng)絡(luò)數(shù)據(jù)造成控制器負(fù)載大、數(shù)據(jù)冗余多和現(xiàn)有的基于特定事件啟動(dòng)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法不適用于流表溢出攻擊檢測(cè)場(chǎng)景等問(wèn)題,本文提出了面向流表溢出攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)調(diào)度方法——F-Sense INT。實(shí)驗(yàn)結(jié)果表明,該方法將網(wǎng)絡(luò)遙測(cè)啟動(dòng)算法部署在全局網(wǎng)絡(luò)中,低開(kāi)銷、低冗余地收集網(wǎng)絡(luò)中大象流或攻擊流的網(wǎng)絡(luò)遙測(cè)信息,將遙測(cè)元數(shù)據(jù)直接發(fā)送至網(wǎng)絡(luò)遙測(cè)服務(wù)器,同時(shí)釋放了控制器負(fù)載并降低了南向通道壓力。由于本文的網(wǎng)絡(luò)遙測(cè)啟動(dòng)算法僅針對(duì)網(wǎng)絡(luò)中持續(xù)時(shí)間長(zhǎng)的流啟動(dòng)網(wǎng)絡(luò)遙測(cè),本文設(shè)計(jì)的網(wǎng)絡(luò)遙測(cè)調(diào)度主要適用于融合了網(wǎng)絡(luò)遙測(cè)的流表溢出攻擊檢測(cè)場(chǎng)景或需要感知網(wǎng)絡(luò)大象流的應(yīng)用場(chǎng)景,該方法在通用性方面存在不足。在未來(lái)的研究工作中,可以將該方法進(jìn)行拓展,考慮融合多種攻擊場(chǎng)景的網(wǎng)絡(luò)遙測(cè)調(diào)度方法,例如探索面向SDN飽和攻擊檢測(cè)的網(wǎng)絡(luò)遙測(cè)方法,搭建更加通用的網(wǎng)絡(luò)遙測(cè)調(diào)度平臺(tái),使之適用于更多的網(wǎng)絡(luò)安全應(yīng)用。
參考文獻(xiàn):
[1]Shu Zhaogang, Wang Jiafu, Li Di, et al. Security in software-defined networking: threats and countermeasures[J]. Mobile Networks and Applications, 2016, 21(5): 764-776.
[2]Sellami B, Hakiri A, Yahia S B,et al. Energy-aware task scheduling and offloading using deep reinforcement learning in SDN-enabled IoT network[J]. Computer Networks, 2022, 210: 108957.
[3]Singh M P, Bhandari A. New-flow based DDoS attacks in SDN: taxonomy, rationales, and research challenges[J]. Computer Communications, 2020, 154: 509-527.
[4]Cui Yunhe, Qian Qing, Guo Chun, et al. Towards DDoS detection mechanisms in software-defined networking[J]. Journal of Network and Computer Applications, 2021, 190: 103156.
[5]Lara A,Kolasani A, Ramamurthy B. Network innovation using openflow: a survey[J]. IEEE Communications Surveys amp; Tutorials, 2013, 16(1): 493-512.
[6]Tan Lizhuang, Su Wei, Zhang Wei, et al. In-band network telemetry: a survey[J]. Computer Networks, 2021, 186: 107763.
[7]郝炳煒, 崔允賀, 錢清, 等. 基于協(xié)同遷移進(jìn)化的自適應(yīng)網(wǎng)絡(luò)遙測(cè)路徑編排方法[J]. 計(jì)算機(jī)科學(xué), 2023, 50(7): 270-277. (Hao Bingwei, Cui Yunhe, Qian Qing. et al. APPOINTER: adaptive network telemetry path orchestration method based on cooperative migration evolution[J]. Computer Science, 2023, 50(7): 270-277.)
[8]Cao Yongyi, Jiang Hao, Deng Yuchuan, et al. Detecting and mitigating DDoS attacks in SDN using spatial-temporal graph convolutional network[J]. IEEE Trans on Dependable and Secure Computing, 2021, 19(6): 3855-3872.
[9]Wang Shieyuan, Chen Yoru, Li Junyi, et al. A bandwidth-efficient int system for tracking the rules matched by the packets of a flow [C]// Proc of IEEE Global Communications Conference. Pisca-taway, NJ: IEEE Press, 2019: 1-6.
[10]Castanheira L,Parizotto R, Schaeffer-Filho A E. FlowStalker: comprehensive traffic flow monitoring on the data plane using P4[C]// Proc of IEEE International Conference on Communications. Pisca-taway, NJ: IEEE Press, 2019: 1-6.
[11]Tang Dan, Zheng Zhiqing, Yin Chao, et al. FTODefender: an efficient flow table overflow attacks defending system in SDN[J]. Expert Systems with Applications, 2024, 237: 121460.
[12]Saxena M, Kumar R. A recent trends in software defined networking (SDN) security[C]//Proc of the 3rd International Conference on Computing for Sustainable Global Development. Piscataway, NJ: IEEE Press, 2016: 851-855.
[13]Rinaldi G, Adamsky F, Soua R,et al. Softwarization of SCADA: lightweight statistical SDN-agents for anomaly detection[C]// Proc of the 10th International Conference on Networks of the Future. Pisca-taway, NJ: IEEE Press, 2019: 102-109.
[14]Tang Dan, Zhang Dongshou, Qin Zheng, et al. SFTO-guard: real-time detection and mitigation system for slow-rate flow table overflow attacks[J]. Journal of Network and Computer Applications, 2023, 213: 103597.
[15]Tang Dan, Zheng Zhiqing, Li Keqin, et al. FTOP: an efficient flow table overflow preventing system for switches in SDN[J]. IEEE Trans on Network Science and Engineering, 2023, 11(3): 2524-2536.
[16]Valdovinos I A, Pérez-díaz J A, Choo K K R, et al. Emerging DDoS attack detection and mitigation strategies in software-defined networks: taxonomy, challenges and future directions[J]. Journal of Network and Computer Applications, 2021, 187: 103093.
[17]P4.org Applications Working Group. In-band network telemetry(INT)dataplane specification[EB/OL]. (2020-11-11). https://p4.org/p4-spec/docs/INT_v2_1.pdf.
[18]Gulenko A, Wallschl?ger M, Kao O. A practical implementation of in-band network telemetry in open vSwitch[C]// Proc of the 7th International Conference on Cloud Networking. Piscataway, NJ: IEEE Press, 2018: 1-4.
[19]Vestin J, Kassler A, Bhamare D,et al. Programmable event detection for in-band network telemetry[C]// Proc of the 8th International Confe-rence on Cloud Networking. Piscataway, NJ: IEEE Press 2019: 1-6.
[20]Kandula S, Sengupta S, Greenberg A,et al. The nature of data center traffic: measurements amp; analysis[C]// Proc of the 9th ACM SIGCOMM Conference on Internet Measurement. New York: ACM Press, 2009: 202-208.
[21]陳珂, 劉亞志, 王思晗. 基于流量特征的流調(diào)度策略研究綜述[J]. 計(jì)算機(jī)應(yīng)用研究, 2020, 37(10): 2889-2894. (Chen Ke, Liu Yazhi, Wang Sihan. Survey of research on flow scheduling strategies based on traffic characteristics[J]. Application Research of Computers, 2020, 37(10): 2889-2894.)
[22]Polat H, Turkoglu M, Polat O. Deep network approach with stacked sparse autoencoders in detection of DDoS attacks on SDN-based VANET[J]. IET Communications, 2020, 14(22): 4089-4100.
[23]Hu Siquan, Wang Xinyu, Shi Zhiguo. A software defined network scheme for intra datacenter network based on fat-tree topology[J]. Journal of Physics: Conference Series, 2021, 2025(1): 012106.
[24]農(nóng)黃武, 黃傳河, 黃曉鵬. 基于SDN的胖樹數(shù)據(jù)中心網(wǎng)絡(luò)的多路徑路由算法[J]. 計(jì)算機(jī)科學(xué), 2016, 43(6): 32-34, 76. (Nong Huangwu, Huang Chuanhe, Huang Xiaopeng. SDN-based multipath routing algorithm for fat-tree data center networks[J]. Computer Science, 2016, 43(6): 32-34, 76.)
[25]Peng Jincheng, Cui Yunhe, Qian Qing, et al. ADVICE: towards adaptive scheduling for data collection and DDoS detection in SDN[J]. Journal of Information Security and Applications, 2021, 63: 103017.
[26]Ran Longyan, CuiYunhe, Guo Chun, et al. Defending saturation attacks on SDN controller: a confusable instance analysis-based algorithm[J]. Computer Networks, 2022, 213: 109098.
[27]Ye Jin, Cheng Xiangyang, Zhu Jian,et al. A DDoS attack detection method based on SVM in software defined network[J]. Security and Communication Networks, 2018, 2018: 9804061.