劉宇宸,唐 菀,楊喜敏,張 艷
(中南民族大學 計算機科學學院,武漢 430074)
當前網絡環境日益復雜,軟件定義網絡(Software-Defined Network,SDN)架構中的傳統單一控制器結構已不能滿足復雜多樣的應用層需求[1-2]。控制層作為SDN 架構中網絡管理和調度的智能中心,新下發的路由策略與數據層已有的路由策略之間的一致性問題顯得尤為重要。針對路由策略的一致性問題,在控制層的研究多數通過統計和分析進行檢測[3],無須對交換機或數據包進行額外處理,可降低網絡部署復雜度。
在驗證控制層路由策略一致性問題的研究方案中,多數方案利用算法建模進行驗證[4]并直接分析控制層。區塊鏈技術與SDN 的結合[5]對于解決路由策略的一致性問題帶來了新的思路。區塊鏈去中心化的特性使其能在SDN 平臺得到應用,實現智能化網絡資源管理并提升網絡安全性和可擴展性[6],同時通過共識機制確保路由策略的一致性[7-9]。但是,現有引入區塊鏈技術的研究方案多數僅針對多控制器的協同問題,控制層的路由一致性問題還有待進一步解決[10]。
在多控制器結構下,控制器之間的協同處理[11-12]以及控制層的下發路由策略會對數據層造成影響。本文提出基于區塊鏈的SDN 路由策略一致性檢測(Routing strategy Consistency Detection based on Blockchain for SDN,RCDB-SDN)方案,利用區塊鏈存儲流表項信息,結合共識機制對控制層新制定的流表項集進行一致性驗證,并在控制器將流表項下發交換機前,檢測出可能會對網絡造成不良影響的流表項。
在控制 層的一 致性研究中,ZHOU 等[13]提 出NEAt,通過攔截SDN 應用的更新將對應策略制成有向圖,對違反管理員高級策略的更新及時進行修復;ABHASHKUMAR 等[14]設計一種多層圖控制平面模型,通過自定義屬性的驗證算法直接對控制層進行分析以驗證網絡策略。
在多控制器場景下,基于拜占庭容錯(Byzantine Fault Tolerance,BFT)機制,MA 等[15]提出一種多控制器SDN 網絡架構,數據層交換機由多個控制器共同管理,并在控制層和數據層之間添加一個代理,以保證流表項的正確下發。SHAGHAGHI等[16]提出WedgeTail,選取哈希算法,通過比較網絡中數據包的實際轉發路徑與控制層的預期轉發路徑來檢測異常的數據包轉發問題,但這可能會對網絡的實際部署造成嚴重影響。LEI 等[17]構建2VMeri 框架,使用Bloom 過濾器和二維向量標簽,驗證控制層策略和數據層規則的一致性。
區塊鏈具有去中心化、持久性等特征,能夠實現資源共享,通過共識機制、鏈式結構等技術,可以保證數據共享的安全性和可靠性。學者們對SDN與區塊鏈技術的融合進行了大量研究并取得了一系列研究成果。MONDAL 等[18]提出BIND 方案,基于效用博弈論,借助備用路徑解決流表項沖突問題,在多租戶控制器之間引入區塊鏈技術,使得每個控制器都能公平地替換流表項,確保控制器間的合作并避免壟斷。FAN 等[10]設計并構建區塊鏈協調控制器(Blockchain-Coordinating Controller,BCC)來確保SDN 控制器 間的協 調。CHATTARAJ 等[19]結合基于屬性的加密和基于證書的訪問控制協議,引入實用拜占庭容錯(Practical BFT,PBFT)算法,提出一種支持區塊鏈的細粒度訪問控制機制,提高了SDN 的魯棒性。LI 等[20]設計多控制器規則執行驗證(BlockREV)機制,采用區塊鏈技術為轉發行為提供不變性和隱私保護,保證跨域轉發的正確性。
在將區塊鏈技術應用于SDN 控制層的研究中,GUO 等[21]提出一種基于區塊鏈的SDN 安全框架,采用LLDP 協議周期性地獲取網絡鏈路信息并保證多控制器之間拓撲信息的一致性,另一種基于區塊鏈的SDN 體系結構B-SDN[22]結合水平和垂直架構重新構建SDN 網絡的控制層。RAHMAN 等[23]提出一種分層架構并部署SDN-IoT 框架,通過識別和隔離惡意交換機來確保安全的簇頭選擇和網絡通信,并保持控制器集群內的一致性。
學者們針對傳統SDN 中一致性問題的研究多數在數據層或控制層進行改進,較少涉及多控制器場景,也不適用于規模較大的多控制器場景。本文從解決方案、研究特點和主要技術等方面出發,歸納傳統SDN 與結合區塊鏈技術[12]的SDN 在一致性問題上的研究現狀,如表1 所示。雖然引入區塊鏈技術能更好地考慮控制器之間的協同通信、跨域轉發的正確性以及多控制器之間網絡拓撲和網絡狀態等信息的一致性,但對于控制層路由策略與網絡已有路由策略之間的一致性問題仍需進一步探討。因此,本文提出RCDB-SDN 方案,通過引入區塊鏈技術來改進基于控制層的路由策略的一致性檢測。
RCDB-SDN 方案在SDN 架構中引入區塊鏈系統:控制層采用水平分布式架構,控制器之間構建區塊鏈網絡;數據層的交換機被劃分在不同的區域,每個區域分屬于不同的控制器管理。SDN 交換機中的流表項是網絡設備進行數據轉發的依據,指導匹配和轉發數據包的操作。在OpenFlow 1.3 版本中,流表項由MatchField、Priority、Counter、Instruction、Timeout、Cookie 和Flag 等字段組成。RCDB-SDN 方案架構如圖1 所示。

