本發(fā)明涉及通信領(lǐng)域,尤其涉及一種基于iSCSI協(xié)議的傳輸速率控制方法和裝置。
背景技術(shù):
iSCSI(Internet Small Computer System Interface,互聯(lián)網(wǎng)小型計算機系統(tǒng)接口,簡稱iSCSI)技術(shù)可以實現(xiàn)在IP網(wǎng)絡(luò)上運行SCSI協(xié)議,用戶可利用目前成熟的IP網(wǎng)絡(luò)來構(gòu)建存儲局域網(wǎng)絡(luò)。
參見圖1,為基于iSCSI協(xié)議的系統(tǒng)結(jié)構(gòu)圖,發(fā)起端initiator作為客戶端,目標端target作為服務(wù)器,發(fā)起端和目標端通過建立的iSCSI會話傳輸數(shù)據(jù),iSCSI會話包括一個或多個TCP(Transmission Control Protocol,傳輸控制協(xié)議,簡稱TCP)連接。由于iSCSI協(xié)議是承載在TCP協(xié)議上的,在建立iSCSI會話之前需要建立TCP連接?;贗P的iSCSI協(xié)議傳輸依賴于TCP連接,通過一個TCP連接發(fā)送的iSCSI請求,該iSCSI請求對應(yīng)的響應(yīng)和確認應(yīng)答等數(shù)據(jù)必須經(jīng)由同一個TCP連接返回。
發(fā)起端和目標端通過該iSCSI會話傳輸數(shù)據(jù)時,為iSCSI分配一定的傳輸資源,在后續(xù)傳輸過程中,iSCSI會話占用的傳輸資源不再改變,然而發(fā)起端和目標端之間的數(shù)據(jù)量存在波動時,無法很好的適應(yīng)復(fù)雜多變的傳輸環(huán)境。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種基于iSCSI協(xié)議的傳輸速率控制方法和裝置??筛鶕?jù)傳輸要求自適應(yīng)的調(diào)節(jié)iSCSI會話的傳輸速率。
第一方面,本申請的實施例提供了一種基于iSCSI協(xié)議的傳輸速率控制方法,包括:
實現(xiàn)本發(fā)明實施例的執(zhí)行主體包括作為發(fā)送端,發(fā)送端可以是iSCSI協(xié)議中的發(fā)起端或目標端。發(fā)送端預(yù)設(shè)設(shè)定傳輸速率需求值,傳輸速率需求值為iSCSI 會話需要達到的期望值,發(fā)送端周期性的獲取iSCSI會話在當前時刻的會話傳輸速率,判斷iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值;若為是,建立新的TCP連接,為新的TCP連接分配傳輸資源,在iSCSI會話中增加新的TCP連接,從而增加iSCSI會話的會話傳輸速率,使iSCSI會話的會話傳輸速率達到預(yù)設(shè)的傳輸速率需求值。發(fā)送端如果在當前時刻的會話傳輸速率大于或等于預(yù)設(shè)的傳輸速率需求值,表明滿足傳輸需求,發(fā)送端停止向iSCSI會話中增加新的TCP連接。
在一種設(shè)計中,發(fā)送端在判斷iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值之前,發(fā)送端判斷iSCSI會話在當前時刻的會話傳輸速率與上一時刻相比是否增加,若為是,執(zhí)行判斷iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值的步驟。發(fā)送端在向當前時刻向iSCSI會話中增加新的TCP連接后,如果系統(tǒng)的傳輸資源(例如內(nèi)存、CPU或帶寬)還有空閑,那么發(fā)送端在下一時刻獲取該iSCSI會話時,該iSCSI會話的會話傳輸速率會相應(yīng)的增加;如果下一時刻iSCSI會話的會話傳輸速率沒有增加,表明系統(tǒng)的傳輸資源已飽和,沒有空閑,繼續(xù)在該iSCSI會話中增加新的TCP連接也不會提高會話傳輸速率。
在另一種可能的設(shè)計中,發(fā)送端獲取iSCSI會話在當前時刻的會話傳輸速率的方法可以是:
首先發(fā)送端確定iSCSI會話包括哪些TCP連接;針對該iSCSI會話包括的每個TCP連接,發(fā)送端獲取TCP連接在當前時刻接收的應(yīng)答報文和上一時刻接收的應(yīng)答報文,根據(jù)上述兩個應(yīng)答報文的時間戳和序列號計算出該TCP連接的的TCP傳輸速率,公式具體為:Sn=(ACKn-ACKn-1)/(Tn-Tn-1),ACKn表示當前時刻接收的應(yīng)答報文的序列號,ACKn-1表示上一時刻接收的應(yīng)答報文的序列號,Tn表示當前時刻接收的應(yīng)答報文的時間戳,Tn-1表示上一時刻接收的應(yīng)答報文的時間戳,Sn表示該TCP連接在當前時刻的TCP傳輸速率,按照上述公式發(fā)送端計算出iSCSI會話中包括的所有TCP連接的TCP傳輸速率,將所有的TCP連接的TCP傳輸速率進行求和得到iSCSI會話在當前時刻的會話傳輸速率Sn。
在另一種設(shè)計中,發(fā)送端獲取iSCSI會話在當前時刻的會話傳輸速率之后,需要根據(jù)公式α×Sn-1+β×Sn對iSCSI會話在當前時刻的會話傳輸速率進行平滑處理;其中,α和β為大于0的常數(shù),α+β=1,Sn為iSCSI會話當前時刻的會話 傳輸速率,Sn-1為iSCSI會話在上一時刻的會話傳輸速率。引入歷史的會話傳輸速率,對當前時刻計算得到的會話傳輸速率進行平滑處理,避免會話傳輸速率播放過大。
在另一種設(shè)計中,發(fā)送端需要降低iSCSI會話的會話傳輸速率時,首先將該ISCSI會話對應(yīng)的預(yù)設(shè)的傳輸速率需求值由R1降低至R2,然后發(fā)送端周期性的獲取iSCSI會話在當前時刻的會話傳輸速率,判斷該iSCSI會話的會話傳輸速率能繼續(xù)降低,判斷的方法可以是:判斷iSCSI會話在當前時刻的會話傳輸速率是否小于R2或iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率,若為是,表明可以繼續(xù)降低。如果iSCSI會話的會話傳輸速率可以繼續(xù)降低,將在當前時刻的TCP傳輸速率與T的差值的絕對值最小的TCP連接從iSCSI會話中移除,并釋放移除的TCP連接占用的傳輸資源;T=R1-R2。
在另一種可能的設(shè)計中,發(fā)送端判斷iSCSI會話的會話傳輸速率是否需要降低的方法可以是:判斷iSCSI會話在當前時刻的會話傳輸速率是否小于R2或iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率;若為是,iSCSI會話的會話傳輸速率不需要降低;若為否,iSCSI會話的會話傳輸速率需要降低。
在另一種可能的設(shè)計中,發(fā)送端獲取在當前時刻的負荷參數(shù)值;在負荷參數(shù)值大于預(yù)設(shè)值的情況下,減小預(yù)設(shè)的傳輸速率需求值;
在負荷參數(shù)值小于或等于預(yù)設(shè)值的情況下,增加預(yù)設(shè)的傳輸速率需求值。
第二方面,本申請的實施例提供了一種基于iSCSI協(xié)議的傳輸速率控制裝置,該裝置包括:獲取模塊、第一判斷模塊和調(diào)節(jié)模塊。
獲取模塊獲取iSCSI會話在當前時刻的會話傳輸速率,第一判斷模塊判斷獲取模塊獲取的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值;若第一判斷模塊的判斷結(jié)果為是,調(diào)節(jié)模塊在iSCSI會話中增加新的TCP連接。
在一種可能的設(shè)計中,該裝置還包括:第二判斷模塊。
第二判斷模塊判斷iSCSI會話在當前時刻的會話傳輸速率與上一時刻相比是否增加,若判斷結(jié)果為是,指示第一判斷模塊開始工作。
在另一種可能的設(shè)計中,獲取模塊確定iSCSI會話包括的多個TCP連接;根據(jù)至少兩個確認報文的序列號和時間戳分別計算多個TCP連接各自在當前時 刻對應(yīng)的TCP傳輸速率;將多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率進行求和得到iSCSI會話在當前時刻的會話傳輸速率Sn。
在另一種可能的設(shè)計中,該裝置還包括平滑處理模塊。
平滑處理模塊根據(jù)公式α×Sn-1+β×Sn對iSCSI會話在當前時刻的會話傳輸速率進行平滑處理;其中,α和β為大于0的常數(shù),α+β=1,Sn為iSCSI會話當前時刻的會話傳輸速率,Sn-1為iSCSI會話在上一時刻的會話傳輸速率。
在另一種可能的設(shè)計中,該裝置還包括降速模塊。在需要對iSCSI會話的會話傳輸速率進行降速處理的情況下,對iSCSI會話對應(yīng)的傳輸速率需求值降低,由R1減小至R2,R1>R2。降速模塊周期性的判斷iSCSI會話在當前時刻的會話傳輸速率是否繼續(xù)降低,若為是,將在當前時刻的TCP傳輸速率與T的差值的絕對值最小的TCP連接從iSCSI會話中移除,并釋放移除的TCP連接占用的傳輸資源;T=R1-R2。
在另一種可能的設(shè)計中,降速模塊判斷iSCSI會話在當前時刻的會話傳輸速率是否小于R2或iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率;若為是,不需要降低iSCSI會話的會話傳輸速率;若為否,需要降低iSCSI會話的會話傳輸速率。
在另一種可能的設(shè)計中,該裝置還包括:閾值調(diào)節(jié)模塊。
閾值調(diào)節(jié)模塊獲取在當前時刻的負荷參數(shù)值;在負荷參數(shù)值大于預(yù)設(shè)值的情況下,減小預(yù)設(shè)的傳輸速率需求值;在負荷參數(shù)值小于或等于預(yù)設(shè)值的情況下,增加預(yù)設(shè)的傳輸速率需求值。
第三方面,本申請實施例提供了一種終端設(shè)備,包括上述所有的基于iSCSI協(xié)議的傳輸速率控制裝置中的任意種裝置。
第四方面,本申請實施例提供了一種基于iSCSI協(xié)議的傳輸速率控制裝置,包括:
一個或多個處理器、存儲器、總線系統(tǒng)、收發(fā)器以及一個或多個程序,處理器、存儲器和收發(fā)器通過總線系統(tǒng)相連;
其中一個或多個程序被存儲在存儲器中,一個或多個程序包括指令,指令當被該裝置執(zhí)行時使該裝置執(zhí)行如第一方面和第一方面的第五種可能的實現(xiàn)方式中任一項的方法。
第五方面,本申請實施例提供了一種存儲一個或多個程序的計算機可讀存 儲介質(zhì),一個或多個程序包括指令,指令當被該裝置執(zhí)行時使該裝置執(zhí)行第一方面至第一方面的第六種可能的實現(xiàn)方式中的任意一種的方法。
實施本發(fā)明實施例,具有如下有益效果:
實時的獲取iSCSI會話的會話傳輸速率,在會話傳輸速率小于預(yù)設(shè)的傳輸速率需求值的情況下,在iSCSI會話中增加新的TCP連接,充分利用空閑的傳輸資源,從而提高iSCSI會話的傳輸速率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是現(xiàn)有的一種基于iSCSI協(xié)議的傳輸系統(tǒng)的架構(gòu)示意圖;
圖2是本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法的流程示意圖;
圖3是本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法的另一流程示意圖;
圖4是本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法的又一流程示意圖;
圖5是本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制裝置的另一結(jié)構(gòu)示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
參見圖2,為本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法, 在本發(fā)明實施例中,執(zhí)行主體為發(fā)送端,發(fā)送端可以是發(fā)起端或目標端,以下發(fā)起端進行說明,所述方法包括:
S201、獲取iSCSI會話在當前時刻的會話傳輸速率。
具體的,iSCSI會話中包括多個TCP連接,發(fā)起端(initiator)通過iSCSI會話中包括多個TCP連接向目標端(target)傳輸協(xié)議數(shù)據(jù)單元(PDU,Protocol Data Unit)。當前時刻表示序號為n的時刻,例如,發(fā)起端每隔一段時間獲取iSCSI會話的會話傳輸速率,首個獲取時刻為時刻1,第2個獲取時刻為時刻2,依次類推,第多個獲取時刻為當前時刻,其中,發(fā)起端獲取iSCSI會話的會話傳輸速率可以是周期性的獲取也可以是非周期性的獲取,本發(fā)明不作限制。優(yōu)選的,發(fā)起端采用周期性的獲取iSCSI會話的傳輸速率,即當前時刻和下一時刻之間的時間間隔是固定值。
S202、判斷iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值。
具體的,傳輸速率需求值表示iSCSI會話期望達到的傳輸速率,根據(jù)根據(jù)需要預(yù)先設(shè)置具體的傳輸速率需求值。發(fā)起端判斷iSCCI會話在當前時刻的會話傳輸速率和預(yù)設(shè)的傳輸速率需求值的大小關(guān)系。
S203、在判斷結(jié)果為是的情況下,在iSCSI會話中增加新的TCP連接。
具體的,在S102的判斷結(jié)果為是的情況下,發(fā)起端重建一個新的TCP連接,為新的TCP連接分配傳輸資源,將新的TCP連接加入到iSCSI會話中,以提高iSCSI會話的傳輸速率。
其中,在S102的判斷結(jié)果為否的情況下,發(fā)起端不增加新的TCP連接,退出iSCSI會話的傳輸速率控制流程。
從上述可以看出,實時的獲取iSCSI會話的會話傳輸速率,在會話傳輸速率小于預(yù)設(shè)的傳輸速率需求值的情況下,在iSCSI會話中增加新的TCP連接,充分利用空閑的傳輸資源,從而提高iSCSI會話的傳輸速率。
參見圖3,為本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法的另一流程示意圖,在本發(fā)明實施例中,所述方法包括:
S301、確定iSCSI會話在當前時刻包括的多個TCP連接。
具體的,iSCSI會話包括多個TCP連接,在不同的時刻,由于傳輸?shù)男枨蟛煌?,iSCSI會話中包括的TCP連接的數(shù)量會動態(tài)變化,不同的TCP連接具有 不同的ID身份標識,發(fā)起端可以根據(jù)TCP連接的身份標識確定當前時刻iSCSI會話包括的多個TCP連接。
S302、根據(jù)至少兩個確認報文的序列號和時間戳分別計算多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率。
具體的,發(fā)起端計算iSCSI會話包括的多個TCP連接各自對應(yīng)的TCP傳輸速率,計算一個TCP連接的TCP傳輸速率的方法可以是:發(fā)起端對待發(fā)送的協(xié)議數(shù)據(jù)單元PDU進行編號,發(fā)起端通過TCP連接向目的端發(fā)送協(xié)議數(shù)據(jù)單元時,協(xié)議數(shù)據(jù)單元中攜帶序列號,目的端通過該TCP連接成功接收該協(xié)議數(shù)據(jù)單元時,目的端獲取協(xié)議數(shù)據(jù)單元中攜帶的序列號,向發(fā)起端返回攜帶該序列號的應(yīng)答報文,發(fā)起端接收該應(yīng)答報文,記錄接收到該應(yīng)答報文的時間戳,獲取該應(yīng)答報文中攜帶的序列號。發(fā)起端通過接收至少兩個應(yīng)答報文,獲取各個應(yīng)答報文對應(yīng)的時間戳和序列號,根據(jù)時間戳和序列號計算該TCP連接在當前時刻的TCP傳輸速率:Sn=(ACKn-ACKn-1)/(Tn-Tn-1),ACKn表示當前時刻接收的應(yīng)答報文的序列號,ACKn-1表示上一時刻接收的應(yīng)答報文的序列號,Tn表示當前時刻接收的應(yīng)答報文的時間戳,Tn-1表示上一時刻接收的應(yīng)答報文的時間戳,Sn表示該TCP連接在當前時刻的TCP傳輸速率,上述舉例是根據(jù)兩個連續(xù)接收的應(yīng)答報文的序列號和時間戳計算當前時刻TCP連接的TCP傳輸速率,但是TCP傳輸速率的計算方法并不限于此,例如,發(fā)起端可以根據(jù)兩個以上的應(yīng)答報文的序列號和時間戳計算TCP連接的TCP傳輸速率,以接收的兩個應(yīng)答報文為一組,按照上述公式進行計算,將計算得到的多組TCP傳輸速率進行加權(quán)平均后得到該TCP連接在當前時刻的TCP傳輸速率。
S303、將多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率進行求和得到iSCSI會話在當前時刻的會話傳輸速率。
具體的,發(fā)起端根據(jù)S302的方法計算得到iSCSI會話中包括的各個TCP連接的TCP傳輸速率,將各個TCP傳輸速率進行求和后得到iSCSI會話在當前時刻的TCP傳輸速率。
S304、對iSCSI會話在當前時刻的會話傳輸速率進行平滑處理。
具體的,由于應(yīng)答報文的延時確認機制、網(wǎng)絡(luò)擁塞等原因,發(fā)起端在當前時刻計算出來的iSCSI會話的會話傳輸速率存在波動大的問題,為了使計算出來的會話傳輸速率便于處理,發(fā)起端引入iSCSI會話歷史的會話傳輸速率對當前時 刻的會話傳輸速率進行平滑處理。平滑處理的方式可以是:根據(jù)公式α×Sn-1+β×Sn對iSCSI會話在當前時刻的會話傳輸速率進行平滑處理;其中,α和β為大于0的常數(shù),α+β=1,Sn為iSCSI會話當前時刻的會話傳輸速率,Sn-1為所述iSCSI會話在上一時刻的會話傳輸速率,α和β的值可以根據(jù)需要進行調(diào)整,本發(fā)明不作限制。例如,α=0.9,β=0.1。
S305、對iSCSI會話在當前時刻的會話傳輸速率與上一時刻的會話傳輸相比是否增加。
具體的,iSCSI會話在當前時刻的會話傳輸速率和上一時刻的會話傳輸速率為經(jīng)過S304平滑處理后的會話傳輸速率,也可以是不經(jīng)過平滑處理的會話傳輸速率,發(fā)起端判斷iSCSI會話在當前時刻的會話傳輸速率與上一時刻的會話傳輸速率相比是否增加,如果判斷結(jié)果為是,表明iSCSI會話的會話傳輸速率具有進一步增加的可能性,執(zhí)行S306;如果判斷結(jié)果為否,表明iSCSI會話的會話傳輸速率沒有進一步增加的可能性,執(zhí)行S307。
S306、iSCSI會話在當前時刻的傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值。
具體的,傳輸速率需求值為設(shè)置的iSCSI會話的會話傳輸速率的期望值,可以根據(jù)需要預(yù)設(shè)設(shè)置具體的值。發(fā)起端判斷S304得到的iSCSI會話在當前時刻的傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值,如果判斷結(jié)果為是,表明iSCSI會話在當前時刻的會話傳輸速率未達到期望值,需要進一步提高其會話傳輸速率;如果判斷結(jié)果為否,達到期望值。
S307、停止在iSCSI會話中增加TCP連接。
具體的,在iSCSI會話中增加TCP連接的目的在于提高iSCSI會話的會話傳輸速率,iSCSI會話在當前時刻的會話傳輸速率和上一時刻的會話傳輸速率相比沒有增加,表明網(wǎng)絡(luò)帶寬已飽和,繼續(xù)向iSCSI會話中增加TCP連接并不會增加其會話傳輸速率,發(fā)起端此時停止向iSCSI會話中增加新的TCP連接;或者,iSCSI會話的會話傳輸速率已經(jīng)達到預(yù)設(shè)的傳輸速率需求值,此時發(fā)起端也會停止向iSCSI會話中增加新的TCP連接。
S308、在iSCSI會話中增加新的TCP連接。
其中,S301-S308為循環(huán)執(zhí)行的步驟,發(fā)起端周期性的執(zhí)行S301和S308的步驟,直到退出流程。發(fā)起端確定需要在iSCSI會話中增加新的TCP連接時,發(fā)起端建立新的TCP連接,為建立的新的TCP連接分配傳輸資源,將新的TCP 連接加入到iSCSI會話中,增加新的TCP連接后,iSCSI會話中TCP連接的數(shù)量增加,在下一時刻達到時,發(fā)起端繼續(xù)根據(jù)上述描述執(zhí)行S301-S308。
從上述可以看出,實時的獲取iSCSI會話的會話傳輸速率,在會話傳輸速率小于預(yù)設(shè)的傳輸速率需求值的情況下,在iSCSI會話中增加新的TCP連接,充分利用空閑的傳輸資源,從而提高iSCSI會話的傳輸速率。
參見圖4,為本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制方法的又一流程示意圖,在本發(fā)明實施例中,所述方法包括:
S401、確定iSCSI會話在當前時刻包括的多個TCP連接。
具體的,iSCSI會話包括多個TCP連接,在不同的時刻,由于傳輸?shù)男枨蟛煌?,iSCSI會話中包括的TCP連接的數(shù)量會動態(tài)變化,不同的TCP連接具有不同的ID身份標識,發(fā)起端可以根據(jù)TCP連接的身份標識確定當前時刻iSCSI會話包括的多個TCP連接。
S402、根據(jù)至少兩個確認報文的序列號和時間戳分別計算多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率。
具體的,發(fā)起端計算iSCSI會話包括的多個TCP連接各自對應(yīng)的TCP傳輸速率,計算一個TCP連接的TCP傳輸速率的方法可以是:發(fā)起端對待發(fā)送的協(xié)議數(shù)據(jù)單元PDU進行編號,發(fā)起端通過TCP連接向目的端發(fā)送協(xié)議數(shù)據(jù)單元時,協(xié)議數(shù)據(jù)單元中攜帶序列號,目的端通過該TCP連接成功接收該協(xié)議數(shù)據(jù)單元時,目的端獲取協(xié)議數(shù)據(jù)單元中攜帶的序列號,向發(fā)起端返回攜帶該序列號的應(yīng)答報文,發(fā)起端接收該應(yīng)答報文,記錄接收到該應(yīng)答報文的時間戳,獲取該應(yīng)答報文中攜帶的序列號。發(fā)起端通過接收至少兩個應(yīng)答報文,獲取各個應(yīng)答報文對應(yīng)的時間戳和序列號,根據(jù)時間戳和序列號計算該TCP連接在當前時刻的TCP傳輸速率:Sn=(ACKn-ACKn-1)/(Tn-Tn-1),ACKn表示當前時刻接收的應(yīng)答報文的序列號,ACKn-1表示上一時刻接收的應(yīng)答報文的序列號,Tn表示當前時刻接收的應(yīng)答報文的時間戳,Tn-1表示上一時刻接收的應(yīng)答報文的時間戳,Sn表示該TCP連接在當前時刻的TCP傳輸速率,上述舉例是根據(jù)兩個連續(xù)接收的應(yīng)答報文的序列號和時間戳計算當前時刻TCP連接的TCP傳輸速率,但是TCP傳輸速率的計算方法并不限于此,例如,發(fā)起端可以根據(jù)兩個以上的應(yīng)答報文的序列號和時間戳計算TCP連接的TCP傳輸速率,以接收的兩個應(yīng)答報文為一組,按照上述公式進行計算,將計算得到的多組TCP傳輸速率進行加權(quán)平均后得到 該TCP連接在當前時刻的TCP傳輸速率。
S403、將多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率進行求和得到iSCSI會話在當前時刻的會話傳輸速率。
具體的,發(fā)起端根據(jù)S402的方法計算得到iSCSI會話中包括的各個TCP連接的TCP傳輸速率,將各個TCP傳輸速率進行求和后得到iSCSI會話在當前時刻的TCP傳輸速率。
S404、iSCSI會話在當前時刻的會話傳輸速率是否繼續(xù)降低。
具體的,iSCSI會話中包括的多個TCP連接可能是在系統(tǒng)的負荷降低時創(chuàng)建的,占用了較多的傳輸資源,此時如果需要創(chuàng)建新的iSCSI會話,新的iSCSI會話可能會分配不動足夠多的傳輸資源,這種情況下需要將原來的iSCSI會話中的部分TCP連接進行移除,使原來的iSCSI會話的傳輸速率需求值由R1降低至R2,R1>R2。
iSCSI會話的發(fā)起端判斷iSCSI會話在當前時刻的傳輸速率是否需要降低,如果判斷結(jié)果為是,執(zhí)行S405,如果判斷結(jié)果為否,執(zhí)行S407。發(fā)起端判斷當前時刻的會話傳輸速率是否需要降低的方法是:判斷iSCSI會話在當前時刻的會話傳輸速率是否小于R2或所述iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于所述iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率;若為是,iSCSI會話在當前時刻的會話傳輸速率已滿足傳輸速率需求值R2的要求不需要調(diào)節(jié)所述iSCSI會話的會話傳輸速率;若為否,iSCSI會話在當前時刻的會話傳輸速率不滿足傳輸速率需求值R2的要求,需要調(diào)節(jié)iSCSI會話的會話傳輸速率。
S405、在iSCSI會話中選擇一個TCP連接進行移除。
具體的,將在當前時刻的TCP傳輸速率與T的差值的絕對值最小的TCP連接從所述iSCSI會話中移除T=R1-R2。
S406、釋放移除的TCP連接占用的傳輸資源。
具體的,傳輸資源包括CPU資源、內(nèi)存資源和帶寬資源中的一種或多種。
S407、停止移除iSCSI會話中包括的TCP連接。
從上述可以看出,實時的獲取iSCSI會話的會話傳輸速率,在會話傳輸速率小于預(yù)設(shè)的傳輸速率需求值的情況下,在iSCSI會話中增加新的TCP連接,充分利用空閑的傳輸資源,從而提高iSCSI會話的傳輸速率。
可選,在本發(fā)明的一些實施例中,獲取在當前時刻的負荷參數(shù)值;
在所述負荷參數(shù)值大于預(yù)設(shè)值的情況下,減小所述預(yù)設(shè)的傳輸速率需求值;
在所述負荷參數(shù)值小于或等于所述預(yù)設(shè)值的情況下,增加所述預(yù)設(shè)的傳輸速率需求值。
其中,負荷參數(shù)值表示系統(tǒng)的負荷程度的參數(shù)值,負荷參數(shù)值的大小和負荷程度呈正相關(guān)性,在負荷參數(shù)值大于預(yù)設(shè)值的情況下,發(fā)起端需要降低iSCSI會話的會話傳輸速率,減小該iSCSI會話對應(yīng)的傳輸速率需求值,以減輕系統(tǒng)的負荷程度,在負荷參數(shù)值小于或等于預(yù)設(shè)值的情況下,發(fā)起端需要提高iSCSI會話的傳輸速率,增加預(yù)設(shè)的傳輸速率需求值,以提高系統(tǒng)傳輸資源的利用率。在更改該iSCSI會話的傳輸速率需求值后,按照上述實施例的方法使該iSCSI會話的傳輸速率達到調(diào)節(jié)后的傳輸速率需求值。
參見圖5,為本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制裝置的結(jié)構(gòu)示意圖,以下簡稱裝置,本發(fā)明實施例的裝置用于執(zhí)行圖1所示的一種基于基于iSCSI協(xié)議的傳輸速率控制方法,其中所涉及的示例和術(shù)語可參照圖2的描述。裝置5包括:獲取模塊501、第一判斷模塊502和調(diào)節(jié)模塊503。
獲取模塊501,用于獲取iSCSI會話在當前時刻的會話傳輸速率。
第一判斷模塊502,用于判斷所述獲取模塊獲取的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值。
調(diào)節(jié)模塊503,用于若所述第一判斷模塊的判斷結(jié)果為是,在所述iSCSI會話中增加新的TCP連接。
本發(fā)明實施例和方法實施例一基于同一構(gòu)思,其帶來的技術(shù)效果也相同,具體原理可參照圖2方法實施例一的描述,此處不再贅述。
可選的,裝置5還包括:第一判斷模塊。
第二判斷模塊,用于判斷所述iSCSI會話在當前時刻的會話傳輸速率與上一時刻相比是否增加,
若所述第二判斷模塊的判斷結(jié)果為是,指示所述第一判斷模塊開始工作。
可選的,獲取模塊501用于:
確定所述iSCSI會話包括的多個TCP連接;
根據(jù)至少兩個確認報文的序列號和時間戳分別計算所述多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率;
將所述多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率進行求和得到所述iSCSI會話在當前時刻的會話傳輸速率Sn。
可選的,裝置5還包括:平滑處理模塊。
平滑處理模塊,用于根據(jù)公式α×Sn-1+β×Sn對所述iSCSI會話在當前時刻的會話傳輸速率進行平滑處理;其中,α和β為大于0的常數(shù),α+β=1,Sn為所述iSCSI會話當前時刻的會話傳輸速率,Sn-1為所述iSCSI會話在上一時刻的會話傳輸速率。
可選的,裝置5還包括:降速模塊。
降速模塊,用于判斷所述iSCSI會話在當前時刻的會話傳輸速率是否繼續(xù)降低;其中,所述iSCSI會話對應(yīng)的傳輸速率需求值預(yù)先由R1降低至R2;
若為是,將在當前時刻的TCP傳輸速率與T的差值的絕對值最小的TCP連接從所述iSCSI會話中移除,并釋放所述移除的TCP連接占用的傳輸資源;T=R1-R2。
可選的,降速模塊用于:
判斷所述iSCSI會話在當前時刻的會話傳輸速率是否小于R2或所述iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于所述iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率;
若為是,不需要降低所述iSCSI會話的會話傳輸速率;
若為否,需要降低所述iSCSI會話的會話傳輸速率。
可選的,裝置5還包括:閾值調(diào)節(jié)模塊。
閾值調(diào)節(jié)模塊,用于獲取在當前時刻的負荷參數(shù)值;在所述負荷參數(shù)值大于預(yù)設(shè)值的情況下,減小所述預(yù)設(shè)的傳輸速率需求值;在所述負荷參數(shù)值小于或等于所述預(yù)設(shè)值的情況下,增加所述預(yù)設(shè)的傳輸速率需求值。
本發(fā)明實施例和方法實施例二和三基于同一構(gòu)思,其帶來的技術(shù)效果也相同,具體原理可參照方法圖3和圖4實施例的描述,此處不再贅述。
參見圖6,為本發(fā)明實施例提供的一種基于iSCSI協(xié)議的傳輸速率控制裝置的另一結(jié)構(gòu)示意圖,以下簡稱裝置,裝置6包括處理器601、存儲器602和收發(fā)器603。收發(fā)器603用于與外部設(shè)備之間收發(fā)數(shù)據(jù)。裝置6中的處理器601的數(shù)量可以是一個或多個。本發(fā)明的一些實施例中,處理器601、存儲器602和收發(fā)器603可通過總線系統(tǒng)或其他方式連接。裝置6可以用于執(zhí)行圖2所示的方法。 關(guān)于本實施例涉及的術(shù)語的含義以及舉例,可以參考圖2對應(yīng)的實施例。此處不再贅述。
其中,存儲器602中存儲程序代碼。處理器601用于調(diào)用存儲器602中存儲的程序代碼,用于執(zhí)行以下操作:
獲取iSCSI會話在當前時刻的會話傳輸速率;
判斷所述iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值;
若為是,在所述iSCSI會話中增加新的TCP連接。
在本發(fā)明的一些實施例中,處理器601執(zhí)行所述判斷所述iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值之前,還用于執(zhí)行:
判斷所述iSCSI會話在當前時刻的會話傳輸速率與上一時刻相比是否增加,
若為是,執(zhí)行所述判斷所述iSCSI會話在當前時刻的會話傳輸速率是否小于預(yù)設(shè)的傳輸速率需求值的步驟。
在本發(fā)明的一些實施例中,處理器601執(zhí)行所述獲取iSCSI會話在當前時刻的會話傳輸速率包括:
確定所述iSCSI會話包括的多個TCP連接;
根據(jù)至少兩個確認報文的序列號和時間戳分別計算所述多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率;
將所述多個TCP連接各自在當前時刻對應(yīng)的TCP傳輸速率進行求和得到所述iSCSI會話在當前時刻的會話傳輸速率Sn。
在本發(fā)明的一些實施例中,處理器601執(zhí)行所述獲取iSCSI會話在當前時刻的會話傳輸速率之后,還用于執(zhí)行:
根據(jù)公式α×Sn-1+β×Sn對所述iSCSI會話在當前時刻的會話傳輸速率進行平滑處理;其中,α和β為大于0的常數(shù),α+β=1,Sn為所述iSCSI會話當前時刻的會話傳輸速率,Sn-1為所述iSCSI會話在上一時刻的會話傳輸速率。
在本發(fā)明的一些實施例中,處理器601還用于執(zhí)行:
判斷所述iSCSI會話在當前時刻的會話傳輸速率是否繼續(xù)降低;其中,所述iSCSI會話對應(yīng)的傳輸速率需求值預(yù)先由R1降低至R2;
若為是,將在當前時刻的TCP傳輸速率與T的差值的絕對值最小的TCP連 接從所述iSCSI會話中移除,并釋放所述移除的TCP連接占用的傳輸資源;T=R1-R2。
在本發(fā)明的一些實施例中,處理器601執(zhí)行所述判斷所述iSCSI會話在當前時刻的會話傳輸速率是否繼續(xù)降低包括:
判斷所述iSCSI會話在當前時刻的會話傳輸速率是否小于R2或所述iSCSI會話在當前時刻的會話傳輸速率與R2的差值是否小于所述iSCSI會話中包括的任意一個TCP連接的TCP傳輸速率;
若為是,不需要降低所述iSCSI會話的會話傳輸速率;
若為否,需要降低所述iSCSI會話的會話傳輸速率。
在本發(fā)明的一些實施例中,處理器601還用于執(zhí)行:
獲取在當前時刻的負荷參數(shù)值;
在所述負荷參數(shù)值大于預(yù)設(shè)值的情況下,減小所述預(yù)設(shè)的傳輸速率需求值;
在所述負荷參數(shù)值小于或等于所述預(yù)設(shè)值的情況下,增加所述預(yù)設(shè)的傳輸速率需求值。
本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
以上所揭露的僅為本發(fā)明一種較佳實施例而已,當然不能以此來限定本發(fā)明之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于發(fā)明所涵蓋的范圍。