詹可強
(福建信息職業(yè)技術(shù)學(xué)院計算機工程系,福建福州350001)
面對網(wǎng)絡(luò)環(huán)境與技術(shù)應(yīng)用的日趨復(fù)雜,使用TCP或UDP協(xié)議傳輸?shù)男蕟栴}與安全性問題愈發(fā)凸顯.IETF 在2000 年10 月制訂的Stream Control Transmission Protocol(SCTP)傳輸協(xié)定,改善傳輸效率與安全性的缺陷,并新增了多宿主(Multi-homing)和多流(Multi-streaming)機制.
TCP 本身機制并未支持多路傳輸機制,故實施負載均衡機制會遇到許多困難,同時在負載均衡的解決方法中,也常遇到失序的問題,造成不必要的重傳與數(shù)據(jù)包丟失的誤判,反而導(dǎo)致更多資源浪費與多余的數(shù)據(jù)包等待時間.
SCTP協(xié)議提供了多宿主和多流機制,允許端點間使用多條路徑做數(shù)據(jù)傳輸用,但傳統(tǒng)的SCTP協(xié)議僅選擇同一關(guān)聯(lián)中的一條路徑作為數(shù)據(jù)傳輸?shù)闹饕窂?,只有當重傳?shù)據(jù)或路徑故障時才切換到備用路徑,而不支持多路徑同時傳輸,在擁有多路徑的網(wǎng)絡(luò)環(huán)境中,并不能有效地提升網(wǎng)絡(luò)使用率[1].隨著多宿主的大量出現(xiàn)和SCTP的廣泛應(yīng)用,同時實時多媒體業(yè)務(wù)對帶寬的需求越來越大,研究如何利用SCTP的多流機制實現(xiàn)多路徑傳輸和負載均衡就具有很大的現(xiàn)實意義.
負載均衡是一種策略機制,它能通過多條鏈路或多臺服務(wù)器共同承擔一些繁重的I/O任務(wù)或計算,進而能以較低成本消除網(wǎng)絡(luò)瓶頸,提高網(wǎng)絡(luò)的靈活性和可靠性.負載均衡技術(shù)不僅可以維持網(wǎng)絡(luò)系統(tǒng)中負載的均衡分配.還能維護網(wǎng)絡(luò)系統(tǒng)的高效運行,因而是保證網(wǎng)絡(luò)系統(tǒng)高性能的重要技術(shù)[2].目前實現(xiàn)負載均衡的策略主要是在OSI 模型中的傳輸層實現(xiàn),最常用的負載均衡算法有RR(Round Robin)算法和WRR(Weighted Round Robin)算法等.
RR 算法是把客戶請求依次分派給各個成員服務(wù)器,其方式可以簡單理解為隨機選擇的方式.這種算法把各個服務(wù)器都看作是完全相同的.并不考慮每個服務(wù)器的連接數(shù)和響應(yīng)時間的不同.相當于在服務(wù)器群中隨機選擇提供業(yè)務(wù)的服務(wù)器[3].但由于這種算法是隨機選擇服務(wù)器的,因而在某些情況下對于服務(wù)器負載均衡的處理不夠理想.
WRR 算法是在RR 算法的基礎(chǔ)上,根據(jù)服務(wù)器群中各個服務(wù)器的運算速度及可建立連接數(shù)等方面的不同能力,給服務(wù)器群中的各個服務(wù)器加上相對應(yīng)的權(quán)重,通過依據(jù)高權(quán)重優(yōu)先的方式進行處理,來提高算法的負載均衡能力的改進型算法.但這種算法以分組為單位進行服務(wù),存在分組變長時帶來的不公平性[4].
ARD(Arrival Rate Dependent)算法是依據(jù)數(shù)據(jù)包到達率和服務(wù)率之間的依存關(guān)系來計算權(quán)重和服務(wù)時間,動態(tài)的分配數(shù)據(jù)包[5].這種算法較好地實現(xiàn)網(wǎng)絡(luò)的負載均衡,但存在當?shù)竭_率過小時無法實現(xiàn)負載均衡的情形.
綜合以上考慮,本文基于ARD 算法,提出新的改進型負載均衡演算機制I-ARD(Improved Arrival Rate Dependent).
ARD算法是以數(shù)據(jù)包的到達率和路徑的服務(wù)率的情況來動態(tài)地分配數(shù)據(jù)包,其根據(jù)到達率λ與服務(wù)率μ的相依關(guān)系,來推導(dǎo)路徑權(quán)重?的過程,從而根據(jù)權(quán)重來選擇數(shù)據(jù)包傳輸路徑[5].負載均衡的架構(gòu)主要是由路由器作為多條對外路徑的數(shù)據(jù)包分配者.當路由器接收到由區(qū)域網(wǎng)絡(luò)送來的數(shù)據(jù)包時,會計算并挑選一條對外路徑并轉(zhuǎn)發(fā)出去;對外權(quán)重?i的分配是通過到達率λ與服務(wù)率μ推導(dǎo)得知;而權(quán)重是用來將λ依照比例分配到每條對外的路徑上.因此,根據(jù)ARD 算法的數(shù)學(xué)公式可以得到以下結(jié)果:
由公式可以推導(dǎo)出權(quán)重?i,所以可再由后端所得回來的服務(wù)率求得各路徑應(yīng)分配的權(quán)重.
針對上述方法所計算出來的各個路徑的權(quán)重?i,存在當服務(wù)率分別為20 與30 時,且到達率每秒小于24與12時,數(shù)學(xué)運算式會產(chǎn)生負值,見表1.
表1 權(quán)重與到達率、服務(wù)率關(guān)系Tab.1 The relationship between weights and arrival rates as well as services rates
ARD算法能較好的實現(xiàn)數(shù)據(jù)包在不同路徑上的動態(tài)分配,從而實現(xiàn)網(wǎng)絡(luò)的負載均衡.但其考量若單位時間內(nèi)到達率過小時,數(shù)據(jù)包只會被分配到服務(wù)率大的線路,如果網(wǎng)絡(luò)上的數(shù)據(jù)包發(fā)生阻塞時將會造成大量數(shù)據(jù)包都在同一線路等待,而權(quán)重值為0或負值的線路無論如何也不會收到任何數(shù)據(jù)包.
因此,我們修正ARD 數(shù)學(xué)運算式產(chǎn)生負值的部分,也就是當?shù)竭_率小于24 且服務(wù)率為20 時,以及到達率小于12且服務(wù)率為30時的情況.由于此情況造成權(quán)重為負值,且ARD預(yù)設(shè)值是以0表示,如此將導(dǎo)致對外連接完全接收不到任何數(shù)據(jù)包.針對此問題,將權(quán)重為負值的部分改為1,同時針對閑置的對外連接分配數(shù)據(jù)包,并依據(jù)服務(wù)率高低按優(yōu)先權(quán)處理.而轉(zhuǎn)換成權(quán)重部分,如表1權(quán)重值部分的括號所示,同時由服務(wù)率最高線路以借一的方式補給服務(wù)率低的權(quán)重以符合運算式中權(quán)重相加必須等于100的規(guī)則.
針對ARD 所做的修改,主要是基于當?shù)竭_率呈現(xiàn)泊松分布時,抵達的幾率時間將呈現(xiàn)指數(shù)分配狀態(tài).因此,按照原本ARD 方法,當網(wǎng)絡(luò)發(fā)阻塞的時候,會因為權(quán)重配給方式,導(dǎo)致數(shù)據(jù)包同時涌入同一條對外線路,造成數(shù)據(jù)包大量等待現(xiàn)象;其修改后的算法正是針對這些狀態(tài)修正,修正方法主要依據(jù)服務(wù)率進而動態(tài)分配調(diào)整權(quán)重,由于線路服務(wù)率越大,表示服務(wù)完一個數(shù)據(jù)包的時間越短,也代表目的端接收來自源端傳送數(shù)據(jù)包的時間越短,故此處所修正的方法為:將閑置的對外線路加以判斷,若有閑置的對外線路時,某個權(quán)重優(yōu)先權(quán)較大的對外連接,其服務(wù)數(shù)據(jù)包的時間比正在閑置的對外連接服務(wù)時間還長時,便把目前需要分配的數(shù)據(jù)包分配給此閑置的對外連接,并將其權(quán)重減1 以符合ARD 的權(quán)重分配;另外,為避免服務(wù)率最好的線路權(quán)重等于0而導(dǎo)致閑置,因此,所有的權(quán)重值在減1 前先進行判斷,假設(shè)權(quán)重已經(jīng)為1時便不再減1,以確保線路會持續(xù)的服務(wù),直到當所有的線路權(quán)重都被減至1時,此時才將所有連接的權(quán)重設(shè)為原先預(yù)設(shè)權(quán)重.本文將此算法稱之為I-ARD(Improved Arrival Rate Dependent)演算法,其演算方法如下:
本文利用NS2 仿真軟件來模擬現(xiàn)實網(wǎng)絡(luò)狀況,比較下I-ARD 算法和RR、WRR 算法,在SCTP 網(wǎng)絡(luò)環(huán)境下模擬各路徑服務(wù)率為每秒50 個數(shù)據(jù)包的相同環(huán)境下,單條路徑與三條路徑的效能分析.通過仿真我們可以看到在單路徑情況下,網(wǎng)絡(luò)的吞吐率大約在每秒8 個數(shù)據(jù)包上下;在相同三路徑同時傳輸情況下,網(wǎng)絡(luò)的吞吐率大約是一條路徑情況下的三倍,每秒大約25個數(shù)據(jù)包上下.故由結(jié)果可知,將原本SCTP所支持的多宿主機制,由單路徑修改成多路徑傳輸,可得到不錯的傳輸效能.
雖然可以很輕易的將SCTP 由原來的單路徑修改成多路徑傳輸,并針對每條路徑給予其獨立的路徑序列號PSN 來達到各自的擁塞控制,但無可避免地會影響TSN 接收時亂序的問題,尤其是路徑的服務(wù)率不相同時和使用較大的接收窗口時,發(fā)生的情況更加嚴重.本文針對路徑的服務(wù)率在每秒50、30、20 和I-ARD 2 min 動態(tài)調(diào)整權(quán)重的情況下,模擬不同接收窗口大小時,對TSN 接收時亂序所產(chǎn)生的變異做一分析.變異分析的算法,是以接收端接收到的數(shù)據(jù)包序號,減去應(yīng)接收到的數(shù)據(jù)包去平方并求和,再除以總共接收的數(shù)據(jù)包數(shù)后,再開根.通過演算,可以得到不同權(quán)重和接收窗口大小下對接收數(shù)據(jù)包序號的變異情形,見表2.
表2 不同權(quán)重和接收窗口大小下對接收數(shù)據(jù)包序號的變異情形Tab.2 Different weights and receive window size variation situation under the received data packet number
從表2 的實驗結(jié)果可知,采用動態(tài)調(diào)整權(quán)重比的I-ARD演算法比RR和WRR演算法能更好的降低多路徑傳輸情況下接收數(shù)據(jù)包亂序的問題.
SCTP協(xié)議是新興的傳輸層協(xié)議,它具有許多優(yōu)秀的、值得開發(fā)的新特性.隨著網(wǎng)絡(luò)軟硬件的不斷發(fā)展進步,SCTP未來也會逐步取代TCP成為更加穩(wěn)定和優(yōu)秀的傳輸協(xié)議.SCTP協(xié)議的多宿主和多流機制對在當今負載日益增加的網(wǎng)絡(luò)環(huán)境下如何充分利用帶寬資源實現(xiàn)多路徑傳輸和負載均衡具有很重要的現(xiàn)實意義.本文分析比較了OSI傳輸層中常用的RR、WRR和ARD負載均衡算法,并基于ARD算法,通過修改算法權(quán)重的方式提出新的I-ARD 算法.通過仿真分析,驗證當使用I-ARD算法比起RR、WRR算法都能更有效的改善負載均衡的傳輸性能,降低接收數(shù)據(jù)包亂序的問題.但改進后的協(xié)議算法同時也增加了協(xié)議的計算開銷,使得協(xié)議的吞吐量較低,因此,下一步的研究將進一步提高協(xié)議的吞吐量.
[1]鄢歡,高德云,宋飛.基于SCTP 多路徑并行傳輸?shù)男阅茉u估[J].計算機技術(shù)與發(fā)展,2010,20(11):29-32.
[2]李雙慶,古平,程代杰.Web 系統(tǒng)負載均衡策略分析與研究[J].計算機工程與應(yīng)用,2002,38(19):40-43.
[3]Shreedhar M,Varghese G.Efficient fair queuing using deficit round robin[J].IEEE/ICM Trans Networking,1996,4:375-385.
[4]LI M Y,Song B.Design and Implementation of a New Queue Scheduling Algorithm in Diffserv Networks[C].The 2nd IEEE International Conference on Advanced Computer Control.Shenyang:IEEE Press,2010:117-122.
[5]Chang L H,Wang D J,Lai K C.Network Gateway Design and Implementation Using Dynamic Load Balancing[J].Journal of Internet Technology,2004,5(1):19-25.