周 杰
(安徽電子信息職業(yè)技術(shù)學(xué)院,安徽 蚌埠233000)
在當(dāng)前傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)中,網(wǎng)絡(luò)擁塞現(xiàn)象時(shí)常發(fā)生,為解決擁塞,傳統(tǒng)網(wǎng)絡(luò)大多通過計(jì)算和調(diào)度鏈路網(wǎng)絡(luò)資源來提高網(wǎng)絡(luò)數(shù)據(jù)的處理能力,實(shí)現(xiàn)負(fù)載均衡。這樣的鏈路負(fù)載均衡可以增大網(wǎng)絡(luò)帶寬,提高端到端的傳輸效率和數(shù)據(jù)吞吐量,不會因線路故障對傳輸造成影響[1]。但這種傳統(tǒng)的網(wǎng)絡(luò)鏈路負(fù)載均衡必須事先在數(shù)據(jù)傳輸前,進(jìn)行設(shè)計(jì)規(guī)劃,但對于傳輸過程中,網(wǎng)絡(luò)流量所具有的局部變化、動態(tài)變化和傳輸分布不均勻等情況,不能進(jìn)行實(shí)時(shí)且靈活的調(diào)整,從而使得網(wǎng)絡(luò)很容易出現(xiàn)擁塞的情況。隨著下一代互聯(lián)網(wǎng),軟件定義網(wǎng)絡(luò)即SDN(Software Defined Network)的提出,使得當(dāng)前傳統(tǒng)的網(wǎng)絡(luò)架構(gòu)正在逐漸的發(fā)生改變[2]。對于SDN網(wǎng)絡(luò)來說,它最大的特點(diǎn)是分離了數(shù)據(jù)控制功能和數(shù)據(jù)轉(zhuǎn)發(fā)功能[3],將控制功能轉(zhuǎn)交給該設(shè)備之外的控制器完成,因此SDN網(wǎng)絡(luò)通過控制器可以很容易實(shí)時(shí)獲得整個(gè)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)[4],從而可以針對全局設(shè)置策略以實(shí)現(xiàn)網(wǎng)絡(luò)負(fù)載均衡,因此針對SDN網(wǎng)絡(luò)設(shè)計(jì)了多路徑負(fù)載均衡(SDN-Multipath Balance,SDN-MB)方案。
多路徑負(fù)載均衡(SDN-MB)方案主要可分為兩部分,一是SDN控制器,負(fù)責(zé)SDN網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的管理和多路徑算法策略的制定和下發(fā);同時(shí)將所有Open Flow交換機(jī)的狀態(tài)信息進(jìn)行收集,并進(jìn)行分析和計(jì)算,然后下發(fā)符合需求的流表,從而實(shí)現(xiàn)了SDN網(wǎng)絡(luò)的負(fù)載均衡[5,6,7]。二是Open-Flow交換機(jī),負(fù)責(zé)向控制器傳遞鏈路信息,并執(zhí)行控制器下發(fā)的的負(fù)載均衡流表,從而對數(shù)據(jù)包進(jìn)行相關(guān)的操作。SDN-MB總體思想是對可能引起網(wǎng)絡(luò)擁塞的大流量數(shù)據(jù)進(jìn)行適當(dāng)調(diào)整,將負(fù)載重鏈路的流量調(diào)整到負(fù)載輕鏈路上,這樣網(wǎng)絡(luò)中負(fù)載重鏈路降低負(fù)載,從而使整個(gè)網(wǎng)絡(luò)的鏈路負(fù)載達(dá)到了均衡。流程圖如圖1所示。
圖1 SDN-MB設(shè)計(jì)模型的算法流程圖
SDN-MB中SDN控制器首先通過LLDP鏈路層發(fā)現(xiàn)協(xié)議,來發(fā)現(xiàn)并構(gòu)建全局網(wǎng)絡(luò)拓?fù)鋱D,并形成每對主機(jī)之間的所有可能路徑集合,Path(S,D)={Path1,Path2.....Pathn},接 著,SDN控 制器通過向OpenFlow交換機(jī)傳遞stats_request消息,來獲取所有鏈路的流量和鏈路狀態(tài)的統(tǒng)計(jì)信息,主要為空閑帶寬bandwidthj和鏈路時(shí)延delay_timej(1≤j≤n)。所有每條鏈路就有Path j=(ban dwidth j,delay_time),而通訊節(jié)點(diǎn)間的空閑帶寬Path_bandwidth是由鏈路的最小帶寬決定的,其通訊時(shí)延Path_delay是由鏈路總時(shí)延決定的,公式(1)(2)所示:
SDN控制器通過每條鏈路統(tǒng)計(jì)信息,計(jì)算出每條鏈路的權(quán)值W link_j,公式如(3)所示。權(quán)值越大越優(yōu),表示該平均可用帶寬就越大,傳輸性能好,該鏈路的優(yōu)先傳輸流量。權(quán)值越小越不優(yōu),表示該鏈路存在較大負(fù)載,容易引發(fā)堵塞,該鏈接應(yīng)該減少傳輸?shù)臄?shù)據(jù)量。
其中Lj為網(wǎng)絡(luò)中第j條鏈路的鏈路帶寬,Bj為網(wǎng)絡(luò)中第j條鏈路的每秒中流量。
在整個(gè)網(wǎng)絡(luò)按照權(quán)值選擇鏈路進(jìn)行數(shù)據(jù)轉(zhuǎn)發(fā)過程中,OpenFlow交換機(jī)不斷將自己的狀態(tài)消息發(fā)送給SDN控制器,從而使得SDN控制器獲得該交換機(jī)網(wǎng)絡(luò)流量等相關(guān)的統(tǒng)計(jì)信息,隨著網(wǎng)絡(luò)數(shù)據(jù)的不斷變化,當(dāng)發(fā)現(xiàn)一段時(shí)間內(nèi),鏈路的流量大于初始設(shè)置的流量閾值μ時(shí)(為了提高網(wǎng)絡(luò)傳輸流暢性和冗余性,μ值的設(shè)置要小于Lj),就進(jìn)行進(jìn)行網(wǎng)絡(luò)流量負(fù)載均衡,調(diào)整傳輸路徑,選取次優(yōu)權(quán)值的鏈路傳輸數(shù)據(jù)。
為了驗(yàn)證所提出的的多路徑負(fù)載均衡算法(SDN-MB)的性能,實(shí)驗(yàn)網(wǎng)絡(luò)仿真平臺采用兩臺安裝ubuntu16.04操作系統(tǒng)的主機(jī),一臺安裝了Mininet軟件用于模擬1臺服務(wù)器、3臺客戶端和7臺Open Flow交換機(jī)并設(shè)置發(fā)送端、接收端分別與交換機(jī)之間鏈路都為100Mbps,交換機(jī)之間的鏈路都為全雙工鏈路且?guī)挒?0Mbps的SDN網(wǎng)絡(luò),另一臺安裝OpenDay Light軟件用于模擬SDN控制器來向Open Flow交換機(jī)下發(fā)流表。仿真時(shí)間為60s,發(fā)送端不斷向接收端隨機(jī)發(fā)送逐漸增大的數(shù)據(jù)流,通過對網(wǎng)絡(luò)吞吐量和平均時(shí)延兩個(gè)指標(biāo)數(shù)據(jù),來比較正常數(shù)據(jù)傳輸和采用負(fù)載均衡的兩種情況。
2.2.1 計(jì)算鏈路帶寬利用率
交換機(jī)端口和流表等信息,Open Day Light控制器可以通過Open Flow協(xié)議獲取,從而計(jì)算出SDN網(wǎng)絡(luò)中鏈路的帶寬利用率,其具體獲得和計(jì)算如下步驟。
步驟1.計(jì)算鏈路最大帶寬
在兩個(gè)時(shí)間點(diǎn)(T1、T2),OpenDay Light控制器分別向交換機(jī)發(fā)送一個(gè)消息PortStatsRequest,其type類型字段為OfpPort,交換機(jī)通過PortStatsReply消息進(jìn)行回答。通過這兩個(gè)時(shí)間傳輸?shù)臄?shù)據(jù)量利用公式(4)可計(jì)算出鏈路最大帶寬。
公式中,Sen d_b表示交換機(jī)發(fā)送的字節(jié)數(shù),Receive_b表示交換機(jī)接收到的字節(jié)數(shù)。
步驟2.計(jì)算鏈路實(shí)際傳輸速率
當(dāng)OpenDay Light控制器檢測到交換機(jī)端口數(shù)據(jù)流時(shí),OpenDay Light控制器向交換機(jī)發(fā)送一個(gè)PortStatsRequest消息,將type類型字段設(shè)置為Ofp Flow,交換機(jī)收到后,發(fā)送PortStatsReply消息給控制器。控制器記錄下PortStatsReply消息中Time_duration,count_byte值,其中Time_duration為數(shù)據(jù)流的傳輸?shù)臅r(shí)間,count_byte為傳輸?shù)臄?shù)據(jù)量。所以,鏈路實(shí)際傳輸速率可通過公式(5)進(jìn)行計(jì)算。
步驟3.計(jì)算鏈路帶寬利用率
通過前兩個(gè)步驟后,獲得了鏈路的最大帶寬和實(shí)際傳輸速率后,可計(jì)算出鏈路帶寬的利用率,如式(6)。
2.2.2 計(jì)算鏈路時(shí)延
Open Day Light控制器通過其自身的網(wǎng)絡(luò)延遲類Network_Delay類來計(jì)算器鏈路時(shí)延,其中Display_Delay函數(shù)是顯示鏈路延時(shí)信息,包括源和目的地址和時(shí)延具體時(shí)間等。控制器在計(jì)算鏈路兩端的交換機(jī)A和交換機(jī)B信息的交換時(shí)延時(shí)間時(shí),其具體步驟如下:
步驟1.OpenDay Light控制器向交換機(jī)A發(fā)送Packet_Request消息。消息中包含LLDP協(xié)議,并記錄下發(fā)送該消息發(fā)送時(shí)的時(shí)間。
步驟2.Packet_Request消息中的操作字段讓交換機(jī)A通過其他接口轉(zhuǎn)發(fā)報(bào)文到交換機(jī)B。
步驟3.從交換機(jī)B接收報(bào)文后,交換機(jī)B匹配相應(yīng)的流表,同時(shí)交換機(jī)B發(fā)送Packet_Reply消息給控制器。
步驟4.在接收Packet_Reply消息后,控制器解析該報(bào)文,并用當(dāng)前時(shí)間減去向交換機(jī)A發(fā)送Packet_Request消息的時(shí)間,從而得到Time1。
步驟5.重復(fù)前幾個(gè)步驟,從OpenDay Light控制器發(fā)送Packet_Request消息給交換機(jī)B,然后交換機(jī)B傳送給交換機(jī)A,最后由交換機(jī)A發(fā)送Packet_Reply消息給控制器,記錄并計(jì)算出時(shí)間為Time2。此時(shí),(Time1+Time2)為控制器與交換機(jī)A、交換機(jī)A與交換機(jī)B、交換機(jī)B與控制器之間往返時(shí)間之和。
步驟6.在此之后,Open Day Light控制器分別向兩個(gè)交換機(jī)A、B發(fā)送帶有時(shí)間的echo_Request消息。在接收到消息后,交換機(jī)立即用帶有時(shí)間的echo_Reply消息應(yīng)答echo_Request消息,并計(jì)算出相應(yīng)的往返時(shí)間Time_A、Time_B。此時(shí),可通過公式(7)計(jì)算出交換機(jī)A和交換機(jī)B之間的平均鏈路的時(shí)延。
通過Mininet軟件的仿真,計(jì)算采用SPF路由算法和SDN-MB設(shè)計(jì)算法的SDN網(wǎng)絡(luò)模型,通過對帶寬利用率和平均時(shí)延的對比,可以得出以下分析。
從圖2可以顯示出SDN-MB設(shè)計(jì)模型的帶寬利用率比SPF路由算法的帶寬利用率高。剛開始時(shí),因?yàn)閭鬏數(shù)牧髁坎皇呛艽?這兩種策略的帶寬利用率沒有大的差別。但是7s后,隨著網(wǎng)絡(luò)傳輸中逐漸增大的網(wǎng)絡(luò)流量乃至最大時(shí),SDN-MB設(shè)計(jì)模型的帶寬利用率始終在75%左右,而SPF路由算法的帶寬利用率保持在38%左右。因此提出的SDN-MB設(shè)計(jì)模型在帶寬利用率上要明顯優(yōu)于SPF路由算法。
圖2 SDN-MB設(shè)計(jì)模型和SPF路由算法的帶寬利用率
圖3 是SPF路由算法和SDN-MB設(shè)計(jì)模型的平均延時(shí)對比圖,剛開始時(shí),網(wǎng)絡(luò)中只有較少流量,SPF路由算法的平均延時(shí)要稍微低于SDNMB設(shè)計(jì)模型的平均時(shí)延,這是因?yàn)殚_始階段采用SPF路由算法不需要網(wǎng)絡(luò)控制器的參與,使得系統(tǒng)消耗減少,數(shù)據(jù)時(shí)延減少。但是16s以后,SPF路由算法的平均延時(shí)明顯的出現(xiàn)了較大的增加,振動增大,網(wǎng)絡(luò)擁塞情況也隨之出現(xiàn),然而SDNMB設(shè)計(jì)模型的延時(shí)時(shí)間只出現(xiàn)了很小的振動,因?yàn)镾DN-MB設(shè)計(jì)模型可以通過SDN控制器將流量調(diào)度到其他空閑的路徑上,從而減少了擁塞。隨后SDN-MB設(shè)計(jì)模型中,雖然數(shù)據(jù)流量在不斷的增加,但平均延時(shí)始終保持在較小的范圍。所以,所提出的SDN-MB設(shè)計(jì)模型在平均延時(shí)要優(yōu)于SPF路由算法。
圖3 SDN-MB設(shè)計(jì)模型和SPF路由算法的平均延遲
針對SDN網(wǎng)絡(luò)的特性設(shè)計(jì)出一種鏈路多路徑的負(fù)載均衡模型(SDN-MB)。通過仿真實(shí)驗(yàn)對比結(jié)果說明,SDN-MB設(shè)計(jì)模型相對于SPF路由算法,能夠充分的使用網(wǎng)絡(luò)的帶寬資源,網(wǎng)絡(luò)中的帶寬利用率和平均延遲都有明顯的提高,使得網(wǎng)絡(luò)的整體性能得到了提高。同時(shí)提出的SDNMB設(shè)計(jì)模型存在著一些不足,例如網(wǎng)絡(luò)控制器只考慮單控制器的情況,因而存在單控制器冗余備份問題,解決這一情況的最好辦法是采用多控制器,如何能夠很好的采用多控制器保持網(wǎng)絡(luò)的穩(wěn)定性是下一步需要研究的問題。