基于sdn的大流負(fù)載均衡系統(tǒng)與方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明屬于通信網(wǎng)絡(luò)技術(shù)領(lǐng)域,具體涉及一種大流負(fù)載均衡技術(shù),可用于Fat-Tree結(jié)構(gòu)的數(shù)據(jù)中心網(wǎng)絡(luò)。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)在線業(yè)務(wù)用戶量和大眾接入帶寬的快速增長(zhǎng),數(shù)據(jù)中心網(wǎng)絡(luò)流量呈現(xiàn)迅速增長(zhǎng)的態(tài)勢(shì)?;ヂ?lián)網(wǎng)業(yè)務(wù)對(duì)數(shù)據(jù)中心提出了越來越高的傳輸質(zhì)量要求,包括大帶寬、低時(shí)延、安全保障、靈活調(diào)度等。在這樣的趨勢(shì)下,出現(xiàn)了各種各樣的解決方案,以O(shè)penFlow協(xié)議為代表的軟件定義網(wǎng)絡(luò)SDN技術(shù)便是應(yīng)運(yùn)而生的一種新型網(wǎng)絡(luò)交換模型,它完全顛覆了原有控制和數(shù)據(jù)轉(zhuǎn)發(fā)使用同一平面的做法,采用控制平面和轉(zhuǎn)發(fā)平面的分離的模式極大地簡(jiǎn)化了網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備,使依據(jù)全局網(wǎng)絡(luò)狀態(tài)、靈活地制定數(shù)據(jù)轉(zhuǎn)發(fā)行為成為可能,并為網(wǎng)絡(luò)創(chuàng)新提供了良好的平臺(tái)。
[0003]隨著云計(jì)算等技術(shù)的發(fā)展,大量的計(jì)算任務(wù)需要多臺(tái)服務(wù)器間進(jìn)行交互式工作,這促使數(shù)據(jù)中心網(wǎng)絡(luò)內(nèi)部服務(wù)器間的橫向流量大大增加。同時(shí),由于數(shù)據(jù)中心業(yè)務(wù)類型的不同,服務(wù)器節(jié)點(diǎn)產(chǎn)生的流量存在明顯的大小特征差異,數(shù)據(jù)中心網(wǎng)絡(luò)內(nèi)部混合了大量的小流和大流。其中,小流是指包含數(shù)據(jù)量小,對(duì)網(wǎng)絡(luò)時(shí)延要求較高的數(shù)據(jù)流,在網(wǎng)絡(luò)中所占的數(shù)目多,但總字節(jié)數(shù)?。淮罅魇侵赴瑪?shù)據(jù)量大,對(duì)網(wǎng)絡(luò)帶寬需求較高的數(shù)據(jù)流,在網(wǎng)絡(luò)中所占的數(shù)目少,但總字節(jié)數(shù)大。從云服務(wù)提供商的角度考慮,如果不能針對(duì)大流制定合理的負(fù)載均衡策略,可能會(huì)使網(wǎng)絡(luò)因多條大流被路由到同一條鏈路上而導(dǎo)致?lián)砣麊栴},嚴(yán)重時(shí),甚至?xí)l(fā)生丟包現(xiàn)象。利用SDN技術(shù),合理的大流負(fù)載均衡策略是解決上述問題的重要途徑。
[0004]在基于SDN的數(shù)據(jù)中心網(wǎng)絡(luò)中,為了避免大流碰撞導(dǎo)致網(wǎng)絡(luò)擁塞問題,文章uHederaiDynamic Flow Scheduling for Data Center Networks” 中提出了能夠感知流量大小的動(dòng)態(tài)流量均衡策略——Hedera。Hedera利用集中式的網(wǎng)絡(luò)控制器檢測(cè)大流,同時(shí),對(duì)大流的帶寬需求進(jìn)行評(píng)估,利用全局最先適應(yīng)算法(Global First Fit)將大流調(diào)度到負(fù)載較低的路徑上,與靜態(tài)的路由策略相比,Hedera在一定程度上提高了鏈路的利用率。但是,Hedera并沒有充分利用數(shù)據(jù)中心網(wǎng)絡(luò)拓?fù)涞亩嗦窂教匦?,使網(wǎng)絡(luò)達(dá)到最優(yōu)的流量分布,從網(wǎng)絡(luò)核心層角度來看,負(fù)載均衡問題沒有得到很好的解決,致使部分核心層鏈路仍然存在擁塞問題。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于依據(jù)目前數(shù)據(jù)中心網(wǎng)絡(luò)普遍采用的Fat-Tree拓?fù)?,提出一種均衡效果顯著的基于SDN的大流負(fù)載均衡系統(tǒng)與方法,以解決在網(wǎng)絡(luò)核心層中存在的負(fù)載不均和鏈路擁塞問題。
[0006]本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]技術(shù)思路:通過對(duì)網(wǎng)絡(luò)的初始化,完成各交換機(jī)和服務(wù)器的地址分配,SDN控制器對(duì)整個(gè)網(wǎng)絡(luò)拓?fù)湫畔⒌墨@取,邊緣層交換機(jī)用于匹配大流的默認(rèn)流表的下發(fā);通過SDN控制器計(jì)算大流路徑;通過大流在源端的匯聚層交換機(jī)的分流進(jìn)行多路徑路由;通過目的端的匯聚層交換機(jī)的調(diào)度工作完成亂序分組的重組。
[0008]根據(jù)上述思路,本發(fā)明提出的一種基于SDN的大流負(fù)載均衡系統(tǒng),包括:
[0009]Fat-Tree拓?fù)浣Y(jié)構(gòu)的底層網(wǎng)絡(luò),包括核心層交換機(jī)、服務(wù)器和pod結(jié)構(gòu),其中,pod結(jié)構(gòu)包括匯聚層交換機(jī)和邊緣層交換機(jī),所有交換機(jī)均用于數(shù)據(jù)包的轉(zhuǎn)發(fā),服務(wù)器用于產(chǎn)生和接受數(shù)據(jù)流;
[0010]SDN控制器,用于獲取整個(gè)網(wǎng)絡(luò)的拓?fù)湫畔ⅰ⒉?duì)交換機(jī)下發(fā)流表和對(duì)底層網(wǎng)絡(luò)進(jìn)行集中控制;
[0011]其特征在于:SDN控制器中增設(shè)有拓?fù)湫畔⒛K、大流路由表模塊和大流路由計(jì)算豐旲塊;
[0012]所述拓?fù)湫畔⒛K,用于存儲(chǔ)底層網(wǎng)絡(luò)的拓?fù)湫畔ⅲ?br>[0013]所述大流路由表模塊,用于存儲(chǔ)大流的路由信息;
[0014]所述大流路由計(jì)算模塊,用于查詢拓?fù)湫畔⒛K和大流路由表模塊中存儲(chǔ)的信息,并根據(jù)所查詢的信息為大流計(jì)算路徑。
[0015]根據(jù)上述思路,本發(fā)明基于SDN的大流負(fù)載均衡系統(tǒng)的均衡方法,包括:
[0016](I)網(wǎng)絡(luò)初始化
[0017]Ia)在擁有k個(gè)pod結(jié)構(gòu)的Fat-Tree數(shù)據(jù)中心網(wǎng)絡(luò)中,對(duì)所有的交換機(jī)和服務(wù)器進(jìn)行32位的二進(jìn)制編址,分別得到交換機(jī)和服務(wù)器的地址;
[0018]lb)SDN控制器獲得整個(gè)網(wǎng)絡(luò)的拓?fù)湫畔?,并將該信息存?chǔ)在拓?fù)湫畔⒛K中;
[0019]lc)SDN控制器給每個(gè)邊緣層交換機(jī)下發(fā)兩條默認(rèn)流表,一條用于匹配被標(biāo)記大流的第一個(gè)數(shù)據(jù)包,另一個(gè)用于匹配會(huì)話連接拆除階段的數(shù)據(jù)包;
[0020](2)源端服務(wù)器產(chǎn)生數(shù)據(jù)流,如果數(shù)據(jù)流在服務(wù)器緩存中的累積存儲(chǔ)量超過設(shè)定的閾值t,則將該數(shù)據(jù)流的數(shù)據(jù)包標(biāo)記為大流,并標(biāo)記大流數(shù)據(jù)包的序號(hào),其中t的大小設(shè)定為網(wǎng)絡(luò)鏈路帶寬容量的10% ;
[0021](3)計(jì)算大流的路徑:
[0022]3a)大流路由計(jì)算模塊根據(jù)數(shù)據(jù)包中的源地址和目的地址,查詢拓?fù)湫畔⒛K中存儲(chǔ)的信息,按照所存儲(chǔ)信息的順序,選出一對(duì)源匯聚層鏈路和目的匯聚層鏈路,所述匯聚層鏈路是指連接邊緣層交換機(jī)和匯聚層交換機(jī)的鏈路;
[0023 ] 3b)大流路由計(jì)算模塊查詢大流路由表模塊中存儲(chǔ)的信息,判斷步驟3a)得到的源匯聚層鏈路和目的匯聚層鏈路是否已承載大流:如果沒有,則路由計(jì)算結(jié)束,執(zhí)行步驟(4);反之,返回步驟3a);如果遍歷了大流路由表模塊中的信息之后,發(fā)現(xiàn)所有的源匯聚層鏈路和目的匯聚層鏈路均已承載了大流,則執(zhí)行步驟3c);
[0024]3c)選擇承載大流數(shù)目最少的一對(duì)源匯聚層鏈路和目的匯聚層鏈路,路由計(jì)算結(jié)束,執(zhí)行步驟(4);
[0025](4)SDN控制器將大流的路由信息更新至大流路由表模塊存儲(chǔ)的信息中,并將該大流的路由信息以流表的形式下發(fā)給源匯聚層鏈路和目的匯聚層鏈路的交換機(jī);
[0026](5)大流的數(shù)據(jù)包根據(jù)流表的指示到達(dá)源端匯聚層交換機(jī),該源端匯聚層交換機(jī)再根據(jù)大流數(shù)據(jù)包的到達(dá)順序采用循環(huán)的方式將大流數(shù)據(jù)包依次轉(zhuǎn)發(fā)給與自己相連的核心層交換機(jī),核心層交換機(jī)再將該大流的數(shù)據(jù)包轉(zhuǎn)發(fā)到目的端匯聚層交換機(jī);
[0027](6)目的端匯聚層交換機(jī)按照大流數(shù)據(jù)包到達(dá)目的端匯聚層交換機(jī)的順序?qū)Υ罅鲾?shù)據(jù)包依次進(jìn)行兩兩對(duì)比,完成對(duì)大流數(shù)據(jù)包的調(diào)度,選出優(yōu)先出隊(duì)的數(shù)據(jù)包,目的端匯聚層交換機(jī)將該數(shù)據(jù)包轉(zhuǎn)發(fā)到目的端邊緣層交換機(jī)中;
[0028](7)目的端邊緣層交換機(jī)將大流數(shù)據(jù)包轉(zhuǎn)發(fā)給目的端服務(wù)器,會(huì)話結(jié)束,進(jìn)入會(huì)話連接拆除階段;
[0029](8)目的端服務(wù)器向源端服務(wù)器發(fā)送用于會(huì)話連接拆除的數(shù)據(jù)包,該數(shù)據(jù)包到達(dá)目的端邊緣層交換機(jī)時(shí),由目的端邊緣交換機(jī)將該數(shù)據(jù)包信息發(fā)送給SDN控制器,SDN控制器根據(jù)該數(shù)據(jù)包信息將大流路由表模塊中存儲(chǔ)該大流對(duì)應(yīng)的路由信息刪除。
[0030]本發(fā)明與現(xiàn)行技術(shù)相比具有的優(yōu)點(diǎn):
[0031]I)本發(fā)明由于利用了 Fat-Tree數(shù)據(jù)中心網(wǎng)絡(luò)的多路徑特性,在網(wǎng)絡(luò)的核心層采用針對(duì)大流的多路徑路由策略,克服了數(shù)據(jù)中心網(wǎng)絡(luò)核心層中存在的負(fù)載不均和鏈路擁塞的問題;
[0032]2)本發(fā)明由于在Fat-Tree數(shù)據(jù)中心網(wǎng)絡(luò)匯聚層交換機(jī)中加入了針對(duì)大流數(shù)據(jù)包的調(diào)度機(jī)制,克服了多路徑路由策略可能帶來的分組亂序問題。
【附圖說明】
[0033]圖1是本發(fā)明的通信系統(tǒng)示意圖;
[0034]圖2是本發(fā)明實(shí)現(xiàn)大流負(fù)載均衡的流程圖;
[0035]圖3是本發(fā)明中匯聚層交換機(jī)調(diào)度示意圖。
【具體實(shí)施方式】
[0036]下面結(jié)合附圖對(duì)本發(fā)明的實(shí)施方式做進(jìn)一步詳細(xì)描述。
[0037]參照?qǐng)D1,本發(fā)明基于SDN的大流負(fù)載均衡系統(tǒng)例,包括擁有k個(gè)pod結(jié)構(gòu)的Fat-Tree底層網(wǎng)絡(luò)和一個(gè)SDN控制器,其中k為偶數(shù),在本實(shí)例中,k = 6,但不局限于這個(gè)數(shù)據(jù),pod結(jié)構(gòu)包含有邊緣層交換機(jī)和匯聚層交換機(jī),網(wǎng)絡(luò)中每臺(tái)交換機(jī)均為支持Opnef low協(xié)議的SDN交換機(jī),網(wǎng)絡(luò)中鏈路帶寬均為IGbps,網(wǎng)絡(luò)核心層交換機(jī)依次標(biāo)記為Corel、Core2、Core3、……Xore^SDN控制器用于獲取該Fat-Tree底層網(wǎng)絡(luò)的拓?fù)湫畔?,并?duì)底層網(wǎng)絡(luò)進(jìn)行實(shí)時(shí)監(jiān)控和對(duì)交換機(jī)下發(fā)流表。
[0038]所述SDN控制器中,增設(shè)有拓?fù)湫畔⒛K、大流路由表模塊和大流路由計(jì)算模塊,其中拓?fù)湫畔⒛K用于存儲(chǔ)SDN控制器獲取到的底層網(wǎng)絡(luò)拓?fù)湫畔?,大流路由表模塊用于存儲(chǔ)大流路由計(jì)算模塊計(jì)算得到的大流路由信息,大流路由計(jì)算模塊用于查詢網(wǎng)絡(luò)拓?fù)湫畔⒛K和大流路由表模塊中存儲(chǔ)的信息,并根據(jù)查詢得到的信息為大流計(jì)算路徑。
[0039]SDN是指軟件定義網(wǎng)絡(luò)。
[0040]參照?qǐng)D2,利用上述系統(tǒng)進(jìn)行大流負(fù)載均衡的實(shí)現(xiàn)步驟如下:
[0041 ]步驟一:網(wǎng)絡(luò)初始化。
[0042]Ia)對(duì)網(wǎng)絡(luò)中所有交換機(jī)和服務(wù)器進(jìn)行32位二進(jìn)制編址,得到如下各地址:
[0043]pod結(jié)構(gòu)內(nèi)交換機(jī)地址:P.s.1.0,其中P表示Fat-Tree網(wǎng)絡(luò)中的pod結(jié)構(gòu)從左到右依次所編的序號(hào),pe [O,5],占8位;s表示pod結(jié)構(gòu)內(nèi)的交換機(jī)從左到右、從上到下依次所編的序號(hào),se[0,5],占8位;
[0044]核心層交換機(jī)地址:6.j.1.0,其中i和j共同表示Fat-Tree網(wǎng)絡(luò)中的核心層交換機(jī)從左到右依次所編的序號(hào),1、j e [ I,3],均占8位,核心層交換機(jī)的地址從左到右依次為:“6.I.I.0”,“6.I.2.0”,“6.I.3.0”,“6.2.I.0”,“6.2.2.0”,“6.2.3.0”,“6.3.I.0”,“6.3.2.0”,“6.3.3.0” ;
[0045]服務(wù)器地址:P.w.h.f.n,其中:w表示與服務(wù)器直連的邊緣層交換機(jī)的序號(hào),占8位;h表示子網(wǎng)內(nèi)的服務(wù)器從左到右依次所編的序號(hào),he [2,4],占8位;f表示大流數(shù)據(jù)包的序號(hào)服務(wù)字段,f值取0,占I位;η表示大流中數(shù)據(jù)包的序號(hào)字段,η值取0,占7位;
[0046]lb)SDN控制器獲得整個(gè)網(wǎng)絡(luò)的拓?fù)湫畔ⅲ⒃撔畔⒋鎯?chǔ)在拓?fù)湫畔⒛K中;
[0047]lc)SDN控制器給每個(gè)邊緣層交換機(jī)下發(fā)兩條默認(rèn)流表,一條用于匹配大流的第一個(gè)數(shù)據(jù)包,另一個(gè)用于匹配會(huì)話連接拆除階段的數(shù)據(jù)包。
[0048]步驟二:大流的產(chǎn)生和標(biāo)記。
[0049]源端服務(wù)器產(chǎn)生數(shù)據(jù)流,如果數(shù)據(jù)流在服務(wù)器緩存中的累積存儲(chǔ)量超過閾值t,在本實(shí)例中,t值大小為100KB,將其數(shù)據(jù)包標(biāo)記為大流,并標(biāo)記大流數(shù)據(jù)包的序號(hào),如某段被標(biāo)記為大流的數(shù)據(jù)包,其“f,η”的值依次為:“O,O”、……、“O,126”、“O,12