圖1 RCDB-SDN 方案架構Fig.1 Architecture of RCDB-SDN scheme
在網絡運行期間,應用層通過北向接口向控制層發送網絡請求,控制層根據接收到的網絡請求制定路由策略并生成流表項集,數據層進行網絡流量的轉發和處理。區塊鏈系統負責存儲流表項信息以及對流表項集進行一致性驗證。區塊鏈各節點在控制層新生成的流表項集被下發之前對其進行共識驗證,檢測該流表項集在數據層所對應的轉發路徑,以判斷其是否會導致已有網絡出現路徑重疊或路徑環路。
在RCDB-SDN 中,區塊鏈技術與SDN 的結合主要體現在以下兩環節:
1)區塊鏈存儲流表項信息,確保流表項數據的可信度和完整性。控制層解析要下發的流表項集,將得到的流表項屬性信息發送到區塊鏈系統請求一致性驗證,只有通過驗證的流表項信息才會被存儲在區塊鏈。
2)區塊鏈節點對需要下發的流表項集采用共識驗證機制進行一致性驗證。區塊鏈每個節點都遵循基于投票的PBFT 共識機制[24]對一致性驗證請求進行決策,并將整個區塊鏈系統的最終決策返回控制層,只有在區塊鏈系統中達成共識的流表項集才能下發。
在進行路由策略沖突檢測時,以MatchField、Instruction、Priority 三字段作為路由策略的主要特征和參考因素。在OpenFlow 1.3 版本中,完整的MatchField 字段涵蓋了開放系統互聯(Open System Interconnection,OSI)模型中L1(物理層)至L4(傳輸層)網絡的特征。但由于考慮全部MatchField 字段過于復雜,且SDN 應用主要處于OSI 模型的L3(網絡層)至L4 網絡,選取MatchField 字段中的L3 和L4特征作為研究特征。
一條流表項r和一個流表項集R分別表示為r=和R={r1,r2,…,rn},其中,s、t、pi、po、is、id、pr、a 分別表示交換機ID、流表ID、入端口、出端口、源地址、目的地址、優先級和動作,n表示流表項集R中的流表項總數。
控制層根據制定的路由策略生成一組流表項集,只有通過區塊鏈系統的共識驗證之后才能被下發到數據層并寫入區塊鏈。流表項集上鏈流程如圖2 所示,具體步驟如下:

圖2 流表項集上鏈過程Fig.2 Up-chaining process of the set of flow entries
步驟1控制層根據網絡請求制定新的路由策略。
步驟2根據新路由策略生成流表項集合。
步驟3格式化流表項集的相關屬性信息成一條交易,并打包發送給區塊鏈系統。
步驟4區塊鏈系統采用基于投票的共識機制對交易進行共識驗證。
步驟5將驗證結果返回給控制層。
步驟6只有驗證通過的流表項集才能被下發到數據層并寫入區塊,否則取消整個流表項集的下發。
表2 和表3 給出了RCDB-SDN 區塊結構和交易結構。區塊結構由區塊頭和區塊體組成,區塊頭包含對區塊進行描述的屬性,區塊體是存儲的交易,交易所包含的元素對應流表項集的特征屬性,它們都是在控制層對所要下發的流表項集進行解析時獲得。

