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