• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于區(qū)塊鏈的SDN數(shù)據(jù)平面錯(cuò)誤流規(guī)則檢測(cè)

      2022-07-01 15:58:50張艷楊喜敏唐菀劉艷萍劉宇宸
      關(guān)鍵詞:交換機(jī)區(qū)塊平面

      張艷,楊喜敏,唐菀*,劉艷萍,劉宇宸

      (1 中南民族大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,武漢 430074;2 華靈云科技有限公司,杭州 311121)

      軟件定義網(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è)(False Flow 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ò)(Practical Byzantine 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].

      圖1從左到右分別給出了數(shù)據(jù)平面中產(chǎn)生錯(cuò)誤流規(guī)則的3種情況:

      圖1 數(shù)據(jù)平面中錯(cuò)誤流規(guī)則寫入Fig.1 False flow rules injection in data plane

      (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ò)(圖2).在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 基于區(qū)塊鏈的SDN系統(tǒng)模型Fig.2 SDN system model based on blockchain

      2.2 FFRD-BC機(jī)制

      FFRD-BC機(jī)制的運(yùn)行共包括3個(gè)階段:流規(guī)則上鏈、流規(guī)則檢測(cè)、流規(guī)則決策,其中流規(guī)則檢測(cè)階段又分為流規(guī)則選擇和流規(guī)則驗(yàn)證兩步驟,如圖3所示.

      圖3 FFRD-BC機(jī)制Fig.3 FFRD-BC mechanism

      第一階段:流規(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è)算法的描述.

      算法1:自主驗(yàn)證的錯(cuò)誤流規(guī)則檢測(cè)算法輸入:交換機(jī)總數(shù)n輸出:自主驗(yàn)證后檢測(cè)為錯(cuò)誤的流規(guī)則r’1.從n個(gè)交換機(jī)中隨機(jī)選擇一臺(tái)交換機(jī)si,i∈n 2.獲取交換機(jī)si的流規(guī)則總數(shù)m 3.從m個(gè)流規(guī)則中隨機(jī)選擇一條流規(guī)則r 4.將流規(guī)則r格式化為r’5.驗(yàn)證自己的本地區(qū)塊鏈中是否存在與r’相同的交易tx 6.if(不存在) //流規(guī)則r檢測(cè)為錯(cuò)誤7. return r’8.end if

      在自主驗(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.

      投票驗(yàn)證的錯(cuò)誤流規(guī)則檢測(cè)算法偽代碼描述如算法2所示.

      算法2:投票驗(yàn)證的錯(cuò)誤流規(guī)則檢測(cè)算法輸入:自主驗(yàn)證后檢測(cè)為錯(cuò)誤的流規(guī)則r’輸出:r’經(jīng)投票驗(yàn)證后的檢測(cè)結(jié)果,true或false 1.請(qǐng)求節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)送投票請(qǐng)求消息<request,r’>//請(qǐng)求階段2.請(qǐng)求節(jié)點(diǎn)等待投票響應(yīng)3.主節(jié)點(diǎn)向其他驗(yàn)證節(jié)點(diǎn)廣播預(yù)準(zhǔn)備消息 //預(yù)準(zhǔn)備階段4.if(驗(yàn)證節(jié)點(diǎn)檢驗(yàn)通過(guò)預(yù)準(zhǔn)備消息) //進(jìn)入準(zhǔn)備階段5. 向其他驗(yàn)證節(jié)點(diǎn)廣播準(zhǔn)備消息6.end if 7.if(驗(yàn)證節(jié)點(diǎn)檢驗(yàn)通過(guò)2f+1個(gè)準(zhǔn)備消息) //進(jìn)入確認(rèn)階段8. 向其他驗(yàn)證節(jié)點(diǎn)廣播確認(rèn)消息9.end if 10.if(驗(yàn)證節(jié)點(diǎn)檢驗(yàn)通過(guò)2f+1個(gè)確認(rèn)消息) //進(jìn)入投票階段11. 驗(yàn)證自己的本地區(qū)塊鏈中是否存在與r’相同的交易tx 12. if(存在)13. 向請(qǐng)求節(jié)點(diǎn)投票r’為正確14. else 15. 向請(qǐng)求節(jié)點(diǎn)投票r’為錯(cuò)誤16. end if 17.end if 18.統(tǒng)計(jì)投票r’為錯(cuò)誤的節(jié)點(diǎn)個(gè)數(shù) //進(jìn)入統(tǒng)計(jì)階段19.if(超半數(shù)的節(jié)點(diǎn)投票r’為錯(cuò)誤)20. return false 21.else 22. return true 23.end if

      步驟1:請(qǐng)求階段(1~2):請(qǐng)求節(jié)點(diǎn)向主節(jié)點(diǎn)發(fā)送投票請(qǐng)求消息<request,r’>.

      步驟2:預(yù)準(zhǔn)備階段(3):主節(jié)點(diǎn)接收到請(qǐng)求消息,為請(qǐng)求消息分配編號(hào)n,生成預(yù)準(zhǔn)備消息<<preprepare,v,n,d>,request>,基于公式(2)將預(yù)準(zhǔn)備消息用自己的私鑰加密生成簽名q1,并向其他驗(yàn)證節(jié)點(diǎn)廣播<pre-prepare,q1>.其中,v 是視圖編號(hào),d 是請(qǐng)求消息request的摘要.

      步驟3:準(zhǔn)備階段(4~6):驗(yàn)證節(jié)點(diǎn)收到預(yù)準(zhǔn)備消息并檢驗(yàn),若滿足公式(1)和(3),則檢驗(yàn)通過(guò),進(jìn)入準(zhǔn)備階段,生成準(zhǔn)備消息<prepare,v,n,d,i>(其中i為該驗(yàn)證節(jié)點(diǎn)自身的編號(hào)),基于公式4將準(zhǔn)備消息用自己的私鑰加密生成簽名q2,并向其他驗(yàn)證節(jié)點(diǎn)廣播<prepare,q2>..驗(yàn)證節(jié)點(diǎn)驗(yàn)證通過(guò)(即滿足公式(1)和(5))2f+1 條準(zhǔn)備消息,則完成準(zhǔn)備階段,進(jìn)入確認(rèn)階段.

      步驟4:確認(rèn)階段(7~9):節(jié)點(diǎn)進(jìn)入確認(rèn)階段后,生成確認(rèn)消息<commit,v,n,d,i>,基于公式6將確認(rèn)消息用自己的私鑰加密生成簽名q3,并向其他驗(yàn)證節(jié)點(diǎn)廣播<commit,q3>.驗(yàn)證節(jié)點(diǎn)驗(yàn)證通過(guò)(即滿足公式(1)和(7))2f+1 條確認(rèn)消息后,則完成確認(rèn)階段,進(jìn)入投票階段.

      步驟5:投票階段(10~17):每個(gè)驗(yàn)證節(jié)點(diǎn)驗(yàn)證自己的本地區(qū)塊鏈中是否存在與流規(guī)則r’相同的交易tx,如果存在,則向請(qǐng)求節(jié)點(diǎn)投票r’為正確;如果不存在,則向請(qǐng)求節(jié)點(diǎn)投票r’為錯(cuò)誤.

      步驟6:統(tǒng)計(jì)階段(18~23):請(qǐng)求節(jié)點(diǎn)統(tǒng)計(jì)投票r’為錯(cuò)誤的驗(yàn)證節(jié)點(diǎn)個(gè)數(shù),如果超過(guò)一半以上的驗(yàn)證節(jié)點(diǎn)投票r’為錯(cuò)誤,則流規(guī)則檢測(cè)結(jié)果為錯(cuò)誤;否則流規(guī)則檢測(cè)結(jié)果為正確.

      與 PoW 共識(shí)算法[21-22]相比,PBFT 共識(shí)算法吞吐量較高且耗能較低.

      3 評(píng)估與分析

      3.1 實(shí)驗(yàn)平臺(tái)

      實(shí)驗(yàn)部署在Ubuntu 16.04 系統(tǒng)上.使用Mininet 2.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)行控制.

      圖4 實(shí)驗(yàn)網(wǎng)絡(luò)拓?fù)銯ig.4 Experimental network topology

      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中給出.

      表1 區(qū)塊結(jié)構(gòu)Tab.1 Block structure

      在控制平面使用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ī)則命令.

      表2 交易(tx)結(jié)構(gòu)Tab.2 Transcation(tx)structure

      在檢測(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ī)則.

      3.3 結(jié)果與分析

      檢測(cè)效率的仿真實(shí)驗(yàn)分別在使用兩種驗(yàn)證策略的場(chǎng)景下進(jìn)行,對(duì)使用兩種選擇方式時(shí)的檢測(cè)效率進(jìn)行對(duì)比.取10次測(cè)試平均值作為檢測(cè)效率.

      兩種選擇方式的檢測(cè)效率對(duì)比在圖5 和圖6 中給出.可以看到,無(wú)論在自主驗(yàn)證場(chǎng)景還是在投票驗(yàn)證場(chǎng)景下,隨著檢測(cè)次數(shù)的增加,全隨機(jī)選擇方式和先隨機(jī)后順序選擇方式都能夠有效檢測(cè)出數(shù)據(jù)平面中第三方行動(dòng)者注入的錯(cuò)誤流規(guī)則.在檢測(cè)剛開始,由于網(wǎng)絡(luò)中的錯(cuò)誤流規(guī)則數(shù)量還比較多,很容易隨機(jī)選擇到一條錯(cuò)誤流規(guī)則,因此,檢測(cè)為錯(cuò)誤的流規(guī)則數(shù)量上升較快.隨著檢測(cè)次數(shù)的增加,刪除的錯(cuò)誤流規(guī)則越來(lái)越多,交換機(jī)中的錯(cuò)誤流規(guī)則數(shù)量越來(lái)越少,需要多次隨機(jī)選擇才能夠檢測(cè)到一條錯(cuò)誤的流規(guī)則,因此,檢測(cè)為錯(cuò)誤的流規(guī)則數(shù)量上升緩慢.

      圖5 自主驗(yàn)證場(chǎng)景下的檢測(cè)效率Fig.5 Detection efficiency in self-verification scenario

      圖6 投票驗(yàn)證場(chǎng)景下的檢測(cè)效率Fig.6 Detection efficiency in vote-verification scenario

      在全隨機(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ì)比在圖7 和圖8 中給出.可以看到,無(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í)的誤檢率.

      圖7 全隨機(jī)選擇場(chǎng)景下的誤檢率Fig.7 False detection rate in all-random selected scenario

      圖8 先隨機(jī)后順序選擇場(chǎng)景下的誤檢率Fig.8 False detection rate in random-sequential selected scenario

      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è)效率.

      猜你喜歡
      交換機(jī)區(qū)塊平面
      區(qū)塊鏈:一個(gè)改變未來(lái)的幽靈
      科學(xué)(2020年5期)2020-11-26 08:19:12
      區(qū)塊鏈:主要角色和衍生應(yīng)用
      科學(xué)(2020年6期)2020-02-06 08:59:56
      修復(fù)損壞的交換機(jī)NOS
      區(qū)塊鏈+媒體業(yè)的N種可能
      讀懂區(qū)塊鏈
      使用鏈路聚合進(jìn)行交換機(jī)互聯(lián)
      參考答案
      關(guān)于有限域上的平面映射
      PoE交換機(jī)雷擊浪涌防護(hù)設(shè)計(jì)
      參考答案
      固原市| 阳曲县| 吉林省| 太康县| 黄石市| 桂林市| 富民县| 奉贤区| 庄浪县| 吉木萨尔县| 尚义县| 池州市| 揭西县| 上杭县| 湖口县| 吉水县| 普陀区| 灵石县| 前郭尔| 临泽县| 辰溪县| 东明县| 仪征市| 开鲁县| 尼勒克县| 昌都县| 肥城市| 乌拉特前旗| 手游| 汕头市| 绥棱县| 富川| 江津市| 慈溪市| 噶尔县| 象山县| 姚安县| 永嘉县| 莱芜市| 大英县| 巴里|