表2 區塊結構Table 2 Block structure

表3 交易結構Table 3 Transaction structure
控制層根據應用層的請求所制定的路由策略對應數據層的流表項,一組具有相同源IP 和目的IP 的流表項可以表示一條轉發路徑。新的轉發路徑添加到現有網絡的轉發路徑后,可能會帶來路徑重疊和路徑環路問題。
1)路徑重疊:當新的轉發路徑與網絡中已有的轉發路徑重疊,且兩條路徑對應的流表項具有相同的轉發效果時,會造成數據層交換機中的流表項存儲冗余。
2)路徑環路:當新的轉發路徑加入現有網絡后,與已有的轉發路徑構成轉發路徑環路,并且在導致成環的關鍵節點上,數據包匹配新制定的流表項,引起網絡中數據包的轉發環路。
此外,傳統的檢測方案通過比較實際轉發路徑與控制層預設轉發路徑來檢測路徑重疊和路徑環路問題,需要將流表項下發到數據層后再進行驗證,增加了控制層與數據層之間的交互,從而給網絡帶來額外的處理能耗。
基于PBFT 共識機制,RCDB-SDN 的區塊鏈節點對需要下發的流表項集進行一致性驗證。將網絡中的所有控制器節點分為請求節點Q 和驗證節點V,請求節點為收到應用層網絡請求并制定新的路由策略及下發的節點;驗證節點是對請求節點所要下發的路由策略進行一致性驗證的所有剩余節點。從驗證節點中隨機選取一個節點作為主節點M,對所要下發的流表項集進行一致性驗證和投票的流程如圖3 所示。

圖3 基于投票的流表項共識驗證Fig.3 Consensus verification of flow entries based on voting
請求節點解析流表項集得到其中每條流表項的特征屬性(包括源地址、目的地址、優先級、交換機ID、流表ID 等)對應表3 中的交易元素,將所有流表項的特征屬性格式轉化成一條交易Tx。主節點將Tx 打包廣播給所有區塊鏈節點,每個節點檢索存儲的數據進行一致性驗證。在對區塊鏈數據進行檢索時,為降低遍歷所有數據的耗時,將區塊鏈所有存儲的區塊按節點數量進行平均劃分。每個節點只在劃分到的區塊中進行檢索,所有節點并行地檢索區塊鏈數據,可以加快遍歷整個區塊鏈并減少時延。
根據一致性驗證的結果,各驗證節點將投票信息反饋給請求節點。若驗證失敗,則返回false,為反對票;否則返回true,為同意票。按照少數服從多數的原則,同意票數不少于半數時,判定該交易有效,請求節點此次獲得向區塊鏈中寫區塊的權利;否則該交易無效,請求節點此次無權寫區塊。請求節點根據投票結果來決策是否下發流表項集。若下發,則在下發的同時將流表項集格式化后,打包并寫入區塊鏈。
在區塊鏈系統中,每個節點根據自己檢索的數據對交易進行一致性驗證,再按照各自的驗證結果投票,匯總投票結果之后返回控制層進行決策。在一致性檢測中,RCDB-SDN 方案分為針對路徑重疊和路徑環路兩部分。
對于路徑重疊的檢測,即在檢測到完全重疊的轉發路徑時,驗證流表項特征屬性的相關性,判斷是否會造成流表存儲冗余[25]。對于路徑環路的檢測,采用環路檢測算法檢測構建的有向圖是否存在環路,并在關鍵節點上驗證流表項特征屬性的相關性。若路徑環路存在,則判斷其是否會造成網絡轉發環路。
在構建 轉發路徑時,節 點Node=,其中,s、pi、po、nextNode 分別表示交換機ID、入端口、出端口、當前節點的下一跳節點。一條轉發路徑P的表示形式為P={Node1,Node2,…,Noden}。
3.2.1 路徑重疊檢測
由于兩條轉發路徑完全重疊,在路徑上各節點中的流表項具有相同的轉發效果,因此驗證兩條轉發路徑的轉發效果是否一致,只須驗證兩條路徑上輸出端節點中的流表項。
控制層對制定的流表項集R進行解析得到特征屬性,結合區塊鏈系統的共識機制對其進行一致性驗證,確保R的下發不會造成流表項的存儲冗余。路徑重疊檢測的流程如圖4 所示,具體步驟如下:

