一種軟件定義網(wǎng)絡(luò)控制器集群的調(diào)度方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種軟件定義網(wǎng)絡(luò)控制器集群的調(diào)度方法。
【背景技術(shù)】
[0002] 目前,軟件定義網(wǎng)絡(luò)(Software Defined Network, SDN)控制器的調(diào)度方案大致包 括兩種,一種是基于雙機(jī)熱備的調(diào)度方案,其架構(gòu)如圖1所示,平時(shí)由主控制器節(jié)點(diǎn)負(fù)責(zé)接 管所有的交換機(jī),在主控制器節(jié)點(diǎn)出現(xiàn)宕機(jī)時(shí),由備控制器節(jié)點(diǎn)接管所有的交換機(jī);其缺點(diǎn) 是負(fù)載壓力都集中在單個(gè)控制器節(jié)點(diǎn)上,處理性能較低。
[0003] 另一種是通過第三方管理者進(jìn)行控制器集群的調(diào)度方案,其架構(gòu)如圖2所示,在 所有控制器節(jié)點(diǎn)之外加入一個(gè)第三方管理者,負(fù)責(zé)管理調(diào)度集群中的所有控制器節(jié)點(diǎn);所 有的控制器節(jié)點(diǎn)都是通過該第三方管理者分配交換機(jī)的接管任務(wù);如果控制器節(jié)點(diǎn)出現(xiàn)宕 機(jī),第三方管理者將重新調(diào)度交換機(jī)接管任務(wù);其缺點(diǎn)是如果第三方管理者出現(xiàn)宕機(jī),會(huì)影 響整體網(wǎng)絡(luò)系統(tǒng)的運(yùn)行,同時(shí),由于控制器集群的節(jié)點(diǎn)數(shù)量上限受第三方管理者的程序調(diào) 度性能影響,使得第三方管理者的性能會(huì)成為整體集群的瓶頸。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明針對(duì)現(xiàn)有技術(shù)中軟件定義網(wǎng)絡(luò)控制器的調(diào)度方案處理性能較低或受限于 第三方管理者的性能等技術(shù)問題,提出一種具有更高性能的軟件定義網(wǎng)絡(luò)控制器集群的調(diào) 度方法。
[0005] 以下分別基于同步數(shù)據(jù)修復(fù)方法和負(fù)載均衡方法對(duì)本發(fā)明提出的一種軟件定義 網(wǎng)絡(luò)控制器集群的調(diào)度方法進(jìn)行介紹。
[0006] 1.基于同步數(shù)據(jù)修復(fù)方法
[0007] 本發(fā)明提出的一種軟件定義網(wǎng)絡(luò)控制器集群的調(diào)度方法,所述軟件定義網(wǎng)絡(luò)控制 器集群包括若干控制器節(jié)點(diǎn);每個(gè)控制器節(jié)點(diǎn)相應(yīng)擁有一份Hash表,每份Hash表的數(shù)據(jù)包 括:各個(gè)控制器節(jié)點(diǎn)的標(biāo)識(shí)、各個(gè)控制器節(jié)點(diǎn)負(fù)責(zé)接管的交換機(jī)的標(biāo)識(shí)、各個(gè)控制器節(jié)點(diǎn)的 負(fù)載因子;其中,每個(gè)控制器節(jié)點(diǎn)只允許修改其擁有的Hash表中由其負(fù)責(zé)接管的交換機(jī)的 標(biāo)識(shí)以及其負(fù)載因子;每個(gè)控制器節(jié)點(diǎn)修改了其擁有的Hash表中的數(shù)據(jù)時(shí),需將其修改的 數(shù)據(jù)同步到其他控制器節(jié)點(diǎn)中,由其他控制器節(jié)點(diǎn)相應(yīng)更新各自擁有的Hash表中的數(shù)據(jù);
[0008] 所述調(diào)度方法包括同步數(shù)據(jù)修復(fù)方法,所述同步數(shù)據(jù)修復(fù)方法包括:
[0009] 本控制器節(jié)點(diǎn)查詢當(dāng)前連接到本控制器集群中的交換機(jī)的標(biāo)識(shí);
[0010] 根據(jù)本控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),判斷查詢到的標(biāo)識(shí)對(duì)應(yīng)的交換機(jī)的 接管情況;
[0011] 根據(jù)所述接管情況,確定是否執(zhí)行Hash表數(shù)據(jù)修復(fù);所述Hash表數(shù)據(jù)修復(fù)包 括:對(duì)本控制器節(jié)點(diǎn)所擁有的Hash表中的數(shù)據(jù)進(jìn)行修復(fù),同時(shí)對(duì)其他控制器節(jié)點(diǎn)所擁有的 Hash表中相應(yīng)的數(shù)據(jù)進(jìn)行同步修復(fù)。
[0012] 優(yōu)選的,所述查詢當(dāng)前連接到本控制器集群中的交換機(jī)的標(biāo)識(shí)具體通過openf low 協(xié)議進(jìn)行查詢。
[0013] 優(yōu)選的,所述根據(jù)所述接管情況,確定是否執(zhí)行Hash表數(shù)據(jù)修復(fù)的步驟包括:
[0014] 根據(jù)本控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),判斷接管所述查詢到的標(biāo)識(shí)對(duì)應(yīng)的 交換機(jī)的控制器節(jié)點(diǎn)數(shù)量;
[0015] 若所述控制器節(jié)點(diǎn)數(shù)量等于1,則不執(zhí)行Hash表數(shù)據(jù)修復(fù)。
[0016] 優(yōu)選的,所述根據(jù)所述接管情況,確定是否執(zhí)行Hash表數(shù)據(jù)修復(fù)的步驟還包括:
[0017] 若所述控制器節(jié)點(diǎn)數(shù)量等于0,則通過openf low協(xié)議接管所述查詢到的標(biāo)識(shí)對(duì)應(yīng) 的交換機(jī),并執(zhí)行Hash表數(shù)據(jù)修復(fù)。
[0018] 優(yōu)選的,所述根據(jù)所述接管情況,確定是否執(zhí)行Hash表數(shù)據(jù)修復(fù)的步驟還包括:
[0019] 若所述控制器節(jié)點(diǎn)數(shù)量大于1,則根據(jù)本控制器節(jié)點(diǎn)所擁有的Hash表中的數(shù)據(jù)判 斷所述查詢到的標(biāo)識(shí)對(duì)應(yīng)的交換機(jī)是否由本控制器節(jié)點(diǎn)接管;若是,則執(zhí)行Hash表數(shù)據(jù)修 復(fù)。
[0020] 2.基于同步負(fù)載均衡方法
[0021] 本發(fā)明提出的一種軟件定義網(wǎng)絡(luò)控制器集群的調(diào)度方法,所述軟件定義網(wǎng)絡(luò)控制 器集群包括若干控制器節(jié)點(diǎn);每個(gè)控制器節(jié)點(diǎn)相應(yīng)擁有一份Hash表,每份Hash表的數(shù)據(jù)包 括:各個(gè)控制器節(jié)點(diǎn)的標(biāo)識(shí)、各個(gè)控制器節(jié)點(diǎn)負(fù)責(zé)接管的交換機(jī)的標(biāo)識(shí)、各個(gè)控制器節(jié)點(diǎn)的 負(fù)載因子;其中,每個(gè)控制器節(jié)點(diǎn)只允許修改其擁有的Hash表中由其負(fù)責(zé)接管的交換機(jī)的 標(biāo)識(shí)以及其負(fù)載因子;每個(gè)控制器節(jié)點(diǎn)修改了其擁有的Hash表中的數(shù)據(jù)時(shí),需將其修改的 數(shù)據(jù)同步到其他控制器節(jié)點(diǎn)中,由其他控制器節(jié)點(diǎn)相應(yīng)更新各自擁有的Hash表中的數(shù)據(jù);
[0022] 所述調(diào)度方法包括負(fù)載均衡方法,所述負(fù)載均衡方法包括:
[0023] 根據(jù)本控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),判斷本控制器節(jié)點(diǎn)的負(fù)載狀況和其 他控制器節(jié)點(diǎn)的負(fù)載狀況,相應(yīng)執(zhí)行本控制器節(jié)點(diǎn)與其他控制器節(jié)點(diǎn)之間的負(fù)載均衡;
[0024] 優(yōu)選的,所述根據(jù)本控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),判斷本控制器節(jié)點(diǎn)的負(fù) 載狀況和其他控制器節(jié)點(diǎn)的負(fù)載狀況,相應(yīng)執(zhí)行本控制器節(jié)點(diǎn)與其他控制器節(jié)點(diǎn)之間的負(fù) 載均衡的具體步驟包括:
[0025] 根據(jù)本控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),通過計(jì)算判斷本控制器節(jié)點(diǎn)是否處 于負(fù)載空閑狀態(tài);若處于負(fù)載空閑狀態(tài),則計(jì)算本控制器節(jié)點(diǎn)還需要接管多少交換機(jī)才達(dá) 到負(fù)載飽和狀態(tài);
[0026] 通過計(jì)算判斷其他控制器節(jié)點(diǎn)是否處于負(fù)載繁忙狀態(tài);若是,則計(jì)算該控制器節(jié) 點(diǎn)還需要放棄多少交換機(jī)才能達(dá)到負(fù)載飽和狀態(tài);
[0027] 本控制器節(jié)點(diǎn)接管所述處于負(fù)載繁忙狀態(tài)的控制器節(jié)點(diǎn)需要放棄的交換機(jī),直至 本控制器節(jié)點(diǎn)達(dá)到負(fù)載飽和狀態(tài)。
[0028] 優(yōu)選的,所述負(fù)載均衡方法基于以下計(jì)算公式判斷控制器節(jié)點(diǎn)的負(fù)載狀況:
[0029] Load = (count/weights) ^Nodeffeigh
[0030] 其中,Load為相應(yīng)的控制器節(jié)點(diǎn)達(dá)到負(fù)載飽和時(shí)接管的交換機(jī)數(shù)量;count為 本控制器集群中交換機(jī)的總數(shù)量;weights為所有控制器節(jié)點(diǎn)對(duì)應(yīng)的負(fù)載因子的總和; NodeWeigh為相應(yīng)的控制器節(jié)點(diǎn)對(duì)應(yīng)的負(fù)載因子;
[0031] 若控制器節(jié)點(diǎn)接管的交換器數(shù)量小于Load,則判斷出其處于負(fù)載空閑狀態(tài);若控 制器節(jié)點(diǎn)接管的交換器數(shù)量大于Load,則判斷出其處于負(fù)載繁忙狀態(tài);若控制器節(jié)點(diǎn)接管 的交換器數(shù)量等于Load,則判斷出其處于負(fù)載飽和狀態(tài)。
[0032] 優(yōu)選的,所述負(fù)載均衡方法還包括:
[0033] 更新本控制器節(jié)點(diǎn)擁有的Hash表中由其負(fù)責(zé)接管的交換機(jī)的標(biāo)識(shí)以及其負(fù)載因 子,將其更新后的數(shù)據(jù)同步到其他控制器節(jié)點(diǎn)中,由其他控制器節(jié)點(diǎn)相應(yīng)更新各自擁有的 Hash表中的數(shù)據(jù)。
[0034] 優(yōu)選的,所述調(diào)度方法還包括控制器節(jié)點(diǎn)選舉方法,所述控制器節(jié)點(diǎn)選舉方法包 括:
[0035] 各控制器節(jié)點(diǎn)獲取所有需要選舉接管的交換機(jī)的標(biāo)識(shí);
[0036] 根據(jù)各控制器節(jié)點(diǎn)擁有的Hash表中的數(shù)據(jù),選舉出控制器節(jié)點(diǎn)對(duì)獲取到的標(biāo)識(shí) 對(duì)應(yīng)的交換機(jī)進(jìn)行接管。
[0037] 有益效果:本發(fā)明提出的軟件定義網(wǎng)絡(luò)控制器集群的調(diào)度方法,其采用的是控制 器集群的方案,可以將負(fù)載壓力分?jǐn)偨o各個(gè)控制器節(jié)點(diǎn),避免了現(xiàn)有技術(shù)雙機(jī)熱備的調(diào)度 方案中將所有負(fù)載壓力集中給單個(gè)控制器節(jié)點(diǎn)導(dǎo)致處理性能較低的問題;
[0038] 同時(shí),本發(fā)明的集群中的每個(gè)控制器節(jié)點(diǎn)相應(yīng)配置一份Hash表,并限定每個(gè)控制 器節(jié)點(diǎn)只允許修改其擁有的Hash表中由其負(fù)責(zé)接管的交換機(jī)的標(biāo)識(shí)以及其負(fù)載因子,每 個(gè)控制器節(jié)點(diǎn)修改了其擁有的Hash表中的數(shù)據(jù)時(shí),需將其修改的數(shù)據(jù)同步到其他控制器 節(jié)點(diǎn)中,由其他控制器節(jié)點(diǎn)相應(yīng)更新各自擁有的Hash表中的數(shù)據(jù);因此,本發(fā)明可以根據(jù) Hash表中的數(shù)據(jù)確定相應(yīng)的控制器節(jié)點(diǎn)對(duì)交換機(jī)進(jìn)行接管,而不需要引入第三方管理者, 故而不會(huì)導(dǎo)致整個(gè)集群受限于第三方管理者的性能。
[0039] 基于所述Hash表,本發(fā)明可以實(shí)現(xiàn)各個(gè)控制器節(jié)點(diǎn)之間的冗余及負(fù)載均衡,大大 提高了整個(gè)集群的性能