本發(fā)明涉及計算機(jī)網(wǎng)絡(luò)優(yōu)化和控制器負(fù)載均衡領(lǐng)域,具體涉及一種基于雙向astar算法的sdn控制器負(fù)載均衡的方法。
背景技術(shù):
1、sdn網(wǎng)絡(luò)中控制器負(fù)載均衡是一個核心的問題,主要涉及到如何在多控制器的背景下分配網(wǎng)絡(luò)流量和控制任務(wù),從而保證網(wǎng)絡(luò)的高效性和可靠性??刂破髫?fù)載均衡通過對網(wǎng)絡(luò)中的拓?fù)浣Y(jié)構(gòu)進(jìn)行了解,當(dāng)網(wǎng)絡(luò)中的交換機(jī)等設(shè)備遇到數(shù)據(jù)包時向控制器發(fā)送請求,控制器根據(jù)網(wǎng)絡(luò)策略和規(guī)則處理這些請求并決定如何處理數(shù)據(jù)包,當(dāng)控制器決定了如何處理數(shù)據(jù),會生成流表條目指導(dǎo)交換機(jī)如何處理數(shù)據(jù)流,在這個過程中,控制器持續(xù)監(jiān)控網(wǎng)絡(luò)中的流量和自身的負(fù)載,當(dāng)控制器的負(fù)載過高時,根據(jù)控制器當(dāng)前的負(fù)載情況來重新分配任務(wù)。
2、現(xiàn)有的sdn負(fù)載均衡方案許多都依賴于預(yù)設(shè)的路由策略,缺乏對于網(wǎng)絡(luò)狀態(tài)動態(tài)變化的響應(yīng)能力,且缺乏綜合性的優(yōu)化目標(biāo),傳統(tǒng)的方案往往只關(guān)注單一的指標(biāo),而沒有綜合考慮負(fù)載均衡和鏈路利用率,傳統(tǒng)的路徑搜索算法不適用于動態(tài)環(huán)境、消耗大量資源且在復(fù)雜網(wǎng)絡(luò)中表現(xiàn)不佳。
技術(shù)實現(xiàn)思路
1、本發(fā)明的目的在于提供一種基于雙向astar算法的sdn控制器負(fù)載均衡的方法,解決以上技術(shù)問題。
2、本發(fā)明的目的可以通過以下技術(shù)方案實現(xiàn):
3、一種基于雙向astar算法的sdn控制器負(fù)載均衡的方法,包括以下步驟:
4、s1、構(gòu)建網(wǎng)絡(luò)拓?fù)鋱D,設(shè)定節(jié)點權(quán)重和邊權(quán)重,初始化各控制器權(quán)重和連接邊的權(quán)重;
5、s2、結(jié)合歸一化的最大負(fù)載差異和歸一化的鏈路控制消息實際利用率設(shè)定多準(zhǔn)則優(yōu)化目標(biāo)函數(shù);
6、s3、根據(jù)多準(zhǔn)則優(yōu)化目標(biāo)函數(shù)的結(jié)果,判斷是否超過閾值,選擇是否進(jìn)行控制器負(fù)載均衡;
7、s4、使用雙向搜索的astar算法來優(yōu)化尋找從源節(jié)點到目標(biāo)節(jié)點的最佳路徑,通過不斷計算路徑的總成本比較得出最佳的路徑;
8、s5、持續(xù)監(jiān)測各控制器的負(fù)載和網(wǎng)絡(luò)流量的狀況,實時更新網(wǎng)絡(luò)拓?fù)鋱D的節(jié)點權(quán)重和邊權(quán)重,并重新計算多準(zhǔn)則優(yōu)化目標(biāo)函數(shù)。
9、作為進(jìn)一步的技術(shù)方案,所述s1包括如下步驟:
10、s1-1、將網(wǎng)絡(luò)建模為一個加權(quán)圖g(v,e),其中v是節(jié)點集合,表示控制器集合,e是邊集合,表示連接控制器的網(wǎng)絡(luò)鏈路集合;
11、s1-2、每個節(jié)點v有一個權(quán)重ωv,使用采集的cpuu、memu、th、packet計算控制器節(jié)點權(quán)重,每一條鏈路有一個邊權(quán)重cuv,使用采集的bandu、laten、packetloss計算邊權(quán)重;
12、節(jié)點權(quán)重ωv的計算公式如下:
13、ωv=τ*cpuu+σ*memu+γ*th+δ*packet??(1)
14、式(1)中:ωv為v節(jié)點的權(quán)重;τ、σ、γ、δ為權(quán)重系數(shù);cpuu為cpu的使用率;memu為內(nèi)存的使用率;th表示網(wǎng)絡(luò)的吞吐量;packet為控制器接收到的來自交換機(jī)的packet-in率。
15、3、根據(jù)權(quán)利要求2所述的基于雙向astar算法的sdn控制器負(fù)載均衡的方法,其特征在于,所述邊權(quán)重cuv的公式如下:
16、cuv=θ*bandu+μ*laten+ρ*packetloss??(2)
17、式(2)中:cuv為邊權(quán)重;θ、μ、ρ為權(quán)重系數(shù);bandu為帶寬利用率;laten表示延遲;packetloss表示丟包率。
18、作為進(jìn)一步的技術(shù)方案,所述s2包括如下步驟:
19、s2-1、查詢節(jié)點權(quán)重中的最大值和最小值,計算網(wǎng)絡(luò)中最大負(fù)載差異,并進(jìn)行歸一化處理,查詢鏈路控制消息的傳輸量和鏈路的最大控制消息的容量,計算鏈路的控制消息利用率之和,并進(jìn)行歸一化處理;
20、最大負(fù)載差異的歸一化公式如下:
21、
22、式(3)中maxd表示歷史數(shù)據(jù)中節(jié)點負(fù)載的最大值與最小值的最大差異;d表示歸一化的結(jié)果;
23、鏈路控制消息利用率之和的計算公式如下:
24、
25、式(4)中|e|表示鏈路的表示鏈路的總數(shù);
26、鏈路控制消息的實際利用率歸一化公式如下:
27、
28、式(5)中f表示鏈路控制消息的實際利用率歸一化結(jié)果;fuv表示鏈路(u,v)上實際控制消息的流量,xuv表示鏈路的最大控制消息容量;
29、s2-2、使用四分位數(shù)定義低、中低、中高、高四個區(qū)間,并對應(yīng)四個區(qū)間分別設(shè)定四個α和β的權(quán)重系數(shù);
30、s2-3、結(jié)合歸一化的最大負(fù)載差異和歸一化的鏈路利用率設(shè)定多準(zhǔn)則目標(biāo)優(yōu)化函數(shù);
31、多準(zhǔn)則目標(biāo)優(yōu)化函數(shù)的計算公式如下:
32、ob=α*d+β*f??(6)
33、式(6)中ob為目標(biāo)優(yōu)化函數(shù)的結(jié)果;α、β表示權(quán)重系數(shù)。
34、5、根據(jù)權(quán)利要求4所述的基于雙向astar算法的sdn控制器負(fù)載均衡的方法,其特征在于,所述s3包括如下步驟:
35、s3-1、根據(jù)多準(zhǔn)則優(yōu)化目標(biāo)函數(shù)的結(jié)果,首先判斷優(yōu)化函數(shù)的結(jié)果是否超過閾值,若沒有超過閾值則說明網(wǎng)絡(luò)中控制器負(fù)載均衡且鏈路流量利用率合理,若超過閾值,則說明網(wǎng)絡(luò)中存在嚴(yán)重的負(fù)載不平衡或者鏈路過度擁擠,需要立即進(jìn)行負(fù)載均衡;
36、s3-2、若多準(zhǔn)則優(yōu)化目標(biāo)函數(shù)結(jié)果超過閾值,則表明需要進(jìn)行負(fù)載均衡,將節(jié)點負(fù)載最高的控制器設(shè)定為源節(jié)點s,將節(jié)點負(fù)載最低的控制器設(shè)定為目標(biāo)節(jié)點t,即
37、作為進(jìn)一步的技術(shù)方案,所述s4包括如下步驟:
38、s4-1、設(shè)定四個列表open_s、open_t、close_s和close_t,open_s包含從起始節(jié)點s開始的待探索的節(jié)點,初始只包含s,open_t包含從目標(biāo)節(jié)點t開始的待探索的節(jié)點,初始只包含t,close_s和close_t表示兩個關(guān)閉列表,分別用于存儲從起始節(jié)點s端探索和從目標(biāo)節(jié)點t端探索的已經(jīng)評估過的節(jié)點;
39、s4-2、從起始節(jié)點s到目標(biāo)節(jié)點t的路徑過程中經(jīng)過一系列中間節(jié)點,將從起始節(jié)點s探索方向的任意一個中間節(jié)點設(shè)為ns,ns的每個鄰節(jié)點設(shè)為ms,將從目標(biāo)節(jié)點探索方向的任意一個中間節(jié)點設(shè)為nt,nt的每個鄰節(jié)點設(shè)為mt;
40、s4-3、定義雙向搜索過程中當(dāng)前節(jié)點到鄰節(jié)點的成本函數(shù),表示當(dāng)前節(jié)點到鄰節(jié)點的實際路徑成本;
41、成本函數(shù)計算公式為:
42、gnew(m)=g(n)+cmn??(7)
43、式(7)中g(shù)new(m)表示雙向搜索中從當(dāng)前節(jié)點到鄰節(jié)點的實際路徑成本;cmn表示從當(dāng)前節(jié)點到鄰節(jié)點的邊權(quán)重;
44、s4-4、定義啟發(fā)式函數(shù),估計從鄰節(jié)點m到目標(biāo)節(jié)點t的估計成本;
45、啟發(fā)函數(shù)h(m)的計算公式如下:
46、
47、式(8)中h(m)表示從鄰節(jié)點m到目標(biāo)節(jié)點t的預(yù)估成本;ψ1和ψ2表示延遲和帶寬的權(quán)重系數(shù);e(m,t)表示從m到t的估計平均距離,使用平均跳數(shù)計算;ad表示數(shù)據(jù)在網(wǎng)絡(luò)中的平均傳輸速率;ab表示網(wǎng)絡(luò)平均帶寬;
48、s4-5、定義總成本函數(shù)為f(m),估計從當(dāng)前節(jié)點到目標(biāo)節(jié)點的總成本值;
49、f(m)=g(m)+h(m)??(9)
50、式(9)中f(m)表示路徑總的成本;
51、s4-6、從起始節(jié)點s和目標(biāo)節(jié)點t分別計算f(s)和f(t),初始設(shè)置g(s)為0,初始計算g(t)為0,遍歷s和t的所有鄰節(jié)點,計算gnew(ms),如果gnew(ms)小于open_s中已知的g(ms),或ms不在open_s或者open_t中,則更新g(ms)和f(ms),并將ms添加在open_s或者open_t中;
52、s4-7、不斷進(jìn)行雙向迭代更新,從open_s中選擇f值最低的節(jié)點作為當(dāng)前的節(jié)點ns,從open_t中選擇f值最低的節(jié)點作為當(dāng)前節(jié)點nt,更新完成之后將當(dāng)前節(jié)點移動到close列表中,每次檢查兩個方向是否交叉,如果ns出現(xiàn)在close_t或者nt出現(xiàn)在close_s中,表明兩個搜索方向相遇,開始路徑重建;
53、s4-8、發(fā)現(xiàn)相遇點則將起始節(jié)點到相遇節(jié)點和從目標(biāo)節(jié)點到相遇節(jié)點的路徑連接起來形成完整路徑,如果open_s或者open_t為空,則表明無法找到路徑。
54、作為進(jìn)一步的技術(shù)方案,所述s5包括如下步驟:
55、s5-1、持續(xù)監(jiān)測各控制器的cpu使用率、內(nèi)存的使用率、網(wǎng)絡(luò)的吞吐量、交換機(jī)控制消息的packet-in率、鏈路帶寬利用率、延遲率、丟包率指標(biāo),實時更新網(wǎng)絡(luò)拓?fù)鋱D的節(jié)點權(quán)重和邊權(quán)重,并重新計算多準(zhǔn)則優(yōu)化目標(biāo)函數(shù),根據(jù)實時反饋動態(tài)更新參數(shù)和權(quán)重。
56、發(fā)明的有益效果:
57、(1)綜合節(jié)點和鏈路的多因子權(quán)重,計算節(jié)點權(quán)重時不僅考慮傳統(tǒng)的距離和成本,引入了cpu使用率、內(nèi)存使用率、吞吐量和控制消息處理率等因素,使得權(quán)重更加符合實際運(yùn)行狀態(tài),邊權(quán)重考慮延遲、丟包率等指標(biāo),提升了路徑選擇的準(zhǔn)確性和網(wǎng)絡(luò)性能;
58、(2)引入多準(zhǔn)則優(yōu)化目標(biāo)函數(shù),結(jié)合網(wǎng)絡(luò)負(fù)載和鏈路利用率綜合考慮網(wǎng)絡(luò)負(fù)載情況,通過調(diào)整權(quán)重系數(shù),可以根據(jù)實際網(wǎng)絡(luò)狀況動態(tài)優(yōu)化節(jié)點負(fù)載均衡和鏈路利用率的優(yōu)先級;
59、(3)使用雙向搜索的astar算法,雙向搜索減少需要探索的節(jié)點數(shù)量,減少對于計算資源的消耗,降低了錯誤路徑的選擇可能性,且使用自適應(yīng)的啟發(fā)函數(shù),結(jié)合當(dāng)前節(jié)點到目標(biāo)節(jié)點的預(yù)估成本和網(wǎng)絡(luò)的實時狀態(tài),而不僅僅依賴于靜態(tài)估計,路徑成本不僅考慮移動成本,還融入了實時的網(wǎng)絡(luò)狀態(tài)反饋,使得算法能夠適應(yīng)網(wǎng)絡(luò)負(fù)載變化;
60、(5)實時監(jiān)控網(wǎng)絡(luò)狀態(tài)并基于監(jiān)測數(shù)據(jù)調(diào)整參數(shù),實現(xiàn)持續(xù)的網(wǎng)絡(luò)優(yōu)化,通過反饋機(jī)制不斷調(diào)整網(wǎng)絡(luò)策略,使得網(wǎng)絡(luò)的自適應(yīng)性和穩(wěn)定性得到提高。