圖4 路徑重疊檢測Fig.4 Detection of path overlap
步驟1構建轉發路徑。控制層根據上層應用下發的網絡請求制定路由策略,生成流表項集R并進行解析,將獲得的特征屬性格式化成交易Tx,打包發送到區塊鏈系統。在區塊鏈中查找與R途經相同交換機的流表項集R',獲取并結合對應流表項集的特征屬性,構建兩條轉發路徑P和P'。
步驟2一致性檢測。檢測P和P'是否相同。若兩者相同,則存在路徑重疊,此時返回路徑輸出端節點NodeT。只有當P和P'滿足式(1)時,才存在這樣一個輸出端節點NodeT,其中num 表示路徑中所包含的節點數量。
步驟3流表項檢測。若NodeT 存在,則在兩條轉發路徑上的NodeT 節點所對應的交換機中存在流表 項r和r'(r為新制 定的流表項,r'為交換 機已有 的流表項),通過函數(fr,r')驗證兩者是否會引起存儲冗余。當r和r'滿足式(2)時,函數返回值為true,表明會引起流表項存儲冗余(用PO 表示)。
步驟4若驗證結果表明不會引起流表項存儲冗余,則下發R;反之取消R的下發。
在上述檢測流程中,基于解析得到的流表項特征屬性,通過區塊鏈系統的檢索,在存儲的區塊中找到與其相對應的流表項屬性并構建轉發路徑。轉發路徑的構建以及輸出端節點上的流表項驗證是路徑重疊檢測的關鍵。
3.2.2 路徑環路檢測
控制層對生成的流表項集R進行解析得到特征屬性,借助有向圖的構建和環路檢測,結合區塊鏈系統的共識機制完成一致性驗證,確保R的下發不會造成網絡中數據包轉發環路。路徑環路檢測的流程如圖5 所示,具體步驟如下:

圖5 路徑環路檢測Fig.5 Detection of path loop
步驟1構建有向圖。控制層根據上層應用下發的網絡請求制定路由策略,生成流表項集R并進行解析,將獲得的特征屬性格式化成交易Tx,打包發送到區塊鏈系統。在區塊鏈中查找和R途徑相同交換機的流表項集R',獲取對應的流表項集的特征屬性,結合R和R'的特征屬性,構建有向圖G。
步驟2有向圖G環路檢測。有向圖G= =e),其中,k和m分別表示V和E中節點和邊的數量。 步驟3確定環路關鍵節點KeyNode。若有向圖G存在環路,則表明兩組流表項集同時存在會導致路徑環路。因此,需要找出環路關鍵節點,在該節點的轉發操作會直接決定是否產生網絡轉發環路。 步驟4流表項字段相關性檢測。檢測節點KeyNode 所對應的交換機上流表項r和r',驗證兩者是否具有相關性,即r和r'的源IP 地址與目的IP 地址分別是否存在包含與被包含的情況。 步驟5匹配順序檢測。當多條流表項具有相同的優先級與不同的匹配域粒度時,會按照流表項添加的先后順序匹配。因此,若r和r'具有相關性,則進一步檢測兩者同時存在時,數據包匹配的優先次 序。通過函 數v(r,r')驗 證r和r',當兩者滿足式(4)時,函數返回值為true,表明會導致網絡轉發環路(用PL 表示)。 步驟6若驗證結果表明不會產生路徑環路,也不會引起網絡環路,則下發R;反之取消R的下發。 在上述檢測流程中:有向圖G的環路檢測是路徑環路檢測的關鍵所在,目的在于初步檢測是否有導致路徑環路存在的可能;流表項字段與匹配順序檢測則是驗證路徑環路的重要步驟。 總之,一致性檢測分為路徑重疊和路徑環路兩階段。前者通過構建轉發路徑進行比較,需要的存儲開銷與網絡中存在的重疊路徑數量有關;后者通過構建有向圖進行驗證,考慮與新制定的流表項集存在相關性的流表項集,存儲開銷較前者更大。 考慮到快速構建區塊鏈網絡的需求,選取Multichain[26]作為實驗的區塊鏈平臺。在初始化區塊鏈時,確保在沒有新的交易產生時,區塊鏈平臺不會自動添加區塊,以減少區塊鏈平臺在無區塊寫入時存儲空間的使用以及無效區塊的生成。實驗選用Ubuntu 作為系統平臺、Mininet 作為網絡模擬器及Opendaylight 作 為SDN 控制器。 基于Multichain 平臺和Mininet 模擬器構建RCDB-SDN 方案模型,使用20 個交換機(s1~s20),并依次劃分為5 個域(D1~D5),由5 個控制器(c1~c5)分管。在網絡運行期間,每當有新的流表項集生成時,在對應的控制器中將其格式化為一條交易并打包之后,廣播給其他控制器節點,向每個控制器節點發起驗證請求,其余控制器節點按照RCDB-SDN 方案進行檢測,并將結果反饋給初始發起請求的節點。 仿真實驗搭建的網絡采用圖6 中的數據中心網絡Fat-Tree[27]拓撲結構,并在控制層通過編寫腳本文件生成會造成路徑重疊和路徑環路的流表項集。流表項集的下發次數為200 和400(對每一次流表項集的下發都進行檢測),每類實驗分別有10 組,每組實驗分別在不同的域內以及域間模擬會造成影響的流表項集。取10 組實驗的平均值,評估當網絡中實際存在的流表項數量變化時,RCDB-SDN 方案對路徑重疊和路徑環路的檢測情況。在每組實驗所下發的流表項集中,實際會造成路徑重疊或者路徑環路的流表項集與實際不會造成影響的流表項集比例為1∶1。 圖6 仿真實驗平臺的Fat-Tree 網絡拓撲結構Fig.6 Fat-Tree network topology of simulation platform 在網絡中流表項集所對應的轉發路徑引發沖突的情形通常不會集中出現。因此,在模擬真實場景時,每次實驗中會生成路徑重疊和路徑環路的流表項集下發的時間和周期不固定。 選取精確率、誤檢率、查全率、漏檢率和消息傳遞次數等5 項指標對RCDB-SDN 進行評估。精確率指在檢測到的所有沖突結果中,真實沖突所占的比率。誤檢率指在實際不沖突的結果中,錯誤檢測成沖突的結果所占的比率;查全率指檢測出的真實沖突結果占全部真實沖突的比率;漏檢率指未檢測出的真實沖突占全部真實沖突的比率;消息傳遞次數用來統計控制層與數據層之間的消息傳遞。 在傳統的沒有引入區塊鏈技術的檢測方案WedgeTail[16]中,通過比較數據包的實際路徑與控制層的預設路徑之間的差異來檢測異常。將RCDBSDN 方案的路徑重疊和路徑環路兩部分檢測與WedgeTail 進行比較實驗。 4.3.1 路徑重疊檢測 路徑重疊檢測對比結果如圖7 所示。由圖7 可以看出,在分別下發200 次和400 次流表項集合的兩類實驗下,當現有網絡中的流表項總數在一定范圍內增長時,RCDB-SDN 結合區塊鏈技術對路徑重疊檢測的精確率和誤檢率整體上優于WedgeTail[16]。主要原因為RCDB-SDN 通過檢索區塊鏈存儲的所有流表項信息進行驗證,但由于分區檢索的緣故,一條轉發路徑對應的流表項可能被劃分到不同的節點進行驗證,導致檢測結果與實際結果不一致。在不同檢測次數下,區塊鏈存儲的流表項信息與網絡中實際生效的流表項之間存在的差異會對檢測的精確率產生影響。此外,對于RCDB-SDN 而言,檢測精確率和誤檢率受檢測次數增加的影響不明顯,反而隨著網絡中流表項數量的增加影響較明顯。隨著流表項總數的增加,在實際網絡中流表信息的刪除和更新會改變流表項數量,但區塊鏈系統中存儲的數據不會減少,因此區塊鏈存儲的流表項信息會與實際網絡中有效的流表項之間出現差異,導致RCDBSDN 的精確率有所下降,誤檢率有所上升,但整體上RCDB-SDN 的精確率依然高于WedgeTail,誤檢率低于WedgeTail。 圖7 路徑重疊檢測對比Fig.7 Comparison of path overlap detection 路徑重疊檢測的查全率和漏檢率如表4 所示。由表4 可以看出,檢測次數對RCDB-SDN 和WedgeTail 兩種方案的查全率和漏檢率影響不大,在分別下發200 次和400 次流表項集合的兩類實驗下的實驗結果大致相近,但是前者的查全率高于后者,且隨著流表項數量增多而愈發顯著。同時,通過對比消息傳遞次數(如圖8 所示)可以看出:WedgeTail在檢測到路徑重疊之后,需要反饋信息給控制器,然后由控制器再次下發指令消息刪除對應的流表項;RCDB-SDN 在流表項下發之前進行檢測,可以避免這一步驟,使控制層與數據層之間的消息傳遞次數更少。 表4 路徑重疊檢測的查全率和漏檢率Table 4 Recall and missed detection rate of path overlap detection 4.3.2 路徑環路檢測 路徑環路檢測對比結果如圖9 所示。由圖9 可以看出,當網絡中的流表項總數在一定范圍內增長時,在分別下發200 次和400 次流表項集合的兩類實驗下,RCDB-SDN 對于路徑環路檢測的精確率和誤檢率整體 上優于WedgeTail[16]。主要原因為RCDBSDN 對區塊鏈存儲的數據分區之后進行檢索,在提高檢索速度的同時,不同的節點可能只對一條轉發路徑所對應的流表項集中的一部分流表項進行驗證,驗證不完全導致檢測結果與實際情況出現偏差。隨著時間推移,當檢測次數增加之后,檢測結果與實際情況不一致的可能性會有所增加。此外,對于RCDBSDN 而言,路徑環路檢測次數的增加對精確率和誤檢率有一定影響,但網絡中流表項總量對精確率和誤檢率的影響更大。隨著流表項總數的增加,在RCDBSDN 中,區塊鏈存儲的流表項信息會持續增加,但是實際網絡中的流表項由于刪除和更新等操作,與區塊鏈存儲的數據會逐步出現差異,因此RCDB-SDN 的精確率有所下降而誤檢率有所上升,但整體上其精確率依然高于WedgeTail,誤檢率低于WedgeTail。 圖9 路徑環路檢測對比Fig.9 Comparison of path loop detection 路徑環路檢測的查全率和漏檢率如表5 所示。由表5 可以看出,在查全率和漏檢率上,RCDB-SDN和WedgeTail 兩種方案受檢測次數的影響較小,在分別下發200 次和400 次流表項集合的兩類實驗下的實驗結果大致相近,但是前者的查全率高于后者。 表5 路徑環路檢測的查全率和漏檢率Table 5 Recall and missed detection rate of path loop detection 路徑環路檢測的消息傳遞次數如圖10 所示。由圖10 可以看出,相較于WedgeTail 在檢測到路徑環路后反饋信息給控制器,并下發指令刪除對應的流表項,RCDB-SDN 在流表項下發前就進行路徑環路檢測,可以在出現路徑環路時,有效減少控制層與數據層之間的消息傳遞次數。 圖10 路徑環路檢測的消息傳遞次數Fig.10 Messaging times during path loop detection 綜合兩部分檢測的實驗結果來看,由于設計的RCDB-SDN 方案在檢測中對區塊鏈進行了劃分,因此由不同的節點各自負責區塊鏈存儲的一部分數據。當實際會引起沖突(路徑重疊或路徑環路)的流表項集恰好被劃分到不同的節點進行檢測時,則被檢測為不會引起沖突的可能性較大。 另外,由于真實網絡中的流表不斷更新,被刪除的流表項卻依然存儲在區塊鏈中,在借助區塊鏈對實際上不會引起沖突的流表項集進行一致性驗證時,也可能被錯誤地檢測為會引起網絡路由信息沖突,導致檢測結果的誤差。 SDN 所具有的轉控分離的特點使其可以靈活高效地處理網絡流量,但當SDN 采用多控制器結構時,控制層根據應用層網絡請求制定路由策略,生成的流表項可能會帶來流表項存儲冗余和網絡流量轉發環路等問題。本文提出的RCDB-SDN 方案結合區塊鏈可追溯、不可篡改的特性,引入共識機制檢測路由策略的一致性,并通過仿真實驗驗證了RCDB-SDN 方案對路徑重疊和路徑環路檢測的可行性與有效性。后續將進一步優化檢測方案,當區塊鏈系統存儲的流表項信息與實際網絡存儲的有效流表項信息之間的差異越來越大時,通過改進區塊鏈系統的檢索方式,盡可能地提高檢測結果與實際網絡之間的一致性。4 實驗與評估
4.1 實驗平臺與設置

4.2 評價指標
4.3 結果分析





5 結束語