本文摘要:摘 要 由于軟件定義網(wǎng)絡(luò)(SDN)的數(shù)據(jù)平面只負(fù)責(zé)流量轉(zhuǎn)發(fā),并不具備識(shí)別流規(guī)則是否正確的功能,使得攻擊者可通過(guò)惡意向數(shù)據(jù)平面注入錯(cuò)誤流規(guī)則,造成網(wǎng)絡(luò)擁塞和信息泄露,甚至是網(wǎng)絡(luò)癱瘓等嚴(yán)重后果.鑒于區(qū)塊鏈的可追溯、不可篡改等特性,提出了一個(gè)在控制平面運(yùn)行的基于
摘 要 由于軟件定義網(wǎng)絡(luò)(SDN)的數(shù)據(jù)平面只負(fù)責(zé)流量轉(zhuǎn)發(fā),并不具備識(shí)別流規(guī)則是否正確的功能,使得攻擊者可通過(guò)惡意向數(shù)據(jù)平面注入錯(cuò)誤流規(guī)則,造成網(wǎng)絡(luò)擁塞和信息泄露,甚至是網(wǎng)絡(luò)癱瘓等嚴(yán)重后果.鑒于區(qū)塊鏈的可追溯、不可篡改等特性,提出了一個(gè)在控制平面運(yùn)行的基于區(qū)塊鏈的錯(cuò)誤流規(guī)則檢測(cè)(FFRD-BC)機(jī)制,當(dāng)控制器向數(shù)據(jù)平面下發(fā)流規(guī)則的同時(shí)將其存儲(chǔ)到區(qū)塊鏈中,通過(guò)隨機(jī)選擇數(shù)據(jù)平面中的流規(guī)則并驗(yàn)證其是否存在于區(qū)塊鏈中,來(lái)檢測(cè)出數(shù)據(jù)平面中第三方行動(dòng)者注入的錯(cuò)誤流規(guī)則.其次,在FFRD-BC的流規(guī)則檢測(cè)階段,引入基于實(shí)用拜占庭容錯(cuò)共識(shí)算法的投票驗(yàn)證策略,避免由于區(qū)塊鏈節(jié)點(diǎn)一致性不穩(wěn)定而導(dǎo)致的誤檢情況.實(shí)驗(yàn)結(jié)果表明:隨著檢測(cè)次數(shù)的增加,提出的FFRD-BC機(jī)制能夠有效檢測(cè)數(shù)據(jù)平面中第三方行動(dòng)者注入的錯(cuò)誤流規(guī)則,并且與自主驗(yàn)證策略相比有效降低了誤檢率.
關(guān)鍵詞 軟件定義網(wǎng)絡(luò);區(qū)塊鏈;流規(guī)則檢測(cè);共識(shí)算法
軟件定義網(wǎng)絡(luò)(Software-Defined Networking,SDN)是一種新型的網(wǎng)絡(luò)體系架構(gòu),具有轉(zhuǎn)控分離、集中控制的特點(diǎn) .它的核心思想是將數(shù)據(jù)平面和控制平面解耦,通過(guò)控制平面下發(fā)流規(guī)則,從而實(shí)現(xiàn)靈活高效地網(wǎng)絡(luò)流量控制[1-2].隨著技術(shù)的發(fā)展及服務(wù)需求的增加,網(wǎng)絡(luò)攻擊更加頻繁,具有隱蔽性、持續(xù)性的網(wǎng)絡(luò)威脅增多[3].但由于SDN數(shù)據(jù)平面中的轉(zhuǎn)發(fā)設(shè)備只負(fù)責(zé)轉(zhuǎn)發(fā)操作,并不具備識(shí)別流規(guī)則是否正確的功能,如果交換機(jī)按照第三方行動(dòng)者下發(fā)的錯(cuò)誤流規(guī)則轉(zhuǎn)發(fā)數(shù)據(jù)流,將造成網(wǎng)絡(luò)擁塞、信息泄露、網(wǎng)絡(luò)癱瘓等嚴(yán)重后果.因此,保證SDN數(shù)據(jù)平面接收到的流規(guī)則的正確性對(duì)SDN網(wǎng)絡(luò)來(lái)說(shuō)至關(guān)重要[4-5].
區(qū)塊鏈技術(shù)將交易信息打包為區(qū)塊,通過(guò)數(shù)字簽名實(shí)現(xiàn)數(shù)據(jù)的安全傳輸、共識(shí)機(jī)制保證數(shù)據(jù)的一致性、哈希函數(shù)實(shí)現(xiàn)數(shù)據(jù)的可追溯與不可篡改,來(lái)解決數(shù)據(jù)的可信問(wèn)題,為檢測(cè)SDN數(shù)據(jù)平面中第三方行動(dòng)者下發(fā)的錯(cuò)誤流規(guī)則提供了新的解決方案[6-8].然而,在實(shí)際應(yīng)用中,區(qū)塊鏈節(jié)點(diǎn)通過(guò)共識(shí)機(jī)制完成一致性的效果受網(wǎng)絡(luò)影響嚴(yán)重 .當(dāng)網(wǎng)絡(luò)同步性較差時(shí),即使網(wǎng)絡(luò)中沒(méi)有惡意節(jié)點(diǎn)進(jìn)行主動(dòng)攻擊,共識(shí)機(jī)制也無(wú)法穩(wěn)定保持強(qiáng)一致性[9].使用區(qū)塊鏈技術(shù)解決涉及流規(guī)則的 SDN 安全問(wèn)題,主要是將區(qū)塊鏈作為一個(gè)分布式存儲(chǔ)平臺(tái),經(jīng)過(guò)共識(shí)機(jī)制達(dá)成共識(shí)后將流規(guī)則等網(wǎng)絡(luò)信息寫入?yún)^(qū)塊鏈中[6].
但該思路只能夠保證流規(guī)則難以被惡意篡改,并沒(méi)有考慮到第三方行動(dòng)者惡意向數(shù)據(jù)平面中寫入錯(cuò)誤流規(guī)則的情況.為保證 SDN數(shù)據(jù)平面中流規(guī)則的正確性,本文提出一種基于區(qū)塊鏈的錯(cuò)誤流規(guī)則檢測(cè)(FalseFlow Rule Detection based on Blockchain,F(xiàn)FRD-BC)機(jī)制,隨機(jī)選擇數(shù)據(jù)平面中的流規(guī)則并驗(yàn)證其是否存在于區(qū)塊鏈中,以檢測(cè)數(shù)據(jù)平面中第三方行動(dòng)者注入的錯(cuò)誤流規(guī)則 . 一旦檢測(cè)到錯(cuò)誤流規(guī)則,立即下發(fā)刪除命令 . 此外,為了避免由于區(qū)塊鏈節(jié)點(diǎn)之間一致性不穩(wěn)定而導(dǎo)致誤刪正確流規(guī)則的情況,檢測(cè) 階 段 引 入 了 基 于 實(shí) 用 拜 占 庭 容 錯(cuò)(PracticalByzantine Fault Tolerance,PBFT)共識(shí)算法的投票驗(yàn)證策略,只有經(jīng)過(guò)多數(shù)區(qū)塊鏈節(jié)點(diǎn)投票驗(yàn)證后被檢測(cè)為錯(cuò)誤的流規(guī)則才會(huì)被刪除,以達(dá)到有效而準(zhǔn)確地檢測(cè)錯(cuò)誤流規(guī)則并將其從交換機(jī)中刪除的目的.
1 問(wèn)題描述及相關(guān)工作
在 SDN 網(wǎng)絡(luò)中,數(shù)據(jù)平面根據(jù)控制平面的 SDN控制器下發(fā)的流規(guī)則來(lái)轉(zhuǎn)發(fā)和處理網(wǎng)絡(luò)流量 .由于SDN 轉(zhuǎn)控分離的特點(diǎn),數(shù)據(jù)平面只負(fù)責(zé)轉(zhuǎn)發(fā)數(shù)據(jù)包,并不具備判斷流規(guī)則是否合法的功能,因此下發(fā)到 SDN 數(shù)據(jù)平面的任何錯(cuò)誤流規(guī)則都將對(duì)網(wǎng)絡(luò)流量的轉(zhuǎn)發(fā)和處理造成一定的影響 .流規(guī)則包括匹配域、動(dòng)作等,通過(guò)匹配域?qū)?shù)據(jù)包與流規(guī)則進(jìn)行匹配,通過(guò)動(dòng)作對(duì)數(shù)據(jù)包進(jìn)行相應(yīng)的處理[1].
當(dāng) SDN交換機(jī)接收到一個(gè)流的數(shù)據(jù)包后,首先查找是否有相匹配的流規(guī)則,如果有,則執(zhí)行相應(yīng)的動(dòng)作;如果沒(méi)有,則向控制器發(fā)送一條Packet_in消息以請(qǐng)求流規(guī)則,由控制器向交換機(jī)發(fā)送 Packet_out 消息以下發(fā)流規(guī)則 . 在流規(guī)則的請(qǐng)求與響應(yīng)過(guò)程中,第三方行動(dòng)者能夠獲取控制器與交換機(jī)之間的通信會(huì)話,并向交換機(jī)中惡意寫入錯(cuò)誤流規(guī)則,以達(dá)到破壞網(wǎng)絡(luò)的目的[4].從左到右分別給出了數(shù)據(jù)平面中產(chǎn)生錯(cuò)誤流規(guī)則的3種情況:(1)第三方行動(dòng)者直接篡改交換機(jī)中的流規(guī)則;(2)交換機(jī)與未經(jīng)過(guò)授權(quán)認(rèn)證的控制器建立連接,并接收到該惡意控制器下發(fā)的錯(cuò)誤流規(guī)則;(3)第三方行動(dòng)者插入控制器和交換機(jī)之間的通信會(huì)話,向交換機(jī)中惡意寫入錯(cuò)誤流規(guī)則.本文重點(diǎn)解決第一種和第三種由第三方行動(dòng)者向交換機(jī)中注入錯(cuò)誤流規(guī)則的情況.
區(qū)塊鏈技術(shù)為保證 SDN 交換機(jī)中流規(guī)則安全性的主要思路是將區(qū)塊鏈作為一個(gè)分布式存儲(chǔ)平臺(tái)來(lái)存儲(chǔ)SDN中需要驗(yàn)證的網(wǎng)絡(luò)信息(如控制器信息、流規(guī)則等),基于其本身可追溯、不可篡改的性質(zhì),避免這些網(wǎng)絡(luò)信息被惡意篡改[6-8].目前,相關(guān)研究主要從網(wǎng)絡(luò)信息完整性、控制平面安全性、控制平面與數(shù)據(jù)平面之間通信安全等方面展開.針對(duì)SDN網(wǎng)絡(luò)信息完整性的保障,RAHMAN等人[10]提出用控制器集群維護(hù)一個(gè)分布式區(qū)塊鏈賬本,在更新流規(guī)則時(shí),向所有控制器廣播新規(guī)則,從而保證控制器規(guī)則集的一致性 .分布式區(qū)塊鏈賬本能夠跟蹤所有流規(guī)則的更新,通過(guò)REST API訪問(wèn)歷史記錄 .該方案只考慮了流規(guī)則的完整性以及一致性 .WENG 等人[11]設(shè)計(jì)了一個(gè)基于區(qū)塊鏈的整體安全機(jī)制,在維護(hù)網(wǎng)絡(luò)視圖的同時(shí),能夠在所有控制器之間保持網(wǎng)絡(luò)資源的一致性.
為克服傳統(tǒng)SDN架構(gòu)中流量缺乏可追溯性和可問(wèn)責(zé)性的弱點(diǎn),所有的流和網(wǎng)絡(luò)行為都被記錄在區(qū)塊鏈上,以便重播網(wǎng)絡(luò)狀態(tài),進(jìn)行審核和調(diào)試.一些研究引入?yún)^(qū)塊鏈保存節(jié)點(diǎn)認(rèn)證信息,用于保證 SDN 控制平面的安全性 .WANG 等人[12]提出SDN 安全保障模型,將 SDN 流規(guī)則、控制器的全局信息等存儲(chǔ)到區(qū)塊鏈,通過(guò)對(duì)控制器進(jìn)行分布式認(rèn)證以及權(quán)限管理,提高網(wǎng)絡(luò)的魯棒性 .SHAO等人[13]提出一種SDN安全機(jī)制系統(tǒng)模型及保障機(jī)制,在控制平面采用區(qū)塊鏈技術(shù)存儲(chǔ)系統(tǒng)的安全驗(yàn)證信息 .該方案在初始階段通過(guò) SDN 控制器之間相互交換數(shù)據(jù)進(jìn)行身份驗(yàn)證,來(lái)防止非法控制器的接入以及攻擊者篡改共享數(shù)據(jù)庫(kù)信息,但并沒(méi)有考慮到第三方行動(dòng)者惡意向交換機(jī)中寫入流規(guī)則的情況.AZAB等人[14]提出對(duì)網(wǎng)絡(luò)節(jié)點(diǎn)進(jìn)行接入認(rèn)證,通過(guò)多節(jié)點(diǎn)認(rèn)證提高 SDN 的穩(wěn)健性 .
節(jié)點(diǎn)通過(guò)認(rèn)證后,控制器向節(jié)點(diǎn)發(fā)出相應(yīng)的授權(quán)信息,每當(dāng)節(jié)點(diǎn)的權(quán)限發(fā)生變化時(shí),將最新的權(quán)限存儲(chǔ)在區(qū)塊鏈中,防止攻擊者對(duì)數(shù)據(jù)的惡意篡改.確?刂破髦g的一致性,可以避免 SDN控制平面流表管理的漏洞帶來(lái)的安全威脅.HU等人[15]在SDN 中提供流規(guī)則一致性測(cè)試的新框架,并設(shè)計(jì)了流規(guī)則插入和驗(yàn)證的過(guò)程.TONG[16]等人通過(guò)構(gòu)建水平-垂直架構(gòu)的控制平面,使用區(qū)塊鏈記錄網(wǎng)絡(luò)信息,防止惡意管理員威脅.LOKESH等人[17]提出每個(gè)網(wǎng)絡(luò)集群引入控制器區(qū)塊鏈網(wǎng)絡(luò),每個(gè)控制器擁有一對(duì)公鑰和私鑰,每個(gè)交換機(jī)通過(guò)會(huì)話密鑰與控制器建立通信通道 .控制器使用交換機(jī)的會(huì)話密鑰加密流規(guī)則等信息,以保證通信通道的安全性.
針對(duì) SDN 網(wǎng)絡(luò)中的中間人攻擊,BOUKRIA [18]等人提出 BCFR 解決方案,以檢測(cè)注入 SDN 數(shù)據(jù)平面中的錯(cuò)誤流規(guī)則,其中的私有區(qū)塊鏈網(wǎng)絡(luò)由控制器與可信節(jié)點(diǎn)(虛擬機(jī))組成 .當(dāng)控制器向交換機(jī)下發(fā)流規(guī)則時(shí),也向可信節(jié)點(diǎn)發(fā)送一個(gè)流規(guī)則的副本.交換機(jī)收到流規(guī)則后,驗(yàn)證自己收到的流規(guī)則與可信節(jié)點(diǎn)中的流規(guī)則是否相同,若相同,則不執(zhí)行任何操作;若不同,則通知網(wǎng)絡(luò)管理員 .該方案能夠檢測(cè)出所有注入SDN數(shù)據(jù)平面中的錯(cuò)誤流規(guī)則.這些研究工作大部分并沒(méi)有考慮到 SDN 數(shù)據(jù)平面中注入錯(cuò)誤流規(guī)則的情況 .
文獻(xiàn)[18]提出的BCFR 方案雖然能夠檢測(cè)出所有的錯(cuò)誤流規(guī)則,但首先,該方案中交換機(jī)每收到一條流規(guī)則,都要立即對(duì)其進(jìn)行檢測(cè),這一過(guò)程將消耗更多的處理時(shí)間,從而對(duì)網(wǎng)絡(luò)性能造成一定影響;其次,該方案在檢測(cè)到錯(cuò)誤流規(guī)則后僅僅通知網(wǎng)絡(luò)管理員,只能檢測(cè)到錯(cuò)誤流規(guī)則,而不能緩解錯(cuò)誤流規(guī)則對(duì)網(wǎng)絡(luò)的影響;最后,沒(méi)有考慮到區(qū)塊鏈節(jié)點(diǎn)之間一致性不穩(wěn)定時(shí),造成某些正常流規(guī)則沒(méi)有上鏈,從而導(dǎo)致將正常流規(guī)則檢測(cè)為錯(cuò)誤流規(guī)則的情況.2 解決方案針對(duì) SDN數(shù)據(jù)平面中注入的錯(cuò)誤流規(guī)則,本文提出基于區(qū)塊鏈的錯(cuò)誤流規(guī)則檢測(cè)機(jī)制 FFRD-BC.通過(guò)控制平面隨機(jī)選擇數(shù)據(jù)平面中的流規(guī)則并驗(yàn)證其是否存在于區(qū)塊鏈中,來(lái)檢測(cè)SDN數(shù)據(jù)平面中第三方行動(dòng)者注入的錯(cuò)誤流規(guī)則;當(dāng)流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤流規(guī)則時(shí),立即下發(fā)刪除命令,以緩解錯(cuò)誤流規(guī)則對(duì)網(wǎng)絡(luò)的影響 .
此外,針對(duì)區(qū)塊鏈節(jié)點(diǎn)之間一致性不穩(wěn)定而導(dǎo)致的誤檢情況,在檢測(cè)階段引入基于PBFT共識(shí)算法的投票驗(yàn)證策略.
2.1 系統(tǒng)模型
本文在控制平面采用水平分布式控制器架構(gòu)[19-20].在數(shù)據(jù)平面將交換機(jī)劃分為不同的區(qū)域,每個(gè)控制器單獨(dú)控制其中的一個(gè)交換機(jī)區(qū)域 .控制器之間形成一個(gè)私有區(qū)塊鏈網(wǎng)絡(luò). 在 SDN 網(wǎng)絡(luò)運(yùn)行時(shí),控制平面中的控制器根據(jù)網(wǎng)絡(luò)需求向數(shù)據(jù)平面下發(fā)流規(guī)則,數(shù)據(jù)平面中的交換機(jī)根據(jù)流規(guī)則進(jìn)行網(wǎng)絡(luò)流量的轉(zhuǎn)發(fā)與處理工作 .區(qū)塊鏈則負(fù)責(zé)流規(guī)則的存儲(chǔ),通過(guò)驗(yàn)證流規(guī)則是否存在于區(qū)塊鏈中對(duì)流規(guī)則進(jìn)行檢測(cè).
2.2 FFRD-BC機(jī)制
FFRD-BC機(jī)制的運(yùn)行共包括3個(gè)階段:流規(guī)則上鏈、流規(guī)則檢測(cè)、流規(guī)則決策,其中流規(guī)則檢測(cè)階段又分為流規(guī)則選擇和流規(guī)則驗(yàn)證兩步驟。
第一階段:流規(guī)則上鏈當(dāng)控制平面向數(shù)據(jù)平面下發(fā)流規(guī)則時(shí),將這條流規(guī)則格式化為一條交易并打包成一個(gè)區(qū)塊并在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播,收到區(qū)塊的控制器節(jié)點(diǎn)在經(jīng)過(guò)共識(shí)后將它存儲(chǔ)到自己的本地區(qū)塊鏈中 .區(qū)塊由區(qū)塊哈希值、控制器ID、交易等元素組成,交易由流規(guī)則ID、匹配域、動(dòng)作等元素組成.第二階段:流規(guī)則檢測(cè)(1)流規(guī)則選擇——控制平面從數(shù)據(jù)平面中隨機(jī)選擇一臺(tái)交換機(jī),并從這臺(tái)交換機(jī)的流規(guī)則集合中隨機(jī)選擇待檢測(cè)的流規(guī)則.
(2)流規(guī)則驗(yàn)證——控制平面訪問(wèn)區(qū)塊鏈,驗(yàn)證被選擇的流規(guī)則是否存在于區(qū)塊鏈中 . 如果存在,則檢測(cè)結(jié)果為流規(guī)則正確;如果不存在,則檢測(cè)結(jié)果為流規(guī)則錯(cuò)誤.第三階段:流規(guī)則決策控制平面根據(jù)流規(guī)則檢測(cè)階段的結(jié)果進(jìn)行不執(zhí)行任何操作或刪除流規(guī)則的決策 .當(dāng)檢測(cè)結(jié)果為流規(guī)則正確時(shí),則不執(zhí)行任何操作;當(dāng)檢測(cè)結(jié)果為流規(guī)則錯(cuò)誤時(shí),則向數(shù)據(jù)平面下發(fā)刪除該條流規(guī)則的命令.在 FFRD-BC 機(jī)制的 3個(gè)階段中,最核心的是第二階段,即流規(guī)則檢測(cè)階段,其中流規(guī)則驗(yàn)證尤為重要 . 由于區(qū)塊鏈節(jié)點(diǎn)之間的一致性不穩(wěn)定,只驗(yàn)證自己的本地區(qū)塊鏈中是否存在待檢測(cè)的流規(guī)則無(wú)法保證檢測(cè)結(jié)果的準(zhǔn)確性.
2.3 流規(guī)則驗(yàn)證策略
控制平面從數(shù)據(jù)平面中隨機(jī)選擇流規(guī)則 r,驗(yàn)證r是否存在于區(qū)塊鏈中.如果存在,則流規(guī)則檢測(cè)結(jié)果為正確,如果不存在,則流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤.驗(yàn)證策略分為自主驗(yàn)證策略和投票驗(yàn)證策略.
2.3.1 自主驗(yàn)證控制器
從網(wǎng)絡(luò)中的n個(gè)交換機(jī)中隨機(jī)選擇一臺(tái)交換機(jī)si,從si的流規(guī)則集中隨機(jī)選擇一條流規(guī)則r.將得到的流規(guī)則 r 進(jìn)行解析,從而得到流 ID、匹配域、動(dòng)作等各項(xiàng)流規(guī)則元素 . 將所得到的各項(xiàng)流規(guī)則元素按順序進(jìn)行拼接,得到一條格式化的流規(guī)則r’.對(duì)于得到的格式化的流規(guī)則r’,驗(yàn)證自己的本地區(qū)塊鏈中是否存在與r’相同的交易tx.如果存在,則流規(guī)則檢測(cè)結(jié)果為正確;如果不存在,則流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤 .算法 1 為自主驗(yàn)證的錯(cuò)誤流規(guī)則檢測(cè)算法的描述.
在自主驗(yàn)證的檢測(cè)過(guò)程中,當(dāng)區(qū)塊鏈節(jié)點(diǎn)之間一致性不穩(wěn)定時(shí),對(duì)于正確的流規(guī)則 r,控制器節(jié)點(diǎn)在自己的本地區(qū)塊鏈中沒(méi)有找到與 r’相同的交易tx,那么,正確的流規(guī)則 r將被誤檢為錯(cuò)誤流規(guī)則并被刪除 . 這顯然不符合設(shè)計(jì) FFRD-BC 機(jī)制的初衷,因此本文在流規(guī)則檢測(cè)階段引入了基于 PBFT共識(shí)算法的投票驗(yàn)證策略,以減少誤檢情況.
2.3.2 投票驗(yàn)證
在投票驗(yàn)證策略中,將私有區(qū)塊鏈網(wǎng)絡(luò)中的控制器節(jié)點(diǎn)分為請(qǐng)求節(jié)點(diǎn)和驗(yàn)證節(jié)點(diǎn),并隨機(jī)選擇一個(gè)節(jié)點(diǎn)作為主節(jié)點(diǎn) .每個(gè)控制器都有可能成為請(qǐng)求節(jié)點(diǎn)或驗(yàn)證節(jié)點(diǎn) . 當(dāng)控制器廣播投票請(qǐng)求時(shí),則該控制器節(jié)點(diǎn)作為請(qǐng)求節(jié)點(diǎn),其他控制器節(jié)點(diǎn)作為驗(yàn)證節(jié)點(diǎn)對(duì)需要投票的流規(guī)則進(jìn)行驗(yàn)證.對(duì)于經(jīng)自主驗(yàn)證后檢測(cè)為錯(cuò)誤的流規(guī)則 r’,引入基于 PBFT共識(shí)算法的投票驗(yàn)證策略對(duì) r’進(jìn)行檢測(cè).PBFT共識(shí)算法能夠在失效節(jié)點(diǎn)不超過(guò)節(jié)點(diǎn)總數(shù)的 1/3 時(shí)保證共識(shí)結(jié)果的正確性,這里假設(shè)整個(gè)網(wǎng)絡(luò)中失效節(jié)點(diǎn)個(gè)數(shù)為f。
3 評(píng)估與分析
3.1 實(shí)驗(yàn)平臺(tái)
實(shí)驗(yàn)部署在 Ubuntu 16.04 系統(tǒng)上 . 使用 Mininet2.2.1 網(wǎng)絡(luò)模擬器模擬 SDN 交換機(jī)和主機(jī),選用Opendaylight 0.6.4 Carbon和Multichain[23]分別作為SDN控制器和區(qū)塊鏈平臺(tái).Multichain能夠快速構(gòu)建區(qū)塊鏈網(wǎng)絡(luò),為了降低區(qū)塊鏈在低活動(dòng)時(shí)期的磁盤使用情況,本文在初始化區(qū)塊鏈時(shí)將mine-empty-rounds參數(shù)設(shè)置為0,即如果沒(méi)有新的交易,則停止添加區(qū)塊.實(shí)驗(yàn)?zāi)M數(shù)據(jù)中心網(wǎng)絡(luò)環(huán)境,網(wǎng)絡(luò)拓?fù)淙鐖D4所示,網(wǎng)絡(luò)中由 20 個(gè)交換機(jī)(s1~s20)和 16 個(gè)主機(jī)(h1~h16)構(gòu)成一個(gè)胖樹拓?fù)?其中,20個(gè)交換機(jī)分為5個(gè)子域,s1~s4構(gòu)成子域1,s5~s8構(gòu)成子域2,s9~s12構(gòu)成子域3,s13~s16構(gòu)成子域4,s17~s20構(gòu)成子域5,這些子域分別由5臺(tái)控制器(c1~c5)進(jìn)行控制.
3.2 實(shí)驗(yàn)方案
3.2.1 實(shí)驗(yàn)設(shè)計(jì)
通過(guò) Multichain 平臺(tái)構(gòu)建具有 5 個(gè)控制器節(jié)點(diǎn)c1~c5 的一個(gè)基于私有區(qū)塊鏈的 SDN 網(wǎng)絡(luò) . 當(dāng)網(wǎng)絡(luò)運(yùn)行時(shí),每次控制器向交換機(jī)下發(fā)流規(guī)則,都會(huì)將該條流規(guī)則格式化為一條交易 tx 并打包成一個(gè)區(qū)塊并在區(qū)塊鏈網(wǎng)絡(luò)中進(jìn)行廣播,收到區(qū)塊的節(jié)點(diǎn)在經(jīng)過(guò)共識(shí)后將該區(qū)塊寫進(jìn)自己的本地區(qū)塊鏈中 .區(qū)塊結(jié)構(gòu)和交易結(jié)構(gòu)分別在表1和表2中給出.在控制平面使用Random方法隨機(jī)生成交換機(jī)ID以及流規(guī)則ID,并從交換機(jī)中選擇流規(guī)則r,并將其解析,得到表2所示的各項(xiàng)流規(guī)則元素,將這些流規(guī)則元素按順序進(jìn)行拼接,得到一條格式化的流規(guī)則r’.驗(yàn)證區(qū)塊鏈中是否存在與r’相同的交易tx,如果存在,則流規(guī)則檢測(cè)結(jié)果為正確;如果不存在,則流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤.控制平面根據(jù)檢測(cè)結(jié)果進(jìn)行決策,如果檢測(cè)結(jié)果為正確,則不執(zhí)行任何操作;如果檢測(cè)結(jié)果為錯(cuò)誤,則向交換機(jī)下發(fā)刪除流規(guī)則命令.
在檢測(cè)階段分別采用了兩種選擇方式和兩種驗(yàn)證策略 .選擇方式有全隨機(jī)選擇和先隨機(jī)后順序選擇兩種方式 . 全隨機(jī)選擇方式中,每次控制平面選擇數(shù)據(jù)平面中的流規(guī)則時(shí),都使用Random方法隨機(jī)生成交換機(jī)ID以及流規(guī)則ID.先隨機(jī)后順序選擇方式中,首先隨機(jī)生成交換機(jī) ID 以及流規(guī)則 ID,并對(duì)格式化的流規(guī)則 r’進(jìn)行檢測(cè),如果檢測(cè)結(jié)果為錯(cuò)誤,則從該條流規(guī)則開始順序選擇 a 條流規(guī)則進(jìn)行檢測(cè).本文在實(shí)驗(yàn)時(shí)取a等于10.驗(yàn)證策略分別采用 2.3節(jié)中給出的自主驗(yàn)證和投票驗(yàn)證兩種策略.自主驗(yàn)證策略中,控制平面隨機(jī)選擇流規(guī)則r并將其格式化為r’,驗(yàn)證自己的本地區(qū)塊鏈中是否存在與r’相同的交易tx,如果存在,則流規(guī)則檢測(cè)結(jié)果為正確;如果不存在,則流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤 .自主驗(yàn)證策略是完全自己做主對(duì)流規(guī)則進(jìn)行驗(yàn)證并返回檢測(cè)結(jié)果.投票驗(yàn)證策略中,當(dāng)自主驗(yàn)證后返回流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤時(shí),該控制器節(jié)點(diǎn)作為請(qǐng)求節(jié)點(diǎn)向其他控制器節(jié)點(diǎn)廣播投票請(qǐng)求 .其他控制器節(jié)點(diǎn)收到投票請(qǐng)求后,驗(yàn)證自己的本地區(qū)塊鏈中是否存在與r’相同的交易tx,如果存在,則向請(qǐng)求節(jié)點(diǎn)投票0;如果不存在,則向請(qǐng)求節(jié)點(diǎn)投票1.其中,0表示投票 r’為正確,1表示投票 r’為錯(cuò)誤 .
請(qǐng)求節(jié)點(diǎn)統(tǒng)計(jì)投票1的驗(yàn)證節(jié)點(diǎn)個(gè)數(shù),如果超過(guò)一半以上的驗(yàn)證節(jié)點(diǎn)投票 1,則流規(guī)則檢測(cè)結(jié)果為“錯(cuò)誤”;否則流規(guī)則檢測(cè)結(jié)果為“正確”.3.2.2 評(píng)價(jià)指標(biāo)采用被檢測(cè)為錯(cuò)誤的流規(guī)則數(shù)量指標(biāo)對(duì)兩種選擇方式進(jìn)行檢測(cè)效率方面的比較和評(píng)價(jià),基于檢測(cè)為錯(cuò)誤的流規(guī)則數(shù)量中正常流規(guī)則占比指標(biāo)對(duì)兩種驗(yàn)證策略進(jìn)行誤檢率方面的比較和評(píng)價(jià).為了模擬實(shí)際網(wǎng)絡(luò)中錯(cuò)誤流量通常聚集出現(xiàn)的場(chǎng)景,每次測(cè)試向交換機(jī)s2和s3中一次性寫入共100條錯(cuò)誤流規(guī)則.
在全隨機(jī)選擇方式中,檢測(cè)交換機(jī)中的哪條流規(guī)則完全由Random方法決定,而在先隨機(jī)后順序選擇方式中,檢測(cè)到一條錯(cuò)誤流規(guī)則,將從該條流規(guī)則開始順序選擇10條流規(guī)則進(jìn)行檢測(cè).因此在兩種場(chǎng)景下,使用先隨機(jī)后順序選擇方式時(shí)的檢測(cè)效率都明顯優(yōu)于全隨機(jī)選擇方式.誤檢率的仿真實(shí)驗(yàn)分別在使用兩種選擇方式的場(chǎng)景下進(jìn)行,對(duì)使用兩種驗(yàn)證策略時(shí)的誤檢率進(jìn)行對(duì)比.設(shè)定對(duì)于交易tx,單個(gè)區(qū)塊鏈節(jié)點(diǎn)發(fā)生一致性不穩(wěn)定的概率為 0.01,且區(qū)塊鏈網(wǎng)絡(luò)中的控制器節(jié)點(diǎn)都是可信節(jié)點(diǎn).取10次測(cè)試平均值作為誤檢率.兩種驗(yàn)證策略的誤檢率對(duì)比.
可以看到,無(wú)論在全隨機(jī)選擇場(chǎng)景還是在先隨機(jī)后順序選擇場(chǎng)景下,隨著網(wǎng)絡(luò)中正常流規(guī)則數(shù)量的增多,使用自主驗(yàn)證策略時(shí)誤檢率都隨之上升 .這是因?yàn)榫W(wǎng)絡(luò)中正常流規(guī)則數(shù)量越多,單個(gè)區(qū)塊鏈節(jié)點(diǎn)中發(fā)生一致性不穩(wěn)定的交易數(shù)量也就越多,從而導(dǎo)致誤檢率的上升 . 在使用投票驗(yàn)證策略后,誤檢情況都得到了有效緩解,這是因?yàn)閷?duì)于同一條交易 tx,在整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中超過(guò)半數(shù)的節(jié)點(diǎn)在將 tx寫進(jìn)自己的本地區(qū)塊鏈時(shí)同時(shí)發(fā)生一致性不穩(wěn)定的概率非常小 .當(dāng)對(duì)正常流規(guī)則 r’進(jìn)行自主驗(yàn)證后的檢測(cè)結(jié)果為“錯(cuò)誤”時(shí),將在整個(gè)區(qū)塊鏈網(wǎng)絡(luò)中對(duì)r’進(jìn)行投票驗(yàn)證,由于超過(guò)半數(shù)節(jié)點(diǎn)的本地區(qū)塊鏈中都不存在與 r’相同的交易 tx的概率非常小,使得大多數(shù)節(jié)點(diǎn)對(duì) r’都投票為“正確”,因此,對(duì)正常流規(guī)則 r’進(jìn)行投票驗(yàn)證后的檢測(cè)結(jié)果為“正確”,從而有效降低了使用自主驗(yàn)證策略時(shí)的誤檢率.
4 總結(jié)與展望
由于 SDN網(wǎng)絡(luò)特有的轉(zhuǎn)控分離架構(gòu),實(shí)現(xiàn)了對(duì)網(wǎng)絡(luò)流量的靈活高效處理,但其數(shù)據(jù)平面缺乏對(duì)流規(guī)則的認(rèn)證,容易被第三方行動(dòng)者惡意寫入錯(cuò)誤流規(guī)則,從而危害網(wǎng)絡(luò)的有效性和可靠性 . 本文提出的 FFRD-BC 機(jī)制基于區(qū)塊鏈本身可追溯不可篡改的性質(zhì),隨機(jī)驗(yàn)證數(shù)據(jù)平面中流規(guī)則是否存在于區(qū)塊鏈中以檢測(cè)數(shù)據(jù)平面中的錯(cuò)誤流規(guī)則;引入了基于 PBFT 共識(shí)算法的投票驗(yàn)證策略,緩解當(dāng)區(qū)塊鏈節(jié)點(diǎn)一致性不穩(wěn)定時(shí)所導(dǎo)致的誤檢情況 .仿真實(shí)驗(yàn)表明:FFRD-BC機(jī)制能夠有效檢測(cè)出SDN數(shù)據(jù)平面中被第三方行動(dòng)者惡意寫入的錯(cuò)誤流規(guī)則,且與不執(zhí)行投票驗(yàn)證策略相比,能夠有效降低流規(guī)則誤檢的發(fā)生 .下一步工作將考慮到區(qū)塊鏈網(wǎng)絡(luò)查找耗時(shí)的固有問(wèn)題,提高區(qū)塊鏈部分的驗(yàn)證速度,以實(shí)現(xiàn)更快的檢測(cè)效率.
參 考 文 獻(xiàn)
[1] KREUTZ D,RAMOS F M V,VERISSIMO P E,et al.Software-Defined Networking: A comprehensive survey[J]. Proceedings of the IEEE,2015,103(1):14-76.
[2] RAWAT D B,REDDY S R. Software-Defined Networkingarchitecture,security and energy efficiency:A survey[J]. IEEE Communications Surveys & Tutorials,2017,19(1):325-346.
[3] 陳興蜀,曾雪梅,王文賢,等. 基于大數(shù)據(jù)的網(wǎng)絡(luò)安全與情報(bào)分析[J]. 工程科學(xué)與技術(shù),2017,49(3):1-12.[4] 董仕 . 軟件定義網(wǎng)絡(luò)安全問(wèn)題研究綜述[J]. 計(jì)算機(jī)科學(xué),2021,48(3):295-306.
[5] LIU Y,ZHAO B,ZHAO P,et al. A survey:Typicalsecurity issues of Software-Defined Networking[J]. ChinaCommunications,2019,16(7):13-31.
[6] 徐恪,凌思通,李琦,等. 基于區(qū)塊鏈的網(wǎng)絡(luò)安全體系結(jié)構(gòu)與關(guān)鍵技術(shù)研究進(jìn)展[J]. 計(jì)算機(jī)學(xué)報(bào),2021,44(1):55-83.
選自期刊《中南民族大學(xué)學(xué)報(bào)(自然科學(xué)版)》第 41 卷第 4 期
作者信息:張艷1,楊喜敏1,唐菀1*,劉艷萍2,劉宇宸1(1 中南民族大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074;2 華靈云科技有限公司,杭州 311121)
轉(zhuǎn)載請(qǐng)注明來(lái)自發(fā)表學(xué)術(shù)論文網(wǎng):http:///dzlw/30405.html