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