本發(fā)明涉及軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN),特別涉及網(wǎng)絡(luò)效用最大化的SDN負(fù)載均衡方法。
背景技術(shù):
軟件定義網(wǎng)絡(luò)(Software Defined Network,SDN)是美國(guó)斯坦福大學(xué)Clean Slate計(jì)劃中的一部分,是一種革命式新型網(wǎng)絡(luò)架構(gòu),最初為校園網(wǎng)絡(luò)研究人員設(shè)計(jì)創(chuàng)新網(wǎng)絡(luò)架構(gòu)并提供真實(shí)的實(shí)驗(yàn)平臺(tái),后經(jīng)McKeown等研究者的推廣逐漸在學(xué)術(shù)界和產(chǎn)業(yè)界普及。在SDN網(wǎng)絡(luò)中,SDN利用分層的思想將網(wǎng)絡(luò)數(shù)據(jù)平面與控制平面分離,由軟件驅(qū)動(dòng)的集中控制器對(duì)整個(gè)SDN網(wǎng)絡(luò)進(jìn)行邏輯上的控制及管理,負(fù)責(zé)制定轉(zhuǎn)發(fā)路徑,為網(wǎng)絡(luò)上層應(yīng)用和服務(wù)提供可編程接口,具有全局網(wǎng)絡(luò)視圖,能靈活地使用網(wǎng)絡(luò)資源。而數(shù)據(jù)平面僅需要根據(jù)控制平面生成的轉(zhuǎn)發(fā)規(guī)則進(jìn)行單純的數(shù)據(jù)流轉(zhuǎn)發(fā),降低了底層傳輸設(shè)備功能的復(fù)雜性。OpenFlow協(xié)議用于控制平面與數(shù)據(jù)平面之間通信,改變了傳統(tǒng)網(wǎng)絡(luò)中數(shù)據(jù)包轉(zhuǎn)發(fā)的方式。數(shù)據(jù)平面通過OpenFlow協(xié)議向集中控制器發(fā)送流請(qǐng)求數(shù)據(jù)包,控制器利用全局網(wǎng)絡(luò)視圖向數(shù)據(jù)平面下發(fā)轉(zhuǎn)發(fā)規(guī)則。與傳統(tǒng)網(wǎng)絡(luò)架構(gòu)相比,SDN這種控制轉(zhuǎn)發(fā)分離的網(wǎng)絡(luò)架構(gòu)通過集中控制器,能夠?qū)崟r(shí)地監(jiān)測(cè)全局網(wǎng)絡(luò)狀態(tài),非常適合用于解決目前互聯(lián)網(wǎng)面臨的網(wǎng)絡(luò)資源利用率低、鏈路負(fù)載不均衡以及網(wǎng)絡(luò)服務(wù)質(zhì)量保證等問題。SDN目前已經(jīng)在校園網(wǎng)、數(shù)據(jù)中心網(wǎng)絡(luò)領(lǐng)域取得了不少的成果,如斯坦福大學(xué)計(jì)算機(jī)系部署的Plug-n-Serve負(fù)載均衡模型以及谷歌數(shù)據(jù)中心B4網(wǎng)絡(luò)。
負(fù)載均衡技術(shù)通過在網(wǎng)絡(luò)中實(shí)施均衡,可有效地提高網(wǎng)絡(luò)的吞吐率和數(shù)據(jù)處理能力,使其可用性得到了增強(qiáng)。負(fù)載均衡是一種將計(jì)算機(jī)網(wǎng)絡(luò)中的負(fù)載進(jìn)行分擔(dān)的技術(shù),負(fù)載均衡的主要目的是將外部發(fā)來的大量請(qǐng)求,根據(jù)一定的算法,均勻地分散到網(wǎng)絡(luò)的各個(gè)節(jié)點(diǎn)當(dāng)中,使得現(xiàn)有的鏈路以及網(wǎng)絡(luò)中的計(jì)算資源得到充分利用。這樣就能縮短響應(yīng)時(shí)間并提高了整個(gè)網(wǎng)絡(luò)的吞吐率。
傳統(tǒng)互聯(lián)網(wǎng)雖然能夠利用綜合服務(wù)(Integrated Services,簡(jiǎn)稱IntServ)或區(qū)分服務(wù)(Differentiated Service,簡(jiǎn)稱DiffServ)提供一定程度的服務(wù)質(zhì)量(Quality of Service,簡(jiǎn)稱QoS)保障,但由于他們都是建立在分布式互聯(lián)網(wǎng)架構(gòu)上,收集全局網(wǎng)絡(luò)狀態(tài)信息難度巨大,因此無法在全球范圍內(nèi)得到推廣。SDN架構(gòu)通過將控制平面和數(shù)據(jù)平面分離,周期性地向交換機(jī)發(fā)送狀態(tài)請(qǐng)求信息,能夠得到最新的網(wǎng)絡(luò)狀態(tài)信息。因此,SDN能夠根據(jù)實(shí)時(shí)的鏈路負(fù)載情況分配流量,提高網(wǎng)絡(luò)資源利用率,減輕負(fù)載過重時(shí)的網(wǎng)絡(luò)擁塞,保證QoS。目前根據(jù)調(diào)度的分配對(duì)象,基于SDN的負(fù)載均衡技術(shù)主要可以分為基于大流(超過一定大小且持續(xù)時(shí)間較長(zhǎng)的流)識(shí)別的調(diào)度算法、面向QoS的調(diào)度以及其他算法。基于大流識(shí)別的調(diào)度算法將實(shí)時(shí)探測(cè)網(wǎng)絡(luò)大流,當(dāng)網(wǎng)絡(luò)鏈路發(fā)生擁塞時(shí),系統(tǒng)將優(yōu)先為大流計(jì)算一條合理的轉(zhuǎn)發(fā)路徑,從而解決鏈路擁塞,保證鏈路負(fù)載均衡。面向QoS的流量調(diào)度則是在保證服務(wù)質(zhì)量的同時(shí)實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載均衡,主要針對(duì)網(wǎng)絡(luò)中的實(shí)時(shí)不同業(yè)務(wù)流,為其計(jì)算一條滿足QoS需求的的路徑,當(dāng)網(wǎng)絡(luò)發(fā)生擁塞時(shí),控制器將結(jié)合業(yè)務(wù)流量需求和實(shí)時(shí)網(wǎng)絡(luò)狀態(tài)重新為業(yè)務(wù)選擇合適的后續(xù)路徑,從而保證業(yè)務(wù)的QoS需求。
上述兩類方法都是在控制器Floodlight中采用迪杰斯特拉Dijkstra最短路徑算法為服務(wù)選擇一條從源節(jié)點(diǎn)到目標(biāo)節(jié)點(diǎn)最短的路徑進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā),采用傳統(tǒng)的“最小跳數(shù)”作為鏈路權(quán)重,在整個(gè)網(wǎng)絡(luò)運(yùn)行過程中,鏈路的權(quán)重值將恒定不變,不能有效地反映鏈路的實(shí)時(shí)狀態(tài)和質(zhì)量,無法滿足用戶的QoS要求,即網(wǎng)絡(luò)吞吐量、端到端時(shí)延和丟包率等QoS影響因子不能達(dá)到理想的要求,且不能根據(jù)鏈路的實(shí)際負(fù)載動(dòng)態(tài)調(diào)整網(wǎng)絡(luò)流量分布,無法實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡。
技術(shù)實(shí)現(xiàn)要素:
為解決以上技術(shù)問題,本發(fā)明提出了一種網(wǎng)絡(luò)效用最大化的軟件定義網(wǎng)絡(luò)負(fù)載均衡方法,綜合考慮業(yè)務(wù)QoS特點(diǎn)和鏈路負(fù)載情況實(shí)時(shí)為數(shù)據(jù)流進(jìn)行路徑選擇,在保證網(wǎng)絡(luò)負(fù)載均衡的同時(shí)保證最大化的業(yè)務(wù)QoS。
本發(fā)明一種網(wǎng)絡(luò)效用最大化的軟件定義網(wǎng)絡(luò)負(fù)載均衡方法,根據(jù)數(shù)據(jù)包的源IP地址和目的IP地址找到源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d之間的路徑集合;若路徑集合不為空,則區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)類型,給定滿足業(yè)務(wù)QoS的影響因子權(quán)值,計(jì)算滿足業(yè)務(wù)QoS的影響因子值,根據(jù)影響因子權(quán)值和影響因子值計(jì)算路徑滿足業(yè)務(wù)QoS的效用值,計(jì)算路徑的負(fù)載;當(dāng)網(wǎng)絡(luò)不擁塞時(shí),選擇能為業(yè)務(wù)帶來最大效用的路徑,當(dāng)網(wǎng)絡(luò)擁塞時(shí),選擇效用值與負(fù)載差值最大的路徑。
優(yōu)選地,所述根據(jù)數(shù)據(jù)包的源IP地址和目的IP地址找到源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d之間的路徑集合采用k最短路徑算法。
優(yōu)選地,所述區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)類型采用數(shù)據(jù)包頭部的Tos域的前6bits。
優(yōu)選地,所述根據(jù)影響因子權(quán)值和影響因子值計(jì)算路徑滿足業(yè)務(wù)QoS的效用值包括:
表示路徑r的效用值;
Uij=∑wnun(xn)表示鏈路(i,j)的效用值,其中n∈(u,d,p),wu、wd、wp分別為帶寬利用率loadij的效用值的權(quán)重值、鏈路時(shí)延delayij的效用值的權(quán)重值和鏈路丟包率lossij的效用值的權(quán)重值;表示帶寬利用率loadij的效用值,表示鏈路時(shí)延delayij的效用值,表示鏈路丟包率lossij的效用值;
表示帶寬利用率loadij歸一化值,表示鏈路時(shí)延delayij歸一化值,表示鏈路丟包率lossij歸一化值;表示平均帶寬利用率,表示路徑r的平均時(shí)延,表示網(wǎng)絡(luò)鏈路平均丟包率;E是網(wǎng)絡(luò)中鏈路(i,j)的集合,m是所有鏈路條數(shù)。
優(yōu)選地,所述鏈路丟包率計(jì)算方式包括每個(gè)測(cè)量周期統(tǒng)計(jì)鏈路兩端交換機(jī)相應(yīng)端口的統(tǒng)計(jì)數(shù)據(jù),用兩者端口的發(fā)送字節(jié)數(shù)與接收的字節(jié)數(shù)之差除以總的發(fā)送字節(jié)數(shù)。
優(yōu)選地,所述鏈路時(shí)延計(jì)算方式包括:
treceive表示控制器收到交換機(jī)j發(fā)送的PACKET_IN消息時(shí)的時(shí)間,tsent表示控制器發(fā)送探測(cè)報(bào)文給交換機(jī)i的時(shí)間,RTTi是控制器到交換機(jī)i的往返時(shí)延,RTTj則表示控制器到交換機(jī)j的往返時(shí)延。
優(yōu)選地,所述計(jì)算路徑的負(fù)載,包括根據(jù)鏈路帶寬利用率loadij計(jì)算路徑r的負(fù)載,包括:
Load(r)=Max(loadij)
MaxBandij為鏈路(i,j)的最大帶寬,BandWidtht-interface表示t時(shí)刻采集接口interface流入方向已經(jīng)占用的帶寬,packet_size為采集接口interface數(shù)據(jù)包大小,Δt為流量采集間隔周期,T為采樣持續(xù)時(shí)間。
優(yōu)選地,根據(jù)鏈路帶寬利用率loadij判斷網(wǎng)絡(luò)是否擁塞,包括如果loadij>0.7,則認(rèn)為交換機(jī)i和交換機(jī)j之間的鏈路發(fā)生擁塞,否則為不擁塞。
本發(fā)明與現(xiàn)有技術(shù)相比包括以下優(yōu)點(diǎn):
本發(fā)明為滿足業(yè)務(wù)QoS的不同屬性,賦予QoS的影響因子不同的權(quán)重,克服了現(xiàn)有技術(shù)中鏈路的權(quán)重值恒定不變,不能有效地反映鏈路的實(shí)時(shí)狀態(tài)和質(zhì)量的問題,有效地滿足用戶的QoS要求;本發(fā)明通過結(jié)合其相應(yīng)權(quán)重計(jì)算路徑集中每條路徑的效用值,并考慮網(wǎng)絡(luò)負(fù)載的實(shí)時(shí)情況;在網(wǎng)絡(luò)負(fù)載較好時(shí),選在效用值最大的路徑為最佳路徑,在網(wǎng)絡(luò)發(fā)生擁塞時(shí),選擇效用與路徑負(fù)載差值最大的路徑為最佳路徑。從而能夠在保證網(wǎng)絡(luò)負(fù)載均衡的同時(shí),還能最大程度上的滿足業(yè)務(wù)的QoS要求。
附圖說明
圖1為本發(fā)明網(wǎng)絡(luò)效用最大化的SDN負(fù)載均衡方法優(yōu)選實(shí)施例流程示意圖;
圖2為本發(fā)明選擇路由的影響因子采集圖;
圖3為本發(fā)明中滿足業(yè)務(wù)QoS的效用值計(jì)算流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例進(jìn)一步詳細(xì)說明。
本發(fā)明網(wǎng)絡(luò)效用最大化的軟件定義網(wǎng)絡(luò)負(fù)載均衡方法,優(yōu)選實(shí)施例如圖1所示基于效用最大化的負(fù)載均衡方法優(yōu)選實(shí)施例算法流程示意圖,可以描述為:根據(jù)數(shù)據(jù)包的源IP地址和目的IP地址找到源節(jié)點(diǎn)s到目的節(jié)點(diǎn)d之間的路徑集合;若路徑集合不為空,則區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)類型,給定滿足業(yè)務(wù)QoS的影響因子權(quán)值,計(jì)算滿足業(yè)務(wù)QoS的影響因子值,根據(jù)影響因子權(quán)值和影響因子值計(jì)算路徑滿足業(yè)務(wù)QoS的效用值,計(jì)算路徑的負(fù)載;當(dāng)網(wǎng)絡(luò)不擁塞時(shí),選擇能為業(yè)務(wù)帶來最大效用的路徑,當(dāng)網(wǎng)絡(luò)擁塞時(shí),選擇效用值與負(fù)載差值最大的路徑。
本發(fā)明包括以下幾個(gè)主要步驟:尋找源節(jié)點(diǎn)到目的節(jié)點(diǎn)之間的多條路徑(路徑集合);區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)類型;計(jì)算滿足業(yè)務(wù)QoS的影響因子值;根據(jù)影響因子權(quán)值和影響因子值計(jì)算路徑滿足業(yè)務(wù)QoS的效用值;計(jì)算路徑的負(fù)載;考慮全局信息并選擇最佳路由。下面對(duì)各主要步驟分別進(jìn)行說明。
作為本發(fā)明可實(shí)現(xiàn)方式,所述尋找源節(jié)點(diǎn)到目的節(jié)點(diǎn)之間的多條路徑,具體描述如下:
當(dāng)一個(gè)新的流到達(dá)OpenFlow交換機(jī)時(shí),流表中沒有匹配的流表項(xiàng),交換機(jī)將通過PACKET_IN消息將數(shù)據(jù)包轉(zhuǎn)發(fā)給控制器??刂破魇盏浇粨Q機(jī)的PACKET_IN消息時(shí),路由計(jì)算模塊會(huì)提取相應(yīng)的包頭信息,如源地址、目標(biāo)地址、端口信息等來計(jì)算相應(yīng)的路徑。根據(jù)提取到的源節(jié)點(diǎn)和目的節(jié)點(diǎn)的IP地址,使用k最短路徑算法計(jì)算兩節(jié)點(diǎn)之間可能存在的多條路由。
本發(fā)明k最短路徑算法使用最小堆來存儲(chǔ)候選路徑,通過預(yù)先處理各鏈路的簡(jiǎn)化費(fèi)用,用鄰接鏈表存儲(chǔ)從各節(jié)點(diǎn)出發(fā)鏈路的簡(jiǎn)化花費(fèi)并按照大小進(jìn)行排序,每次擴(kuò)展候選路徑時(shí)只選取從偏離點(diǎn)出發(fā)的簡(jiǎn)化費(fèi)用最小的鏈路,并與偏離路徑組成第k短路徑。
作為本發(fā)明可實(shí)現(xiàn)方式,所述區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)類型,具體描述如下:
在OpenFlow標(biāo)準(zhǔn)協(xié)議中定義了十元組作為流表的包頭域,其中IP數(shù)據(jù)包頭部的Tos域中前6bits為十元組中的一元,利用Tos域可以區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)屬性。Tos(Type of service,業(yè)務(wù)類型)域是指上層應(yīng)用對(duì)數(shù)據(jù)包所期望的服務(wù)質(zhì)量,是IP數(shù)據(jù)包包頭的一部分。
不同的網(wǎng)絡(luò)業(yè)務(wù)對(duì)QoS有不同的需求,因此需要考慮到達(dá)網(wǎng)絡(luò)中數(shù)據(jù)流的業(yè)務(wù)屬性。根據(jù)IP數(shù)據(jù)包頭部的Tos域可以區(qū)分?jǐn)?shù)據(jù)流的業(yè)務(wù)屬性,并根據(jù)影響業(yè)務(wù)滿足其QoS的影響因子的重要程度賦予相應(yīng)的權(quán)重??梢园丫W(wǎng)絡(luò)業(yè)務(wù)分為會(huì)話類業(yè)務(wù)、流媒體業(yè)務(wù)、交互類業(yè)務(wù)、背景類業(yè)務(wù)等。
作為本發(fā)明可實(shí)現(xiàn)方式,所述給定滿足業(yè)務(wù)QoS的影響因子權(quán)值,具體描述如下:
不同業(yè)務(wù)對(duì)QoS影響因子的要求不同:
對(duì)時(shí)延的要求從高到低:會(huì)話類業(yè)務(wù)>流媒體業(yè)務(wù)>交互類業(yè)務(wù)>背景類業(yè)務(wù);
對(duì)丟包率的要求從高到低:背景類業(yè)務(wù)>交互類業(yè)務(wù)>流媒體業(yè)務(wù)>會(huì)話類業(yè)務(wù)。
作為本發(fā)明可實(shí)現(xiàn)方式,所述計(jì)算滿足業(yè)務(wù)QoS的影響因子值,具體包括:
本發(fā)明QoS的影響因子包括鏈路寬帶利用率、丟包率和時(shí)延等QoS相關(guān)參數(shù)。根據(jù)這些參數(shù),路由計(jì)算模塊才能根據(jù)效用函數(shù)為業(yè)務(wù)計(jì)算出一條滿足業(yè)務(wù)和網(wǎng)絡(luò)效用最大化的路徑,并且通過獲取鏈路帶寬利用率可以監(jiān)視網(wǎng)絡(luò)鏈路擁塞狀況以實(shí)現(xiàn)動(dòng)態(tài)流量調(diào)度,緩解網(wǎng)絡(luò)擁塞。
首先,通過控制器獲取網(wǎng)絡(luò)中各交換機(jī)的實(shí)時(shí)數(shù)據(jù),并通過采集到的數(shù)據(jù)計(jì)算鏈路之間的帶寬利用率、時(shí)延和丟包率等。
然后,對(duì)這些數(shù)據(jù)進(jìn)行歸一化的處理,并結(jié)合不同業(yè)務(wù)滿足其QoS的不同影響因子的相應(yīng)權(quán)重,計(jì)算各路徑的效用值。同時(shí),計(jì)算網(wǎng)絡(luò)的平均負(fù)載度和每條路徑的負(fù)載。
OpenFlow協(xié)議雖然提供一些功能讀取網(wǎng)絡(luò)狀態(tài),但是時(shí)延、丟包率等這些QoS影響因子無法直接獲取,所以需要具體的網(wǎng)絡(luò)狀態(tài)信息采集工具和評(píng)估方法獲取QoS相關(guān)影響因子。
為了獲取保證全局網(wǎng)絡(luò)裝填信息的實(shí)時(shí)性和準(zhǔn)確性,本發(fā)明優(yōu)選采用主動(dòng)式信息采集方法,即由控制器定期向交換機(jī)發(fā)起查詢請(qǐng)求信息獲取每個(gè)交換機(jī)端口信息,從而根據(jù)所述端口信息計(jì)算QoS相關(guān)影響因子。
1)關(guān)于鏈路利用率的計(jì)算
本發(fā)明采用sFlow技術(shù)監(jiān)控網(wǎng)絡(luò)中OpenFlow交換機(jī)的流量,并根據(jù)統(tǒng)計(jì)的流量信息計(jì)算鏈路帶寬利用率,從而避免控制器頻繁向交換機(jī)發(fā)送STATS_REQUEST信息,減少網(wǎng)絡(luò)開銷。sFlow技術(shù)提出的基于“統(tǒng)計(jì)采樣方式”的網(wǎng)絡(luò)級(jí)實(shí)時(shí)流量監(jiān)測(cè)技術(shù),不僅可以提供完整的第二層到第四層甚至全網(wǎng)范圍內(nèi)的實(shí)時(shí)流量信息,使用戶能夠?qū)崟r(shí)地掌握網(wǎng)絡(luò)傳輸流的性能跟和狀況。sFlow監(jiān)控工具由sFlow Agent和sFlowCollector兩部分組成。
本發(fā)明提出的負(fù)載均衡機(jī)制將sFlow Agent作為客戶端安裝在OpenFLow交換機(jī)中,獲取進(jìn)入交換機(jī)接口的數(shù)據(jù)包信息并封裝成sFlow報(bào)文,發(fā)送給集成在Floodlight中的sFlow Collector。sFlow Collector可以同時(shí)接收多個(gè)sFlow Agent發(fā)來的sFlow報(bào)文,并對(duì)sFlow報(bào)文進(jìn)行統(tǒng)計(jì)分析處理。然后控制器則根據(jù)sFlow Collector統(tǒng)計(jì)的交換機(jī)接口數(shù)據(jù),由下式計(jì)算出每個(gè)交換機(jī)接口的帶寬。
式中,BandWidtht-interface表示t時(shí)刻采集接口interface流入方向已經(jīng)占用的帶寬,packet_size為sFlow Agent采集接口interface數(shù)據(jù)包大小,Δt為流量采集間隔周期,T為采樣持續(xù)時(shí)間。
因此,對(duì)于交換機(jī)i與交換機(jī)j之間的鏈路(i,j)的帶寬利用率loadij計(jì)算如下式所示:
式中,MaxBandij為鏈路(i,j)的最大帶寬。因此,網(wǎng)絡(luò)狀態(tài)采集模塊則可以定期獲取網(wǎng)絡(luò)中每條鏈路的使用情況。
擁塞監(jiān)測(cè)模塊通過檢查鏈路利用率判定鏈路是否發(fā)生擁塞,如果load(i,j)>0.7,則認(rèn)為交換機(jī)i與交換機(jī)j之間的鏈路發(fā)生擁塞,擁塞監(jiān)測(cè)模塊將發(fā)送擁塞信號(hào)給路由計(jì)算模塊。
2)關(guān)于時(shí)延的計(jì)算
時(shí)延是QoS中非常重要的服務(wù)影響因子,尤其是對(duì)實(shí)時(shí)性要求很高的多媒體業(yè)務(wù),如VoIP和交互性視頻業(yè)務(wù),要求端到端的時(shí)延不能超過150ms,一旦超過,用戶的服務(wù)體驗(yàn)將嚴(yán)重下降。
本發(fā)明采用OpenNetMon給出的網(wǎng)絡(luò)參數(shù)測(cè)量方法來計(jì)算鏈路時(shí)延和丟包。如圖3所示,具體包括以下過程:
OpenNetMon方案中控制器通過PACKET_OUT消息定期向交換機(jī)i注入鏈路層發(fā)現(xiàn)協(xié)議LLDP廣播包,記錄發(fā)送時(shí)間tsend,LLDP廣播包將在交換機(jī)i中安裝一個(gè)新的流表,表明將包發(fā)送給交換機(jī)j。
當(dāng)交換機(jī)j收到該LLDP包時(shí),由于交換機(jī)j中沒有與之匹配的流表,故交換機(jī)j將向控制器發(fā)送PACKET_IN消息。
當(dāng)控制器收到交換機(jī)j發(fā)送的PACKET_IN消息后,記錄接收時(shí)間trecieve,則可以得出從控制器發(fā)送探測(cè)報(bào)文到收到PACKET_IN消息的總時(shí)間。由于控制器始終與網(wǎng)絡(luò)中的交換機(jī)保持恒定的連接,控制器可以記錄從發(fā)送FEATURE_REQUEST消息給交換機(jī)到收到相應(yīng)FEATURE_REPLY消息時(shí)的往返時(shí)延,從而獲知自己與交換機(jī)之間的時(shí)延。
所以交換機(jī)i與交換機(jī)j之間鏈路(i,j)的時(shí)延delayij由下式得出:
式中,treceive表示控制器收到交換機(jī)j發(fā)送的PACKET_IN消息時(shí)的時(shí)間,tsent表示控制器發(fā)送探測(cè)報(bào)文給交換機(jī)i的時(shí)間,RTTi是控制器到交換機(jī)i的往返時(shí)延,RTTj則表示控制器到交換機(jī)j的往返時(shí)延。其中,控制器到交換機(jī)的往返時(shí)延RTTswitch通過下式計(jì)算得到:
RTTswitch=tr-ts
其中,ts表示控制器發(fā)送STATS_REQUEST消息給交換機(jī)的時(shí)間,而tr則表示控制器收到STATS_REPLY消息的時(shí)間。
3)關(guān)于計(jì)算鏈路丟包率
OpenNetMon中對(duì)丟包率的統(tǒng)計(jì)不是以流為單位,而是計(jì)算一條鏈路兩端的交換機(jī)的統(tǒng)計(jì)數(shù)據(jù),控制器周期性地分別詢問鏈路兩端的交換機(jī),獲取兩個(gè)交換機(jī)相連的端口計(jì)數(shù)器的統(tǒng)計(jì)數(shù)據(jù)?,F(xiàn)有技術(shù)OpenNetMon是對(duì)每個(gè)周期統(tǒng)計(jì)鏈路丟包率,即用測(cè)量周期中的兩端交換機(jī)計(jì)數(shù)器的增量相減的絕對(duì)值除以測(cè)量周期就是該條鏈路的丟包率。
特別地,本發(fā)明對(duì)OpenNetMon丟包測(cè)量方法進(jìn)行改進(jìn),每個(gè)測(cè)量周期統(tǒng)計(jì)鏈路兩端交換機(jī)相應(yīng)端口的統(tǒng)計(jì)數(shù)據(jù),用兩者端口的發(fā)送字節(jié)數(shù)與接收的字節(jié)數(shù)之差除以總的發(fā)送字節(jié)數(shù)就是該條鏈路的丟包率,其計(jì)算公式如下:
式中,receivei、receivej分別表示交換機(jī)i,j在鏈路lij上發(fā)送的字節(jié)數(shù),sendi、sendj分別表示交換機(jī)i,j在鏈路(i,j)上接收的字節(jié)數(shù)。
本發(fā)明關(guān)于計(jì)算路徑的效用值和網(wǎng)絡(luò)實(shí)時(shí)負(fù)載,采用以下方式。
首先本發(fā)明將網(wǎng)絡(luò)表示為一個(gè)加權(quán)圖G(N,E),例如圖2所示,其中,N={node1,node2,...,noden}表示網(wǎng)絡(luò)中的交換機(jī)集合,E為圖2中邊的集合,表示交換機(jī)之間的鏈路(網(wǎng)絡(luò)中鏈路的集合),并設(shè)置節(jié)點(diǎn)個(gè)數(shù)為n,邊數(shù)為m(鏈路的數(shù)量)。因此邊eij表示交換機(jī)i與交換機(jī)j之間的鏈路。根據(jù)采集的網(wǎng)絡(luò)狀態(tài)信息,圖G(N,E)中每條邊eij用一個(gè)3維向量表示其鏈路狀態(tài),即xij=(delayij,lossij,loadij),其中delayij,lossij,loadij分別表示交換機(jī)i與交換機(jī)j之間的時(shí)延、丟包率以及鏈路利用率。將從源節(jié)點(diǎn)s到目標(biāo)節(jié)點(diǎn)d之間的某條路徑記作r,r∈E,則QoS的影響因子的形式化表示如下:
(1)路徑r的時(shí)延
(2)路徑r的平均時(shí)延
(3)路徑r的丟包率
(4)網(wǎng)絡(luò)鏈路平均丟包率
(5)平均帶寬利用率
(6)鏈路負(fù)載抖動(dòng)
為了滿足在保證網(wǎng)絡(luò)負(fù)載均衡的同時(shí)滿足業(yè)務(wù)數(shù)據(jù)傳輸所需的QoS要求,需要考慮鏈路的時(shí)延、丟包以及利用率等相關(guān)影響因子,以選擇當(dāng)前網(wǎng)絡(luò)環(huán)境最優(yōu)的轉(zhuǎn)發(fā)路徑。從數(shù)據(jù)轉(zhuǎn)發(fā)平面來看,轉(zhuǎn)發(fā)鏈路的時(shí)延反映了當(dāng)前鏈路的傳輸效率,而轉(zhuǎn)發(fā)鏈路的丟包率則反映了鏈路數(shù)據(jù)傳輸?shù)目煽啃裕鶕?jù)不同業(yè)務(wù)的不同QoS需求,應(yīng)盡量選擇時(shí)延小、丟包率較低的鏈路,從而保障了QoS。同時(shí),為了保證網(wǎng)絡(luò)流量負(fù)載均衡,業(yè)務(wù)應(yīng)該選擇可用帶寬較大的鏈路進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)。因此,本發(fā)明提出的基于效用最大化的負(fù)載均衡方法考慮不同業(yè)務(wù)可以從路徑集合中獲取的每條路徑的網(wǎng)絡(luò)效用值。基于不同業(yè)務(wù)屬性QoS感知的網(wǎng)絡(luò)效用值U(x)可以描述交換機(jī)之間鏈路質(zhì)量?jī)?yōu)劣的鏈路權(quán)重,其值越大,表示鏈路能最大化地保證業(yè)務(wù)的QoS需求。
對(duì)于新數(shù)據(jù)流而言,把效用函數(shù)定義為U(x),其中x代表影響業(yè)務(wù)流QoS的各個(gè)因素組成的向量,通過U(x)的值來衡量業(yè)務(wù)流從網(wǎng)絡(luò)中獲得的滿意度。效用計(jì)算模型如圖3所示。關(guān)于多屬性的效用函數(shù)的選擇其定義如下式所示:
式中,x為n個(gè)屬性組成的向量,ui(xi)為屬性xi對(duì)應(yīng)的效用值,wi為相應(yīng)的權(quán)重,權(quán)重可根據(jù)實(shí)際業(yè)務(wù)的QoS要求動(dòng)態(tài)調(diào)整,由于網(wǎng)絡(luò)中鏈路丟包率在0到1之間,而鏈路時(shí)延與鏈路利用率相比屬于大數(shù),在數(shù)量級(jí)上差異很大,因此在進(jìn)行鏈路權(quán)重計(jì)算時(shí)需要先進(jìn)行歸一化處理。本發(fā)明采用分別對(duì)鏈路帶寬利用率、時(shí)延、丟包歸一化處理,其計(jì)算如下式所示:
uij,dij,pij表示鏈路帶寬利用率loadij、鏈路時(shí)延delayij和鏈路丟包率lossij進(jìn)行歸一化處理后的數(shù)值。
針對(duì)業(yè)務(wù)流,它在鏈路上時(shí)延越小,丟包率越小,帶寬利用率越小,滿足業(yè)務(wù)的QoS效用值就越好,因此帶寬利用率loadij、鏈路時(shí)延delayij和鏈路丟包率lossij的效用值分別為:
針對(duì)不同業(yè)務(wù)流和要求的不同QoS體驗(yàn),本發(fā)明可以動(dòng)態(tài)的更改三者的權(quán)重,以滿足業(yè)務(wù)獲得最大的效用。所以鏈路(i,j)的效用值Uij為
Uij=∑wnun(xn)其中n∈(u,d,p)
其中wu、wd、wp分別為帶寬利用率loadij、鏈路時(shí)延delayij和鏈路丟包率lossij的效用值對(duì)應(yīng)的權(quán)重值。
因此,本發(fā)明定義在路徑r上能獲得的總效用U(r)為路徑上用戶能獲得滿足業(yè)務(wù)QoS的效用,由每段鏈路的QoS效用之和來表示,如下式所示:
根據(jù)前面計(jì)算的到的鏈路帶寬利用率loadij,可以計(jì)算路徑r的負(fù)載,如下式所示:
Load(r)=Max(loadij),(i,j)∈r
本發(fā)明對(duì)于判斷網(wǎng)絡(luò)是否發(fā)生擁塞,并利用所述路徑的效用值和負(fù)載,選擇最佳路徑,優(yōu)選采用以下方式:
根據(jù)前面計(jì)算得到的鏈路帶寬利用率loadij,可以判定鏈路是否發(fā)生擁塞,如果loadij>0.7,則認(rèn)為交換機(jī)i和交換機(jī)j之間的鏈路發(fā)生擁塞,否則為不擁塞。
最后考慮以上全局信息,選擇出最佳路徑:判斷網(wǎng)絡(luò)不擁塞,選擇路徑集中效用值最大的路徑。判斷網(wǎng)絡(luò)產(chǎn)生擁塞,選擇路徑集中效用值與負(fù)載差值最大的路徑。
在網(wǎng)絡(luò)不擁塞時(shí),選擇路徑集中效用最大的路徑,這樣可以滿足用戶的最大QoS。在網(wǎng)絡(luò)產(chǎn)生擁塞,選擇集中效用值與負(fù)載差值最大的路徑的原因是,負(fù)載是根據(jù)鏈路帶寬利用率得來的,如果鏈路帶寬利用率高,在計(jì)算效用的時(shí)候取其倒數(shù)值,它的效用就會(huì)變小。因此,再減去大的負(fù)載,路徑的差值肯定是會(huì)變小的。相反地,差值大就證明負(fù)載小。那么選擇差值最大的路徑就等于選擇了一條既滿足負(fù)載均衡,又滿足QoS最大化的路徑。
本發(fā)明當(dāng)網(wǎng)絡(luò)的負(fù)載標(biāo)準(zhǔn)方差沒有超過閾值時(shí),即均衡度較好時(shí),選擇能為業(yè)務(wù)帶來最大效用max(U(r))的路徑。當(dāng)網(wǎng)絡(luò)均衡度較差,即網(wǎng)絡(luò)負(fù)載不均衡時(shí),本發(fā)明選擇效用與負(fù)載差值最大的路徑。這樣,當(dāng)網(wǎng)絡(luò)負(fù)載較為均衡時(shí),滿足了業(yè)務(wù)的QoS,為網(wǎng)絡(luò)提供了最好的體驗(yàn)。當(dāng)網(wǎng)絡(luò)發(fā)生擁塞時(shí),同時(shí)考慮了業(yè)務(wù)QoS和網(wǎng)絡(luò)負(fù)載,在保證網(wǎng)絡(luò)負(fù)載均衡的同時(shí),獲得最大化的業(yè)務(wù)QoS。
本發(fā)明首先確定從源節(jié)點(diǎn)到目的節(jié)點(diǎn)之間存在的多條路徑,根據(jù)數(shù)據(jù)流業(yè)務(wù)屬性的不同,賦予滿足服務(wù)質(zhì)量的影響因子的不同的權(quán)重,然后通過采集交換機(jī)的信息,獲取網(wǎng)絡(luò)中的服務(wù)質(zhì)量的影響因子值,包括鏈路利用率、時(shí)延和丟包率等,接著計(jì)算路徑集中每條路徑的效用值和負(fù)載,最后結(jié)合全局考慮,為數(shù)據(jù)流選擇最佳路徑。本發(fā)明能夠在保證網(wǎng)絡(luò)動(dòng)態(tài)負(fù)載均衡的同時(shí),最大程度上滿足業(yè)務(wù)的服務(wù)質(zhì)量。
以上所舉實(shí)施例,對(duì)本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)進(jìn)行了進(jìn)一步的詳細(xì)說明,所應(yīng)理解的是,以上所舉實(shí)施例僅為本發(fā)明的優(yōu)選實(shí)施方式而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)對(duì)本發(fā)明所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。