本發(fā)明涉及一種流規(guī)則沖突檢測方法,特別是涉及一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)規(guī)模與流量的爆發(fā)式增長,以ip為核心的傳統(tǒng)網(wǎng)絡(luò)體系架構(gòu)在網(wǎng)絡(luò)新協(xié)議的創(chuàng)新發(fā)展及網(wǎng)絡(luò)技術(shù)的演進(jìn)出現(xiàn)了瓶頸。軟件定義網(wǎng)絡(luò)(softwaredefinednetworking,簡稱sdn),將傳統(tǒng)封閉的網(wǎng)絡(luò)體系解耦為數(shù)據(jù)平面、控制平面和應(yīng)用平面,實現(xiàn)了網(wǎng)絡(luò)的在邏輯上集中控制與管理。sdn的突出特點是開放性和可編程性,可加快網(wǎng)絡(luò)創(chuàng)新協(xié)議的部署和實施,目前已在網(wǎng)絡(luò)虛擬化、數(shù)據(jù)中心網(wǎng)絡(luò)、無線局域網(wǎng)和云計算等領(lǐng)域得到應(yīng)用。
控制程序指定的流規(guī)則被安裝的openflow交換機(jī)流表中,流規(guī)則包括用于匹配數(shù)據(jù)分組的匹配域和和對應(yīng)的動作集合。但是,一個數(shù)據(jù)包可能會被多個流表項匹配,因為流表項的匹配域可能是通配符(匹配任意值)或者是位掩碼。natarajan等人提出了兩種沖突檢測的方法,即使用混合哈希樹結(jié)構(gòu)來代表流表并采用分治策略確定沖突流,以及使用基于本體的邏輯推理系統(tǒng)來表示并推斷沖突的流表項。不同于這兩種沖突檢測方法,bruno等人提出使用一階邏輯來表示流沖突規(guī)則,并將這些規(guī)則放到運(yùn)行prolog引擎的邏輯代理中。這種方式可以在控制器中實時的進(jìn)行流規(guī)則沖突檢測,節(jié)省交換機(jī)的資源以及減少openflow網(wǎng)絡(luò)中的配置錯誤。son等人提出了一種控制器擴(kuò)展軟件fortnox,能夠監(jiān)測并協(xié)調(diào)潛在的流規(guī)則沖突,提供基于角色認(rèn)證和安全約束執(zhí)行策略,允許nox控制器采取一種穩(wěn)定的沖突分析策略實時監(jiān)測流規(guī)則沖突,杜絕有惡意應(yīng)用、想要插入惡意流規(guī)則“陷害”正常應(yīng)用的安全流規(guī)則等類現(xiàn)象?,F(xiàn)有技術(shù)中的沖突檢測的方法使用混合哈希樹結(jié)構(gòu)來代表流表并采用分治策略確定沖突流,以及使用基于本體的邏輯推理系統(tǒng)來表示并推斷沖突的流表項,以及使用一階邏輯來表示流沖突規(guī)則。傳統(tǒng)方法中一個數(shù)據(jù)包可能會被多個流表項匹配,可能誤報沒有發(fā)生沖突的規(guī)則。
現(xiàn)有技術(shù)中的沖突檢測的方法使用混合哈希樹結(jié)構(gòu)來代表流表并采用分治策略確定沖突流,以及使用基于本體的邏輯推理系統(tǒng)來表示并推斷沖突的流表項,或使用一階邏輯來表示流沖突規(guī)則。傳統(tǒng)方法中匹配過程里,一個數(shù)據(jù)包可能會被多個流表項匹配,并且可能誤報沒有發(fā)生沖突的規(guī)則,存在匹配錯誤及誤報流規(guī)則動作沖突的技術(shù)問題。
技術(shù)實現(xiàn)要素:
鑒于以上現(xiàn)有技術(shù)存在匹配錯誤及誤報流規(guī)則動作沖突的技術(shù)問題,本發(fā)明的目的在于提供一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法,包括:
檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流;
構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項引發(fā)的沖突;
根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息;
分析流表項的流規(guī)則,判斷流規(guī)則是否適于組合;
若是,則解析組合的沖突并完成流規(guī)則的組合;
若否,則更新應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài)。
于本發(fā)明的一實施方式中,檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流,包括:過濾無效流表項;預(yù)設(shè)在交換機(jī)端口的流規(guī)則的安裝權(quán)限。
于本發(fā)明的一實施方式中,構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項的流規(guī)則是否存在沖突,包括:
將原始流規(guī)則的數(shù)據(jù)流匹配信息中的源ip地址作為別名規(guī)約樹的根節(jié)點;
按照構(gòu)造規(guī)約樹的預(yù)設(shè)邏輯構(gòu)造別名規(guī)約樹;
根據(jù)別名規(guī)約樹得出衍生流規(guī)則;
對比衍生流規(guī)則與原始流規(guī)則,得出規(guī)則對比結(jié)果;
根據(jù)規(guī)則對比結(jié)果,判斷要添加的流規(guī)則的動作種類與別名規(guī)約樹的當(dāng)前節(jié)點中的動作種類是否存在沖突。
于本發(fā)明的一實施方式中,根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息,包括:
遍歷所有流規(guī)則;
取流規(guī)則中動作種類為修改源ip地址的流規(guī)則,生成源地址修改集合;
遍歷原地址修改集合中的所有源地址修改流規(guī)則;
為每一源地址修改流規(guī)則匹配動作種類為修改目的ip地址的規(guī)則。
于本發(fā)明的一實施方式中,若是,則解析組合的沖突并完成新的流規(guī)則與原有流規(guī)則的組合,包括:
將源地址修改流規(guī)則與動作種類為修改目的ip地址的規(guī)則組合,得到組合流規(guī)則;
根據(jù)預(yù)設(shè)邏輯對組合流規(guī)則的每一數(shù)據(jù)流匹配信息取其中匹配范圍最小的取值作為當(dāng)前數(shù)據(jù)流匹配信息的取值,得到當(dāng)前最小范圍數(shù)據(jù)流匹配信息;
修改最小范圍數(shù)據(jù)流匹配信息,生成網(wǎng)絡(luò)更新規(guī)則;
以網(wǎng)絡(luò)更新規(guī)則匹配被更新流規(guī)則;
將被更新流規(guī)則包含的源ip地址修改為規(guī)約樹父節(jié)點中的ip地址。
于本發(fā)明的一實施方式中,一種基于別名規(guī)約樹的流規(guī)則沖突檢測系統(tǒng),包括:流表項檢查模塊、沖突識別模塊、數(shù)據(jù)流信息匹配模塊、組合判斷模塊、沖突解析組合模塊和網(wǎng)絡(luò)狀態(tài)更新模塊;流表項檢查模塊,用于檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流;沖突識別模塊,用于構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項引發(fā)的沖突,沖突識別模塊與流表項檢查模塊連接;數(shù)據(jù)流信息匹配模塊,用于根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息,數(shù)據(jù)流信息匹配模塊與沖突識別模塊連接;組合判斷模塊,用于分析流表項的流規(guī)則,判斷流規(guī)則是否適于組合,組合判斷模塊與沖突識別模塊連接;沖突解析組合模塊,用于在流規(guī)則適于組合時,解析組合的沖突并完成流規(guī)則的組合,沖突解析組合模塊與沖突識別模塊連接,沖突解析組合模塊與組合判斷模塊連接;網(wǎng)絡(luò)狀態(tài)更新模塊,用于在流規(guī)則不適于組合時,更新應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài),網(wǎng)絡(luò)狀態(tài)更新模塊與組合判斷模塊連接。
于本發(fā)明的一實施方式中,流表項檢查模塊,包括:流表過濾模塊和端口權(quán)限模塊;流表過濾模塊,用于過濾無效流表項;端口權(quán)限模塊,用于預(yù)設(shè)在交換機(jī)端口的流規(guī)則的安裝權(quán)限,端口權(quán)限模塊與流表過濾模塊連接。
于本發(fā)明的一實施方式中,沖突識別模塊,包括:規(guī)約樹初始模塊、規(guī)約樹構(gòu)造模塊、衍生規(guī)則獲取模塊、規(guī)則對比模塊和沖突判斷模塊;規(guī)約樹初始模塊,用于將原始流規(guī)則的數(shù)據(jù)流匹配信息中的源ip地址作為別名規(guī)約樹的根節(jié)點;規(guī)約樹構(gòu)造模塊,用于按照構(gòu)造規(guī)約樹的預(yù)設(shè)邏輯構(gòu)造別名規(guī)約樹,規(guī)約樹構(gòu)造模塊與規(guī)約樹初始模塊連接;衍生規(guī)則獲取模塊,用于根據(jù)別名規(guī)約樹得出衍生流規(guī)則,衍生規(guī)則獲取模塊與規(guī)約樹構(gòu)造模塊連接;規(guī)則對比模塊,用于對比衍生流規(guī)則與原始流規(guī)則,得出規(guī)則對比結(jié)果,規(guī)則對比模塊與衍生規(guī)則獲取模塊連接;沖突判斷模塊,用于根據(jù)規(guī)則對比結(jié)果,判斷要添加的流規(guī)則的動作種類與別名規(guī)約樹的當(dāng)前節(jié)點中的動作種類是否存在沖突,沖突判斷模塊與規(guī)則對比模塊連接。
于本發(fā)明的一實施方式中,數(shù)據(jù)流信息匹配模塊,包括:流規(guī)則遍歷模塊、源地址修改聚集模塊、集合遍歷模塊和規(guī)則匹配模塊;流規(guī)則遍歷模塊,遍歷所有流規(guī)則;源地址修改聚集模塊,用于獲取流規(guī)則中動作種類為修改源ip地址的流規(guī)則,生成源地址修改集合,源地址修改聚集模塊與流規(guī)則遍歷模塊連接;集合遍歷模塊,用于遍歷原地址修改集合中的所有源地址修改流規(guī)則,集合遍歷模塊與源地址修改聚集模塊連接;規(guī)則匹配模塊,用于為每一源地址修改流規(guī)則匹配動作種類為修改目的ip地址的規(guī)則,規(guī)則匹配模塊與集合遍歷模塊連接。
于本發(fā)明的一實施方式中,沖突解析組合模塊,包括:組合規(guī)則模塊、最小范圍匹配模塊、更新規(guī)則生成模塊、更新匹配模塊和源地址修改模塊;組合規(guī)則模塊,用于將源地址修改流規(guī)則與動作種類為修改目的ip地址的規(guī)則組合,得到組合流規(guī)則;最小范圍匹配模塊,用于根據(jù)預(yù)設(shè)邏輯對組合流規(guī)則的每一數(shù)據(jù)流匹配信息取其中匹配范圍最小的取值作為當(dāng)前數(shù)據(jù)流匹配信息的取值,得到當(dāng)前最小范圍數(shù)據(jù)流匹配信息,最小范圍匹配模塊與組合規(guī)則模塊連接;更新規(guī)則生成模塊,用于修改最小范圍數(shù)據(jù)流匹配信息,生成網(wǎng)絡(luò)更新規(guī)則,更新規(guī)則生成模塊與最小范圍匹配模塊連接;更新匹配模塊,用于以網(wǎng)絡(luò)更新規(guī)則匹配被更新流規(guī)則,更新匹配模塊與更新規(guī)則生成模塊連接;源地址修改模塊,用于將被更新流規(guī)則包含的源ip地址修改為規(guī)約樹父節(jié)點中的ip地址,源地址修改模塊與更新匹配模塊連接。
如上所述,本發(fā)明提供的一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法及系統(tǒng),具有以下有益效果:。
綜上所述,本發(fā)明提供一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法及系統(tǒng),首先對要插入的流表項進(jìn)行必要的檢查,一些沒用的流表項應(yīng)該被過濾掉,確保應(yīng)用程序在物理交換機(jī)對應(yīng)的端口上有足夠的權(quán)限安裝流規(guī)則;然后,使用基于規(guī)約樹和字典樹的分治算法對流表項中的所有匹配域進(jìn)行快速匹配;最后,分析這些流規(guī)則沖突的動作,確認(rèn)它們是否可以被組合。如果可以被組合,就使用已有的組合操作符解析這類沖突;否則,對應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài)進(jìn)行更新,解決了傳統(tǒng)技術(shù)中的匹配錯誤及誤報流規(guī)則動作沖突的技術(shù)問題。
附圖說明
圖1顯示為本發(fā)明的一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法步驟示意圖。
圖2顯示為本發(fā)明的流表項過濾步驟示意圖。
圖3顯示為本發(fā)明的規(guī)約樹構(gòu)造判斷沖突示意圖。
圖4顯示為本發(fā)明的流規(guī)則匹配示意圖。
圖5顯示為本發(fā)明的流規(guī)則組合步驟示意圖。
圖6顯示為本發(fā)明的一種基于別名規(guī)約樹的流規(guī)則沖突檢測系統(tǒng)模塊示意圖。
圖7顯示為本發(fā)明的流表項檢查模塊示意圖。
圖8顯示為本發(fā)明的沖突識別模塊示意圖。
圖9顯示為本發(fā)明的數(shù)據(jù)流信息匹配模塊示意圖。
圖10顯示為本發(fā)明的沖突解析組合模塊示意圖。
元件標(biāo)號說明
1基于別名規(guī)約樹的流規(guī)則沖突檢測系統(tǒng)
11流表項檢查模塊
12沖突識別模塊
13數(shù)據(jù)流信息匹配模塊
14組合判斷模塊
15沖突解析組合模塊
16網(wǎng)絡(luò)狀態(tài)更新模塊
111流表過濾模塊
112端口權(quán)限模塊
121規(guī)約樹初始模塊
122規(guī)約樹構(gòu)造模塊
123衍生規(guī)則獲取模塊
124規(guī)則對比模塊
125沖突判斷模塊
131流規(guī)則遍歷模塊
132源地址修改聚集模塊
133集合遍歷模塊
134規(guī)則匹配模塊
151組合規(guī)則模塊
152最小范圍匹配模塊
153更新規(guī)則生成模塊
154更新匹配模塊
155源地址修改模塊
步驟標(biāo)號說明
圖1s1~s6
圖2s11~s12
圖3s21~s25
圖4s31~s34
圖5s51~s55
具體實施方式
以下由特定的具體實施例說明本發(fā)明的實施方式,熟悉此技術(shù)的人士可由本說明書所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點及功效。
請參閱圖1至圖10,須知,本說明書所附圖式所繪示的結(jié)構(gòu),均僅用以配合說明書所揭示的內(nèi)容,以供熟悉此技術(shù)的人士了解與閱讀,并非用以限定本發(fā)明可實施的限定條件,故不具技術(shù)上的實質(zhì)意義,任何結(jié)構(gòu)的修飾、比例關(guān)系的改變或大小的調(diào)整,在不影響本實用新型所能產(chǎn)生的功效及所能達(dá)成的目的下,均應(yīng)仍落在本實用新型所揭示的技術(shù)內(nèi)容所能涵蓋的范圍內(nèi)。同時,本說明書中所引用的如”上”、”下”、”左”、”右”、”中間”及”一”等的用語,亦僅為便于敘述的明了,而非用以限定本發(fā)明可實施的范圍,其相對關(guān)系的改變或調(diào)整,在無實質(zhì)變更技術(shù)內(nèi)容下,當(dāng)亦視為本發(fā)明可實施的范疇。
請參閱圖1,顯示為本發(fā)明的一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法步驟示意圖,如圖1所示,包括:
s1、檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流,在sdn(softwaredefinenetwork,軟件定義網(wǎng)絡(luò))中,流表是openflow對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)功能的抽象。openflow交換機(jī)中的數(shù)據(jù)轉(zhuǎn)發(fā)需要依賴設(shè)備中保存的二層mac地址轉(zhuǎn)發(fā)表或者三層ip地址路由表,在openflow交換機(jī)的表項中整合了網(wǎng)絡(luò)中各個層次的網(wǎng)絡(luò)配置信息;
s2、構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項引發(fā)的沖突,根據(jù)流規(guī)則匹配域及流規(guī)則動作種類構(gòu)造別名規(guī)約樹;
s3、根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息,根據(jù)基于規(guī)約樹的分治算法對流表項中的所有匹配域進(jìn)行快速匹配;
s4、分析流表項的流規(guī)則,判斷流規(guī)則是否適于組合,根據(jù)流表項中的匹配域以及流規(guī)則中的替換源ip地址或替換目的ip地址等修改動作,判斷流規(guī)則是否適合組合;
s5、若是,則解析組合的沖突并完成流規(guī)則的組合,根據(jù)構(gòu)建的別名規(guī)約樹衍生出的流規(guī)則與原始流規(guī)則進(jìn)行比對,識別和分析流規(guī)則間的動作沖突;
s6、若否,則更新應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài),在流規(guī)則不適于組合時更新sdn中的交換機(jī)等網(wǎng)絡(luò)設(shè)備的狀態(tài)信息。
請參閱圖2,顯示為本發(fā)明的流表項過濾步驟示意圖,如圖2所示,s1、檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流,包括:
s11、過濾無效流表項,在基于別名規(guī)約樹的流規(guī)則沖突檢測方法中,首先應(yīng)對要摻入的流表項進(jìn)行檢查,流表項中無效的流表項的存在會降低交換機(jī)端口流規(guī)則的安裝權(quán)限,需進(jìn)行必要的過濾;
s12、預(yù)設(shè)在交換機(jī)端口的流規(guī)則的安裝權(quán)限,在過濾掉無效的流表項后,在交換機(jī)端口安裝流表項權(quán)限提供,適于確保應(yīng)用程序在物理交換機(jī)對應(yīng)的端口上有足夠的權(quán)限安裝流規(guī)則。
請參閱圖3,顯示為本發(fā)明的規(guī)約樹構(gòu)造判斷沖突示意圖,如圖3所示,s2、構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項的流規(guī)則是否存在沖突,包括:
s21、將原始流規(guī)則的數(shù)據(jù)流匹配信息中的源ip地址作為別名規(guī)約樹的根節(jié)點,初始狀態(tài)下,當(dāng)別名規(guī)約樹被創(chuàng)建時,第一條流規(guī)則匹配域中的源ip地址作為別名規(guī)約樹的根節(jié)點,包含當(dāng)前的規(guī)則id,目的ip地址集合,以及對應(yīng)的動作,假設(shè)已有規(guī)則:a->c丟棄(丟棄源地址為a,目的地址為c的數(shù)據(jù)包),則其對應(yīng)的別名規(guī)約樹;
s22、按照構(gòu)造規(guī)約樹的預(yù)設(shè)邏輯構(gòu)造別名規(guī)約樹,如果流規(guī)則的動作中包含有替換源ip地址的set-field操作,則更新別名規(guī)約樹,將被替換的源ip地址作為父節(jié)點,替換者的源ip地址作為子節(jié)點;如果流規(guī)則的動作中包含有替換目的ip地址的set-field操作,則更新別名規(guī)約樹,添加替換的目的ip地址到當(dāng)前流規(guī)則在別名規(guī)約樹的節(jié)點以及祖先節(jié)點中的目的ip地址集合;如果流規(guī)則的動作中包含有轉(zhuǎn)發(fā)或者丟棄的操作,則更新別名規(guī)約樹,將此動作添加到別名規(guī)約樹對應(yīng)的節(jié)點及其祖先節(jié)點中,例如要插入的規(guī)則集合為:1.a->dset(a=>b);2.b->dset(d=>c);3.b->c轉(zhuǎn)發(fā);
s23、根據(jù)別名規(guī)約樹得出衍生流規(guī)則,按照上述邏輯構(gòu)造別名二叉樹,得出衍生流規(guī)則,其對應(yīng)的別名規(guī)約樹的構(gòu)造過程分別為:插入規(guī)則1,插入規(guī)則2,插入規(guī)則3,其衍生的規(guī)則為a->c轉(zhuǎn)發(fā)(轉(zhuǎn)發(fā)源地址為a,目的地址為c的數(shù)據(jù)包),與已有規(guī)則沖突;
s24、對比衍生流規(guī)則與原始流規(guī)則,得出規(guī)則對比結(jié)果;
s25、根據(jù)規(guī)則對比結(jié)果,判斷要添加的流規(guī)則的動作種類與別名規(guī)約樹的當(dāng)前節(jié)點中的動作種類是否存在沖突,在構(gòu)建別名規(guī)約樹的過程中,如果發(fā)現(xiàn)要添加的流規(guī)則的動作與別名規(guī)約樹的當(dāng)前節(jié)點中的動作沖突,則認(rèn)為當(dāng)前要插入的規(guī)則與流表中已有的規(guī)則發(fā)生沖突。
請參閱圖4,顯示為本發(fā)明的流規(guī)則匹配示意圖,如圖4所示,s3、根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息,包括:
s31、遍歷所有流規(guī)則,算法的輸入為流表中已有的規(guī)則集合rs、動作為設(shè)置源ip地址的規(guī)則集合srciprs、動作為設(shè)置目的ip地址的規(guī)則集合dstiprs、動作為為轉(zhuǎn)發(fā)或丟棄的規(guī)則集合otherrs,輸出為新增加的流規(guī)則的集合addrules;
s32、取流規(guī)則中動作種類為修改源ip地址的流規(guī)則,生成源地址修改集合,遍歷動作為設(shè)置源ip地址的規(guī)則集合srciprs;
s33、遍歷原地址修改集合中的所有源地址修改流規(guī)則,循環(huán)遍歷集合srciprs;
s34、為每一源地址修改流規(guī)則匹配動作種類為修改目的ip地址的規(guī)則,將集合dstiprs與集合rs[srcid]中的流規(guī)則進(jìn)行匹配,將動作為轉(zhuǎn)發(fā)或丟棄的流規(guī)則集otherrs與rs[srcid]進(jìn)行匹配得到集合othersetdstips,該集合中為匹配后的流規(guī)則。
請參閱圖5,顯示為本發(fā)明的流規(guī)則組合步驟示意圖,如圖5所示,s5、若是,則解析組合的沖突并完成流規(guī)則的組合,包括:
s51、將源地址修改流規(guī)則與動作種類為修改目的ip地址的規(guī)則組合,得到組合流規(guī)則,組合地址修改流規(guī)則集合rs[id]與動作種類為修改目的ip地址的規(guī)則rs[dstips]組合;
s52、根據(jù)預(yù)設(shè)邏輯對組合流規(guī)則的每一數(shù)據(jù)流匹配信息取其中匹配范圍最小的取值作為當(dāng)前數(shù)據(jù)流匹配信息的取值,得到當(dāng)前最小范圍數(shù)據(jù)流匹配信息;
s53、修改最小范圍數(shù)據(jù)流匹配信息,生成網(wǎng)絡(luò)更新規(guī)則,將這兩種規(guī)則的匹配域組合起來,對規(guī)則中的每一個匹配域,取其中匹配范圍最小的取值作為當(dāng)前匹配域的取值;
s54、以網(wǎng)絡(luò)更新規(guī)則匹配被更新流規(guī)則,將匹配域的目的ip修改為第二條規(guī)則匹配域的目的ip,生成新的規(guī)則;
s55、將被更新流規(guī)則包含的源ip地址修改為規(guī)約樹父節(jié)點中的ip地址,去匹配其他的規(guī)則,將匹配到規(guī)則源ip地址修改為規(guī)約樹父節(jié)點中的ip地址,這些規(guī)則即為新增加的規(guī)則集合。
請參閱圖6,顯示為本發(fā)明的一種基于別名規(guī)約樹的流規(guī)則沖突檢測系統(tǒng)模塊示意圖,如圖6所示,一種基于別名規(guī)約樹的流規(guī)則沖突檢測系統(tǒng),包括:流表項檢查模塊11、沖突識別模塊12、數(shù)據(jù)流信息匹配模塊13、組合判斷模塊14、沖突解析組合模塊15和網(wǎng)絡(luò)狀態(tài)更新模塊16;流表項檢查模塊11,用于檢查插入流表項,流表項對應(yīng)數(shù)據(jù)包發(fā)送的數(shù)據(jù)流,在sdn(softwaredefinenetwork,軟件定義網(wǎng)絡(luò))中,流表是openflow對網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)轉(zhuǎn)發(fā)功能的抽象。openflow交換機(jī)中的數(shù)據(jù)轉(zhuǎn)發(fā)需要依賴設(shè)備中保存的二層mac地址轉(zhuǎn)發(fā)表或者三層ip地址路由表,在openflow交換機(jī)的表項中整合了網(wǎng)絡(luò)中各個層次的網(wǎng)絡(luò)配置信息;沖突識別模塊12,用于構(gòu)造別名規(guī)約樹,根據(jù)別名規(guī)約樹識別插入流表項引發(fā)的沖突,沖突識別模塊12與流表項檢查模塊連接11,根據(jù)流規(guī)則匹配域及流規(guī)則動作種類構(gòu)造別名規(guī)約樹;數(shù)據(jù)流信息匹配模塊13,用于根據(jù)別名規(guī)約樹,以預(yù)設(shè)邏輯匹配流表項中的數(shù)據(jù)流匹配信息,數(shù)據(jù)流信息匹配模塊13與沖突識別模塊12連接,根據(jù)基于規(guī)約樹的分治算法對流表項中的所有匹配域進(jìn)行快速匹配;組合判斷模塊14,用于分析流表項的流規(guī)則,判斷流規(guī)則是否適于組合,組合判斷模塊14與沖突識別模塊連接12,根據(jù)流表項中的匹配域以及流規(guī)則中的替換源ip地址或替換目的ip地址等修改動作,判斷流規(guī)則是否適合組合;沖突解析組合模塊15,用于在流規(guī)則適于組合時,解析組合的沖突并完成流規(guī)則的組合,沖突解析組合模塊15與沖突識別模塊12連接,沖突解析組合模塊15與組合判斷模塊14連接,根據(jù)構(gòu)建的別名規(guī)約樹衍生出的流規(guī)則與原始流規(guī)則進(jìn)行比對,識別和分析流規(guī)則間的動作沖突;網(wǎng)絡(luò)狀態(tài)更新模塊16,用于在流規(guī)則不適于組合時,更新應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài),網(wǎng)絡(luò)狀態(tài)更新模塊16與組合判斷模塊14連接。
請參閱圖7,顯示為本發(fā)明的流表項檢查模塊示意圖,如圖7所示,流表項檢查模塊11,包括:流表過濾模塊111和端口權(quán)限模塊112;流表過濾模塊111,用于過濾無效流表項,首先應(yīng)對要摻入的流表項進(jìn)行檢查,流表項中無效的流表項的存在會降低交換機(jī)端口流規(guī)則的安裝權(quán)限,需進(jìn)行必要的過濾;端口權(quán)限模塊112,用于預(yù)設(shè)在交換機(jī)端口的流規(guī)則的安裝權(quán)限,在過濾掉無效的流表項后,在交換機(jī)端口安裝流表項權(quán)限提供,適于確保應(yīng)用程序在物理交換機(jī)對應(yīng)的端口上有足夠的權(quán)限安裝流規(guī)則,端口權(quán)限模塊112與流表過濾模塊111連接。
請參閱圖8,顯示為本發(fā)明的沖突識別模塊示意圖,如圖8所示,沖突識別模塊12,包括:規(guī)約樹初始模塊121、規(guī)約樹構(gòu)造模塊122、衍生規(guī)則獲取模塊123、規(guī)則對比模塊124和沖突判斷模塊125;規(guī)約樹初始模塊121,用于將原始流規(guī)則的數(shù)據(jù)流匹配信息中的源ip地址作為別名規(guī)約樹的根節(jié)點,初始狀態(tài)下,當(dāng)別名規(guī)約樹被創(chuàng)建時,第一條流規(guī)則匹配域中的源ip地址作為別名規(guī)約樹的根節(jié)點;規(guī)約樹構(gòu)造模塊122,用于按照構(gòu)造規(guī)約樹的預(yù)設(shè)邏輯構(gòu)造別名規(guī)約樹,規(guī)約樹構(gòu)造模塊122與規(guī)約樹初始模塊121連接,如果流規(guī)則的動作中包含有替換源ip地址的set-field操作,則更新別名規(guī)約樹,將被替換的源ip地址作為父節(jié)點,替換者的源ip地址作為子節(jié)點;如果流規(guī)則的動作中包含有替換目的ip地址的set-field操作,則更新別名規(guī)約樹,添加替換的目的ip地址到當(dāng)前流規(guī)則在別名規(guī)約樹的節(jié)點以及祖先節(jié)點中的目的ip地址集合;如果流規(guī)則的動作中包含有轉(zhuǎn)發(fā)或者丟棄的操作,則更新別名規(guī)約樹,將此動作添加到別名規(guī)約樹對應(yīng)的節(jié)點及其祖先節(jié)點中;衍生規(guī)則獲取模塊123,用于根據(jù)別名規(guī)約樹得出衍生流規(guī)則,衍生規(guī)則獲取模塊123與規(guī)約樹構(gòu)造模塊122連接;規(guī)則對比模塊124,用于對比衍生流規(guī)則與原始流規(guī)則,得出規(guī)則對比結(jié)果,規(guī)則對比模塊124與衍生規(guī)則獲取模塊123連接;沖突判斷模塊125,用于根據(jù)規(guī)則對比結(jié)果,判斷要添加的流規(guī)則的動作種類與別名規(guī)約樹的當(dāng)前節(jié)點中的動作種類是否存在沖突,判斷要添加的流規(guī)則的動作種類與別名規(guī)約樹的當(dāng)前節(jié)點中的動作種類是否存在沖突,在構(gòu)建別名規(guī)約樹的過程中,如果發(fā)現(xiàn)要添加的流規(guī)則的動作與別名規(guī)約樹的當(dāng)前節(jié)點中的動作沖突,則認(rèn)為當(dāng)前要插入的規(guī)則與流表中已有的規(guī)則發(fā)生沖突,沖突判斷模塊125與規(guī)則對比模塊124連接。
請參閱圖9,顯示為本發(fā)明的數(shù)據(jù)流信息匹配模塊示意圖,如圖9所示,數(shù)據(jù)流信息匹配模塊13,包括:流規(guī)則遍歷模塊131、源地址修改聚集模塊132、集合遍歷模塊133和規(guī)則匹配模塊134;流規(guī)則遍歷模塊131,遍歷所有流規(guī)則;源地址修改聚集模塊132,用于獲取流規(guī)則中動作種類為修改源ip地址的流規(guī)則,生成源地址修改集合,源地址修改聚集模塊132與流規(guī)則遍歷模塊131連接,遍歷動作為設(shè)置源ip地址的規(guī)則集合srciprs;集合遍歷模塊133,用于遍歷原地址修改集合中的所有源地址修改流規(guī)則,循環(huán)遍歷集合srciprs,集合遍歷模塊133與源地址修改聚集模塊132連接;規(guī)則匹配模塊134,用于為每一源地址修改流規(guī)則匹配動作種類為修改目的ip地址的規(guī)則,將集合dstiprs與集合rs[srcid]中的流規(guī)則進(jìn)行匹配,將動作為轉(zhuǎn)發(fā)或丟棄的流規(guī)則集otherrs與rs[srcid]進(jìn)行匹配得到集合othersetdstips,該集合中為匹配后的流規(guī)則,規(guī)則匹配模塊134與集合遍歷模塊133連接。
請參閱圖10,顯示為本發(fā)明的沖突解析組合模塊示意圖,如圖10所示,沖突解析組合模塊15,包括:組合規(guī)則模塊151、最小范圍匹配模塊152、更新規(guī)則生成模塊153、更新匹配模塊154和源地址修改模塊155;組合規(guī)則模塊151,用于將源地址修改流規(guī)則與動作種類為修改目的ip地址的規(guī)則組合,得到組合流規(guī)則,組合地址修改流規(guī)則集合rs[id]與動作種類為修改目的ip地址的規(guī)則rs[dstips]組合;最小范圍匹配模塊152,用于根據(jù)預(yù)設(shè)邏輯對組合流規(guī)則的每一數(shù)據(jù)流匹配信息取其中匹配范圍最小的取值作為當(dāng)前數(shù)據(jù)流匹配信息的取值,得到當(dāng)前最小范圍數(shù)據(jù)流匹配信息,最小范圍匹配模塊152與組合規(guī)則模塊151連接;更新規(guī)則生成模塊153,用于修改最小范圍數(shù)據(jù)流匹配信息,生成網(wǎng)絡(luò)更新規(guī)則,將這兩種規(guī)則的匹配域組合起來,對規(guī)則中的每一個匹配域,取其中匹配范圍最小的取值作為當(dāng)前匹配域的取值,更新規(guī)則生成模塊153與最小范圍匹配模塊152連接;更新匹配模塊154,用于以網(wǎng)絡(luò)更新規(guī)則匹配被更新流規(guī)則,然后將匹配域的目的ip修改為第二條規(guī)則匹配域的目的ip,生成新的規(guī)則,更新匹配模塊154與更新規(guī)則生成模塊153連接;源地址修改模塊155,用于將被更新流規(guī)則包含的源ip地址修改為規(guī)約樹父節(jié)點中的ip地址,去匹配其他的規(guī)則,將匹配到規(guī)則源ip地址修改為規(guī)約樹父節(jié)點中的ip地址,這些規(guī)則即為新增加的規(guī)則集合,源地址修改模塊155與更新匹配模塊154連接。
綜上所述,本發(fā)明提供的一種基于別名規(guī)約樹的流規(guī)則沖突檢測方法及系統(tǒng),具有以下有益效果:本發(fā)明克服已有技術(shù)的不足,提出了一種規(guī)則沖突檢測的分治算法,能夠準(zhǔn)確地檢測防火墻等應(yīng)用程序下發(fā)的策略是否被其他程序直接或間接違反,沒用的流表項應(yīng)該被過濾掉,確保應(yīng)用程序在物理交換機(jī)對應(yīng)的端口上有足夠的權(quán)限安裝流規(guī)則;然后,使用基于規(guī)約樹和字典樹的分治算法對流表項中的所有匹配域進(jìn)行快速匹配;最后,分析這些流規(guī)則沖突的動作,確認(rèn)它們是否可以被組合。如果可以被組合,就使用已有的組合操作符解析這類沖突;否則,對應(yīng)用程序所讀取的網(wǎng)絡(luò)狀態(tài)進(jìn)行更新,解決了傳統(tǒng)技術(shù)中的匹配錯誤及誤報流規(guī)則動作沖突的技術(shù)問題,具有很高的商業(yè)價值和實用性。