本發(fā)明涉及一種互聯(lián)網(wǎng)技術(shù),具體涉及一種sdn網(wǎng)絡(luò)中支持隱私保護(hù)的多域qos路徑計算方法。
背景技術(shù):
與傳統(tǒng)網(wǎng)絡(luò)架構(gòu)不同,sdn將控制平面與轉(zhuǎn)發(fā)平面解耦合,增加了sdn控制器。一般網(wǎng)絡(luò)使用一個控制器就能完成相應(yīng)的設(shè)備管理和網(wǎng)絡(luò)控制的功能,在性能上不會產(chǎn)生明顯的影響,但是對于一個大規(guī)模的數(shù)據(jù)中心網(wǎng)絡(luò)、園區(qū)網(wǎng)來說,存在若干個域,單一的控制器影響控制器與交換機(jī)之間的信息交互,從而降低了網(wǎng)絡(luò)的性能,所以需要擴(kuò)展控制器的數(shù)量,用多個控制器物理分布,邏輯集中管理網(wǎng)絡(luò)。多控制器能夠解決網(wǎng)絡(luò)的性能提升和擴(kuò)展問題,但仍存在一定的問題。
不同域可能屬于不同的經(jīng)濟(jì)體或運(yùn)營商,不能使控制器管理的自治域之間網(wǎng)絡(luò)信息的平等共享,怎樣實(shí)現(xiàn)不同域之間網(wǎng)絡(luò)信息的平等通信成為了sdn多域通信亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:本發(fā)明的目的在于解決現(xiàn)有技術(shù)中存在的不足,提供一種sdn網(wǎng)絡(luò)中支持隱私保護(hù)的多域qos路徑計算方法。
技術(shù)方案:本發(fā)明的一種sdn網(wǎng)絡(luò)中支持隱私保護(hù)的多域qos路徑計算方法,依次包括以下步驟:
(1)sdn控制器向密鑰管理服務(wù)器申請認(rèn)證,并獲得密鑰;
(2)sdn控制器間交換基礎(chǔ)網(wǎng)絡(luò)信息,包括控制器id、ip地址、版本號和負(fù)責(zé)的ip地址段;
(3)計算最小時延路徑;
(4)計算最小丟包率路徑;
(5)計算最大帶寬路徑;
(6)各sdn控制器間采用安全多方計算協(xié)議計算多約束qos路徑;
(7)源sdn控制器通知qos路徑經(jīng)過的域的控制器下發(fā)流表至sdn交換。
進(jìn)一步的,所述步驟(1)的具體過程為:
(11)sdn控制器系統(tǒng)運(yùn)行前,為每個sdn控制器均配置證書;
(12)各個域的sdn控制器向pkg服務(wù)器發(fā)送證書,分別進(jìn)行身份認(rèn)證;
(13)pkg服務(wù)器對各個sdn控制器發(fā)送的證書進(jìn)行身份認(rèn)證,然后通過安全通道向相應(yīng)sdn控制器發(fā)送密鑰并公開其公鑰信息。
進(jìn)一步的,所述步驟(2)的具體過程為:
(21)各個sdn控制器與其鄰居sdn控制器通過信息交換模塊建立連接;
(22)每隔相應(yīng)的時間t,每個sdn控制器與它的鄰居sdn控制器交換其掌握的基礎(chǔ)網(wǎng)絡(luò)信息,包括控制器id、ip地址、版本號和負(fù)責(zé)的ip地址段,并建立控制器拓?fù)湟晥D。
進(jìn)一步的,所述步驟(3)的具體過程為:
(31)有qos流請求時,接收到qos流的交換機(jī)向相應(yīng)sdn控制器發(fā)送packet-in消息;
(32)sdn控制器解析packet-in消息,如果是本域主機(jī)間的主機(jī)通信,則直接根據(jù)域內(nèi)sdn控制器存儲的策略,sdn控制器向交換機(jī)下發(fā)流表;否則執(zhí)行步驟(33);
(33)sdn控制器首先產(chǎn)生一個隨機(jī)數(shù)r1,計算到達(dá)目的域所經(jīng)過的鄰居控制器,然后計算本域到達(dá)鄰域的時延delay,用sdn鄰域控制器的公鑰加密delay+r1,發(fā)送給鄰域控制器;
(34)鄰域控制器用私鑰解密后得到時延數(shù)據(jù),計算到達(dá)目的域經(jīng)過的鄰居控制器,并加上解密后的時延數(shù)據(jù)進(jìn)行傳送,直到到達(dá)目的域控制器;
(35)目的域控制器將接收到的數(shù)據(jù)解密后,用源控制器的公鑰加密后發(fā)送給源控制器;
(36)源控制器根據(jù)解密后的時延數(shù)據(jù)delay1,獲得路徑真實(shí)時延delay1-r1,計算出最優(yōu)時延路徑。
進(jìn)一步的,所述步驟(4)的具體過程為:
(41)sdn控制器首先產(chǎn)生一個隨機(jī)數(shù)r2,計算到達(dá)目的域經(jīng)過的鄰居控制器,然后計算本域到達(dá)鄰域的丟包率loss,用鄰域控制器的公鑰加密loss+r2,發(fā)送給鄰域控制器;
(42)鄰域控制器用私鑰解密后得到丟包率數(shù)據(jù),計算到達(dá)目的域經(jīng)過的鄰居控制器,并加上丟包率數(shù)據(jù)進(jìn)行傳送,直到到達(dá)目的域控制器;
(43)目的域控制器將數(shù)據(jù)解密后,用源控制器的公鑰加密后發(fā)送給sdn源控制器;
(44)源控制器根據(jù)解密的丟包率數(shù)據(jù)loss1,獲得路徑真實(shí)丟包率1-((1-loss1)/(1-(loss+r2)))(1-loss),計算出最優(yōu)丟包率路徑。
進(jìn)一步的,所述步驟(5)的具體過程為:
(51)sdn控制器計算到達(dá)目的域經(jīng)過的鄰居控制器,然后計算本域到達(dá)鄰域的最大帶寬bw,用鄰域控制器的公鑰加密bw;發(fā)送給鄰域控制器;
(52)鄰域控制器用私鑰解密后得到帶寬數(shù)據(jù),計算到達(dá)目的域經(jīng)過的鄰居控制器,并將自己到達(dá)鄰域的最大帶寬與當(dāng)前最大帶寬進(jìn)行比較,取兩者的最小值加密后發(fā)送,直到到達(dá)目的域控制器;
(53)目的域控制器將步驟(52)中的加密數(shù)據(jù)解密后,用源控制器的公鑰加密后發(fā)送給源控制器;
(54)源控制器根據(jù)解密后的整個路徑的最大帶寬bw1,選擇最大帶寬路徑。
進(jìn)一步的,所述步驟(6)的具體過程為:
(61)控制器產(chǎn)生兩個隨機(jī)數(shù)r3,r4,然后根據(jù)控制器拓?fù)湟晥D計算到達(dá)qos流的目的主機(jī)所在域的控制器需要經(jīng)過的鄰居控制器;
(62)用鄰居控制器的公鑰對qos流需要達(dá)到的時延+r3、丟包率+r4、帶寬以及三個參數(shù)在目標(biāo)函數(shù)f(a,b,c)=a*時延+b*丟包率+c*帶寬中的權(quán)重值a,b,c和從源主機(jī)到鄰居控制器按照目標(biāo)函數(shù)計算的最優(yōu)路徑的時延+r3、丟包率+r4和帶寬信息進(jìn)行加密,并將加密的數(shù)據(jù)發(fā)送給鄰居控制器,a+b+c=1,a、b和c都是正數(shù);
(63)鄰居控制器將接收到的信息進(jìn)行解密獲得時延delay、帶寬bw和丟包率loss,并根據(jù)目標(biāo)函數(shù)計算到達(dá)鄰域路徑的時延delay2、丟包率loss2、帶寬bw2,將delay+delay2,loss+loss2和min(bw,bw2)進(jìn)行加密,并將加密的三個數(shù)據(jù)發(fā)送給鄰居控制器,直到到達(dá)目的控制器;
(64)目的控制器獲得數(shù)據(jù)后,用源控制器的公鑰進(jìn)行加密發(fā)送給源控制器;
(65)源控制器根據(jù)上述目標(biāo)函數(shù)計算出最優(yōu)路徑。
進(jìn)一步的,所述步驟(7)的具體過程為:
(71)源控制器通知最優(yōu)路徑上的控制器為qos流下發(fā)流表;
(72)最優(yōu)路徑上的每個sdn控制器自行管理qos流經(jīng)過的域內(nèi)路徑。
有益效果:與現(xiàn)有的技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn):
(1)本發(fā)明在多域網(wǎng)絡(luò)中增加了pkg認(rèn)證中心,能夠?qū)Ω鱾€sdn域的控制器進(jìn)行認(rèn)證,防止出現(xiàn)假冒的惡意控制器。在各個控制器上增加了東西向組件實(shí)現(xiàn)了控制器間的信息交換并定時進(jìn)行更新,使得每個控制器能夠快速獲得對應(yīng)的控制器連接拓?fù)湟晥D。
(2)使用安全多方計算協(xié)議對控制器傳輸?shù)臅r延、帶寬、丟包率等數(shù)據(jù)進(jìn)行加密傳輸;不僅能夠保護(hù)本域網(wǎng)絡(luò)中的策略、拓?fù)?、時延、帶寬、丟包率等信息,還能計算出域之間的qos路徑。而且每個域內(nèi)的路徑以及路徑的時延、帶寬、丟包率,由各自域的控制器自行管理和保證,大大減小了對qos路徑管理的復(fù)雜度,增加了qos流的傳輸效率。
附圖說明
圖1為本發(fā)明的整體結(jié)構(gòu)圖;
圖2為實(shí)施例中提供的控制器連接拓?fù)鋱D;
圖3為本發(fā)明的功能實(shí)現(xiàn)示意圖;
圖4為本發(fā)明步驟(7)數(shù)據(jù)流圖。
具體實(shí)施方式
下面對本發(fā)明技術(shù)方案進(jìn)行詳細(xì)說明,但是本發(fā)明的保護(hù)范圍不局限于所述實(shí)施例。
實(shí)施例1:
如圖1所示,每個sdn控制器均需要向pkg密鑰管理中心進(jìn)行注冊認(rèn)證,pkg服務(wù)器通過安全通道向各個sdn控制器分配私鑰,每個sdn控制器通過we-bridge與其相鄰域的sdn控制器建立連接,連接完成后sdn控制器與其鄰居控制器交換網(wǎng)絡(luò)信息,包括控制器id、版本號、ip地址和負(fù)責(zé)的ip地址段。在完成基礎(chǔ)信息的交換后,每個sdn控制器擁有的網(wǎng)絡(luò)信息發(fā)生變化時需要向鄰居控制器發(fā)出通告。這樣每個sdn控制器就能擁有全局網(wǎng)絡(luò)的控制器以及其負(fù)責(zé)的ip地址段虛擬網(wǎng)絡(luò)拓?fù)鋱D。
如圖2所示,當(dāng)有流請求時,首先查看流的目的主機(jī)ip是否屬于本域,如果屬于本域則不需要與其他域的sdn控制器通信,可以直接執(zhí)行本地策略,控制器根據(jù)本地策略,向所經(jīng)過的交換機(jī)下發(fā)流表實(shí)現(xiàn)qos流的傳輸。
如圖3所示,sdn網(wǎng)絡(luò)中的c1控制器管理的域內(nèi)的主機(jī)需要與sdn網(wǎng)絡(luò)中的c5控制器管理的域內(nèi)的主機(jī)進(jìn)行qos路由。
計算最小時延路徑的具體流程如下:
(1)s1交換機(jī)中沒有與之匹配的流表,將從源地址ip到目的ip的數(shù)據(jù)包封裝成packet-in消息上傳到c1控制器,c1控制器根據(jù)擁有的全局控制器連接視圖,發(fā)現(xiàn)目的ip位于c5控制器管理的域內(nèi),從其鄰居c2控制器或者c3控制器管理的域都能到達(dá)控制器c5管理的域,接著c1控制器生成一個隨機(jī)數(shù)r,然后用c2的公鑰加密從c1的管理域到c2的管理域的時延與r的和encrypt(delay(s1->s4)+r),用c3的公鑰加密從c1的管理域到c3的管理域的時延與r的和encrypt(delay(s1->s8)+r),分別把encrypt(delay(s1->s4)+r)、encrypt(delay(s1->s8)+r)發(fā)送給c2、c3。
(2)c2和c3控制器收到從c1控制器發(fā)送的信息后。c2發(fā)現(xiàn)從其管理的域只有一條路徑到達(dá)c5管理的域,于是c2控制器將c1發(fā)送的時延數(shù)據(jù)用私鑰進(jìn)行解密,加上自己的時延數(shù)據(jù)后用c5的公鑰進(jìn)行加密,然后將加密后的數(shù)據(jù)發(fā)送給c5。c3控制器發(fā)現(xiàn)從c3到c5需要經(jīng)過c4管理的域,而且c3域內(nèi)有兩條到c4的鏈路,但是需要獲得最短時延路徑,于是c3選擇域內(nèi)到達(dá)c4管理域的最小時延與c1發(fā)送的時延數(shù)據(jù)相加并用c4的公鑰進(jìn)行加密傳送到c4,同樣的方法c4把時延信息發(fā)送到c5。
(3)c5控制器把從c1到c5所有路徑的時延數(shù)據(jù)用c1控制器的公鑰進(jìn)行加密,然后發(fā)送給c1控制器。假設(shè)c1控制器獲得的兩條鏈路時延數(shù)據(jù)為a1、a2,那么a1-r、a2-r就是兩條鏈路的真實(shí)時延數(shù)據(jù),控制器c1就能獲得最小時延路徑經(jīng)過哪些控制器管理的域,c1只要通知這些控制器,具體經(jīng)過哪些鏈路由各個控制器自行管理。通過以上的流程,可發(fā)現(xiàn)在每個域都沒有暴露時延信息的情況下,計算出最小時延的路徑。
計算最小包率路徑的具體流程如下:假設(shè)路徑s1->s3經(jīng)過兩條鏈路s1->s2,s2->s3,如果它們的丟包率分別為a1,a2,那么s1->s3的路徑丟包率為1-(1-a1)(1-a2)。計算最小丟包率路徑的方法與計算最小時延路徑的方法類似,只是最后控制器在處理數(shù)據(jù)時不同。控制器獲得的路徑總的丟包率為loss=1-(1-(a1+r))(1-a2),其中r是控制器產(chǎn)生的隨機(jī)數(shù)。所以真實(shí)的路徑丟包率應(yīng)該除掉r,真實(shí)丟包率為1-((1-loss)/(1-(a1+r)))(1-a1);然后計算出最小丟包率的路徑。
計算最大帶寬路徑的具體流程如下:最大帶寬路徑的計算與最小時延、最小丟包率的路徑計算不同,一條路徑的最大帶寬由其鏈路上的最小帶寬決定,我們只需要記錄整條路徑的最小帶寬,這樣能在暴露較少隱私的情況下實(shí)現(xiàn)最大帶寬路徑的計算。如圖3所示,同樣是計算as1域中主機(jī)到as5域主機(jī)的路徑,求兩者之間的最大帶寬路徑,步驟如下:
(1)控制器c1計算從s1交換機(jī)到as2、as3路徑的最大帶寬b1、b2,然后用控制器c2、c3的公鑰加密后分別發(fā)送給控制器c2、c3。
(2)c2控制器收到c1控制器發(fā)送的數(shù)據(jù)后,計算從as2到as5域的最大帶寬b3與b1進(jìn)行比較,取兩者最小值用控制器c5的公鑰進(jìn)行加密發(fā)送給c5控制器。同樣的方式c3控制器將數(shù)據(jù)傳給c4控制器、c4控制器將數(shù)據(jù)發(fā)送給c5控制器。
(3)c5控制器將接受到的帶寬數(shù)據(jù)發(fā)送給c1控制器,c1控制器計算出最大帶寬路徑后,通知包含在路徑中的控制器,各自控制器為本域內(nèi)的交換機(jī)發(fā)送流表,實(shí)現(xiàn)源主機(jī)到目的主機(jī)之間最大帶寬的通信。
如圖3所示,各sdn控制器間采用安全多方計算協(xié)議計算多約束qos路徑的具體流程如下:
(1)c1控制器產(chǎn)生兩個隨機(jī)數(shù)r1,r2,然后根據(jù)控制器拓?fù)湟晥D計算到達(dá)qos流的目的主機(jī)所在域的控制器需要經(jīng)過的鄰居控制器,得到c2、c3.
(2)用c2、c3的公鑰對qos流需要達(dá)到的時延+r1、丟包率+r2、帶寬以及三個參數(shù)在目標(biāo)函數(shù)中的權(quán)重值和從源主機(jī)到鄰居控制器按照目標(biāo)函數(shù)計算的最優(yōu)路徑的時延+r1,丟包率+r2、帶寬信息進(jìn)行加密,并發(fā)送給鄰居控制器c2、c3。
(3)c2、c3控制器將獲得的信息進(jìn)行解密獲得時延delay、帶寬bw、丟包率loss,并根據(jù)目標(biāo)函數(shù)計算到達(dá)鄰域路徑的時延delay1、丟包率loss1、帶寬bw1,將delay+delay1,loss+loss1,min(bw,bw1)進(jìn)行加密,分別發(fā)送給c4、c5。同樣c4將數(shù)據(jù)加解密后發(fā)送給c5,c5控制器將所獲得的數(shù)據(jù)信息全部發(fā)送給c1,c1計算最優(yōu)qos路徑。
如圖4所示,步驟7的具體實(shí)施過程如下:
c1控制器計算好qos路徑后,向路徑所要經(jīng)過的各個控制器c2、c5發(fā)送通知,告知其qos流需要經(jīng)過其所管理的域。各個控制器自行管理內(nèi)部路徑,保證qos流所經(jīng)過的時延、帶寬、丟包率,并通過向交換機(jī)下發(fā)流表實(shí)現(xiàn)。