本發(fā)明涉及數(shù)據(jù)通信領(lǐng)域,具體而言,涉及一種存儲鏈路的選擇方法及裝置。
背景技術(shù):
現(xiàn)有技術(shù)中,在服務(wù)器連接存儲設(shè)備的過程中,需要在服務(wù)器和存儲設(shè)備之間建立多條存儲鏈路,為承載存儲數(shù)據(jù)傳送提供網(wǎng)絡(luò)支持,基于可靠性冗余和提高帶寬考慮,服務(wù)器上一般會用多個光纖卡連接多條光纖,然后建立多個存儲鏈路連接。進(jìn)一步地,采用單條存儲鏈路傳輸數(shù)據(jù)時,選擇其中一個存儲鏈路作為主存儲鏈路進(jìn)行數(shù)據(jù)傳輸,其他備選存儲鏈路作為備份冗余;采用多條存儲鏈路同時傳輸數(shù)據(jù)時,數(shù)據(jù)可以同時在多條存儲鏈路上同時傳輸,以提供負(fù)載均衡支持。
具體地,在單個光纖傳輸數(shù)據(jù)時,數(shù)據(jù)傳輸只在一個存儲鏈路上進(jìn)行,其他光纖上通過存儲心跳數(shù)據(jù)包測試存儲鏈路是否連通,但這種方式只能保證備選存儲鏈路的連通性,無法測量其他存儲鏈路的性能,而且在存儲鏈路切換時不能做到鏈路優(yōu)選。因此,基于單個鏈路進(jìn)行數(shù)據(jù)傳輸限制了其他存儲鏈路的帶寬利用率。
另外,在多條存儲鏈路同時傳輸方案中,如果各條存儲鏈路存在性能差異很大的情況時,將會引起存儲數(shù)據(jù)嚴(yán)重亂序,因此有選擇地進(jìn)行多條存儲鏈路同時傳輸勢在必行。進(jìn)一步地,在多條存儲鏈路同時傳輸時,當(dāng)前正在進(jìn)行數(shù)據(jù)傳輸?shù)拇鎯︽溌返臅r延、帶寬和誤碼率的性能指標(biāo)很容易進(jìn)行測量,但是在未進(jìn)行數(shù)據(jù)傳輸?shù)拇鎯︽溌分?,存儲鏈路性能的測量顯得困難,也即是存儲數(shù)據(jù)傳輸中單條存儲鏈路傳輸和多條存儲鏈路同時傳輸中對備選存儲鏈路的狀態(tài)不能進(jìn)行準(zhǔn)確預(yù)測。
針對上述無法準(zhǔn)確選取備選存儲鏈路的問題,目前尚未提出有效的解決方案。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種存儲鏈路的選擇方法及裝置,以至少解決無法準(zhǔn)確選取備選存儲鏈路的技術(shù)問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種存儲鏈路的選擇方法,包括:確定發(fā)送端與接收端之間的多條存儲鏈路;通過每條所述存儲鏈路向所述接收端發(fā)送心跳數(shù)據(jù)包;接收所述接收端基于所述心跳數(shù)據(jù)包向所述發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包;根據(jù)所述心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定所述存儲鏈路中所有可到達(dá)的備選存儲鏈路;計算每條所述備選存儲鏈路的鏈路評價值;根據(jù)所述鏈路評價值確定所述備選存儲鏈路中的可選擇的鏈路。
進(jìn)一步地,根據(jù)所述心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定所述存儲鏈路中所有可到達(dá)的備選存儲鏈路包括:根據(jù)所述心跳確認(rèn)數(shù)據(jù)包的狀態(tài),檢測存儲鏈路是否發(fā)生丟包;在檢測出所述存儲鏈路未發(fā)生丟包的情況下,檢測通過所述存儲鏈路返回的所述心跳確認(rèn)數(shù)據(jù)包是否亂序;在檢測出所述存儲鏈路返回的所述心跳確認(rèn)數(shù)據(jù)包未亂序的情況下,確定所述存儲鏈路為可到達(dá)的備選存儲鏈路。
進(jìn)一步地,檢測存儲鏈路是否發(fā)生丟包包括:在所述發(fā)送端接收到所述心跳確認(rèn)數(shù)據(jù)包后,檢測超時定時器是否超過預(yù)定值;在檢測出所述超時定時器超過所述預(yù)定值的情況下,確定所述存儲鏈路發(fā)生丟包。
進(jìn)一步地,檢測通過所述存儲鏈路返回的所述心跳確認(rèn)數(shù)據(jù)包是否亂序包括:檢測所述發(fā)送端是否在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包;在檢測出所述發(fā)送端在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包的情況下,確定所述心跳確認(rèn)數(shù)據(jù)包亂序。
進(jìn)一步地,計算每條可到達(dá)的所述備選存儲鏈路的鏈路評價值包括:通過第一公式計算所述備選存儲鏈路的鏈路評價值,其中,所述第一公式為:
其中,Ei為第i條可到達(dá)的所述備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,Epri是主存儲鏈路的誤碼率,是第i條可到達(dá)的所述備選存儲鏈路的時延,是第i條可到達(dá)的所述備選存儲鏈路的帶寬,是第i條可到達(dá)的所述備選存儲鏈路的誤碼率,α,β以及γ分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ≦1,α+β+γ=1。
進(jìn)一步地,根據(jù)每條所述可到達(dá)的備選存儲鏈路的鏈路評價值確定所述備選存儲鏈路中的可選擇的鏈路包括:設(shè)置入選存儲鏈路集合,其中所述入選存儲鏈路集合為空集;計算可到達(dá)的存儲鏈路的鏈路選擇評價值;判斷所述鏈路選擇評價值是否大于等于存儲鏈路選擇評價參考值;在所述鏈路選擇評價值大于等于所述存儲鏈路選擇評價參考值時,將對應(yīng)的存儲鏈路加入所述入選存儲鏈路集合。
進(jìn)一步地,計算可到達(dá)的存儲鏈路的所述鏈路選擇評價值包括:通過第二公式計算所述鏈路選擇評價值,其中,所述第二公式為:其中,θi為第i條可到達(dá)的所述備選存儲鏈路的所述鏈路選擇評價值,Ei為第i條可到達(dá)的所述備選存儲鏈路的所述鏈路評價值,Ebest為所有可到達(dá)的所述備選存儲鏈路的所述鏈路評價值的最大值。
根據(jù)本發(fā)明實施例的另一方面,還提供了一種存儲鏈路的選擇裝置,包括:第一確定單元,用于確定發(fā)送端與接收端之間的多條存儲鏈路;發(fā)送單元,用于通過每條所述存儲鏈路向所述接收端發(fā)送心跳數(shù)據(jù)包;接收單元,用于接收所述接收端基于所述心跳數(shù)據(jù)包向所述發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包;第二確定單元,用于根據(jù)所述心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定所述存儲鏈路中所有可到達(dá)的備選存儲鏈路;計算單元,用于計算每條所述備選存儲鏈路的鏈路評價值;第三確定單元,用于根據(jù)所述鏈路評價值確定所述備選存儲鏈路中的可選擇的鏈路。
進(jìn)一步地,所述第二確定單元包括:第一檢測模塊,用于根據(jù)所述心跳確認(rèn)數(shù)據(jù)包的狀態(tài),檢測存儲鏈路是否發(fā)生丟包;第二檢測模塊,用于在檢測出所述存儲鏈路未發(fā)生丟包的情況下,檢測通過所述存儲鏈路返回的所述心跳確認(rèn)數(shù)據(jù)包是否亂序;確定模塊,用于在檢測出所述存儲鏈路返回的所述心跳確認(rèn)數(shù)據(jù)包未亂序的情況下,確定所述存儲鏈路為可到達(dá)的備選存儲鏈路。
進(jìn)一步地,所述第一檢測模塊包括:第一檢測子模塊,用于在所述發(fā)送端接收到所述心跳確認(rèn)數(shù)據(jù)包后,檢測超時定時器是否超過預(yù)定值;第一確定子模塊,用于在檢測出所述超時定時器超過所述預(yù)定值的情況下,確定所述存儲鏈路發(fā)生丟包。
進(jìn)一步地,所述第二檢測模塊包括:第二檢測子模塊,用于檢測所述發(fā)送端是否在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包;第二確定子模塊,用于在檢測出所述發(fā)送端在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包的情況下,確定所述心跳確認(rèn)數(shù)據(jù)包亂序。
進(jìn)一步地,所述計算單元包括:計算模塊,用于通過第一公式計算所述備選存儲鏈路的鏈路評價值,其中,所述第一公式為:其中,Ei為第i條可到達(dá)的所述備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,Epri是主存儲鏈路的誤碼率,是第i條可到達(dá)的所述備選存儲鏈路的時延,是第i條可到達(dá)的所述備選存儲鏈路的帶寬,是第i條可到達(dá)的所述備選存儲鏈路的誤碼率,α,β以及γ分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ≦1,α+β+γ=1。
進(jìn)一步地,所述第三確定單元包括:設(shè)置模塊,用于設(shè)置入選存儲鏈路集合,其中所述入選存儲鏈路集合為空集;第一計算子模塊,用于計算可到達(dá)的存儲鏈路的鏈路選擇評價值;判斷模塊,用于判斷所述鏈路選擇評價值是否大于等于存儲鏈路選擇評價參考值;加入模塊,用于在所述鏈路選擇評價值大于等于所述存儲鏈路選擇評價參考值時,將對應(yīng)的存儲鏈路加入所述入選存儲鏈路集合。
進(jìn)一步地,所述計算子模塊包括:第二計算子模塊,用于通過第二公式計算所述鏈路選擇評價值,其中,所述第二公式為:其中,θi為第i條可到達(dá)的所述備選存儲鏈路的所述鏈路選擇評價值,Ei為第i條可到達(dá)的所述備選存儲鏈路的所述鏈路評價值,Ebest為所有可到達(dá)的所述備選存儲鏈路的所述鏈路評價值的最大值。
在本發(fā)明實施例中,在確定發(fā)送端與接收端之間的多個存儲鏈路之后,發(fā)送端通過每個存儲鏈路向接收端發(fā)送心跳數(shù)據(jù)包,當(dāng)發(fā)送端接收到接收端基于心跳數(shù)據(jù)包向發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包時,根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定存儲鏈路中所有可到達(dá)的備選存儲鏈路,然后計算每條備選存儲鏈路的鏈路評價值,并根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定備選存儲鏈路中的可選擇的鏈路。在上述實施例中,在不改變存儲鏈路控制流程的基礎(chǔ)上,使用存儲心跳數(shù)據(jù)包機(jī)制對時延、帶寬和誤碼率的性能指標(biāo)進(jìn)行測量,從而準(zhǔn)確測量存儲鏈路的性能,進(jìn)而解決了現(xiàn)有技術(shù)中無法準(zhǔn)確選取備選存儲鏈路的問題。
附圖說明
此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:
圖1是根據(jù)本發(fā)明實施例的一種存儲鏈路的選擇方法的流程圖;
圖2是根據(jù)本發(fā)明實施例的一種存儲鏈路的選擇裝置的示意圖。
具體實施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分的實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
需要說明的是,本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”等是用于區(qū)別類似的對象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實施例能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
根據(jù)本發(fā)明實施例,提供了一種存儲鏈路選擇方法的方法實施例,需要說明的是,在附圖的流程圖示出的步驟可以在諸如一組計算機(jī)可執(zhí)行指令的計算機(jī)系統(tǒng)中執(zhí)行,并且,雖然在流程圖中示出了邏輯順序,但是在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟。
圖1是根據(jù)本發(fā)明實施例的存儲鏈路的選擇方法,如圖1所示,該方法包括如下步驟:
步驟S102,確定發(fā)送端與接收端之間的多條存儲鏈路;
步驟S104,通過每條存儲鏈路向接收端發(fā)送心跳數(shù)據(jù)包;
步驟S106,接收該接收端基于心跳數(shù)據(jù)包向發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包;
步驟S108,根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定存儲鏈路中所有可到達(dá)的備選存儲鏈路;
步驟S110,計算每條備選存儲鏈路的鏈路評價值;
步驟S112,根據(jù)鏈路評價值確定備選存儲鏈路中的可選擇的鏈路。
通過上述步驟,在確定發(fā)送端與接收端之間的多個存儲鏈路之后,發(fā)送端通過每個存儲鏈路向接收端發(fā)送心跳數(shù)據(jù)包,當(dāng)發(fā)送端接收到接收端基于心跳數(shù)據(jù)包向發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包時,根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定存儲鏈路中所有可到達(dá)的備選存儲鏈路,然后計算每條備選存儲鏈路的鏈路評價值,并根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定備選存儲鏈路中的可選擇的鏈路。在上述實施例中,在不改變存儲鏈路控制流程的基礎(chǔ)上,使用存儲心跳數(shù)據(jù)包機(jī)制對時延、帶寬和誤碼率的性能指標(biāo)進(jìn)行測量,從而準(zhǔn)確測量存儲鏈路的性能,既能在單個光纖傳輸數(shù)據(jù)時實現(xiàn)存儲鏈路切換時的鏈路優(yōu)選,提高存儲鏈路的帶寬利用率,同時又避免了在多條存儲鏈路同時傳輸方案中,各條存儲鏈路在性能差異很大時引起存儲數(shù)據(jù)亂序的問題,進(jìn)而解決了現(xiàn)有技術(shù)中無法準(zhǔn)確選取備選存儲鏈路的問題。
在步驟S104提供的技術(shù)方案中,通過每條存儲鏈路向接收端發(fā)送心跳數(shù)據(jù)包,其中,心跳數(shù)據(jù)包一般是用來判斷對方(設(shè)備、進(jìn)程或其他網(wǎng)元)是否正常運(yùn)行,通常采用定時發(fā)送簡單的通訊包,如果在預(yù)定的時間內(nèi)未收到對方的響應(yīng),則判斷對方已經(jīng)收到。具體地,心跳數(shù)據(jù)包是在客戶端和服務(wù)器之間定時通知對方自己狀態(tài)的一個自己定義的命令字,按照一定時間間隔發(fā)送,類似于心跳,所以叫做心跳包。
一種可選地,在執(zhí)行步驟S102之前,初始化參數(shù),該參數(shù)包括設(shè)定主存儲鏈路的時延初值、帶寬初值和誤碼率初值,設(shè)定每條可達(dá)到的備選存儲鏈路的時延初值、帶寬初值和誤碼率初值,設(shè)定丟失錯誤閾值和存儲鏈路選擇評價參考值。
進(jìn)一步地,根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定存儲鏈路中所有可到達(dá)的備選存儲鏈路包括:根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài),檢測存儲鏈路是否發(fā)生丟包;在檢測出存儲鏈路未發(fā)生丟包的情況下,檢測通過存儲鏈路返回的心跳確認(rèn)數(shù)據(jù)包是否亂序;在檢測出存儲鏈路返回的心跳確認(rèn)數(shù)據(jù)包未亂序的情況下,確定存儲鏈路為可到達(dá)的備選存儲鏈路。
進(jìn)一步地,檢測存儲鏈路是否發(fā)生丟包包括:在發(fā)送端接收到心跳確認(rèn)數(shù)據(jù)包后,檢測超時定時器是否超過預(yù)定值;在檢測出超時定時器超過預(yù)定值的情況下,確定存儲鏈路發(fā)生丟包。
具體地,任意選取一條存儲鏈路,發(fā)送端在所選存儲鏈路上分別連續(xù)發(fā)送2個相同的心跳數(shù)據(jù)包,同時針對每個心跳數(shù)據(jù)包,在所選存儲鏈路上啟動1個定時器,接收端在所選存儲鏈路上收到2個心跳數(shù)據(jù)包后,針對每個心跳數(shù)據(jù)包,通過所選存儲鏈路向發(fā)送端發(fā)送1個心跳確認(rèn)數(shù)據(jù)包,發(fā)送端接收到2個心跳確認(rèn)數(shù)據(jù)包后,檢測所選存儲鏈路的2個定時器,如果任意1個定時器超時,則認(rèn)為所選存儲鏈路發(fā)生丟包(即,數(shù)據(jù)包丟失)。
進(jìn)一步地,檢測通過存儲鏈路返回的心跳確認(rèn)數(shù)據(jù)包是否亂序包括:檢測發(fā)送端是否在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包;在檢測出發(fā)送端在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包的情況下,確定心跳確認(rèn)數(shù)據(jù)包亂序。
可選地,檢測存儲鏈路沒有發(fā)生丟包的情況下,在判斷接收到的2個心跳確認(rèn)數(shù)據(jù)包是否為亂序的心跳確認(rèn)數(shù)據(jù)包,如果接收到的2個心跳確認(rèn)數(shù)據(jù)包是亂序的心跳確認(rèn)數(shù)據(jù)包,則丟棄接收到的2個心跳確認(rèn)數(shù)據(jù)包,不改變備選存儲鏈路。
進(jìn)一步地,計算每條可到達(dá)的備選存儲鏈路的鏈路評價值包括:通過第一公式計算備選存儲鏈路的鏈路評價值,其中,第一公式為:其中,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,Epri是主存儲鏈路的誤碼率,是第i條可到達(dá)的備選存儲鏈路的時延,是第i條可到達(dá)的備選存儲鏈路的帶寬,是第i條可到達(dá)的備選存儲鏈路的誤碼率,α,β以及γ分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ1,α+β+γ=1。
具體地,可到達(dá)的備選存儲鏈路的時延可以利用下述公式計算:其中,是第i條可到達(dá)的備選存儲鏈路的時延,RTTi1和RTTi2是第i條可到達(dá)的備選存儲鏈路上發(fā)送端接收到的心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi1和HeartBeatACKi2的時間和發(fā)送端發(fā)送的心跳數(shù)據(jù)包HeartBeati1和HeartBeati2的時間間隔,其中,i為正整數(shù),可選地,i=1,2,...,n,n為可到達(dá)的備選存儲鏈路的總數(shù)。可到達(dá)的備選存儲鏈路的帶寬可以利用公式(2)計算:其中,是第i條可到達(dá)的備選存儲鏈路的帶寬,tinterval是發(fā)送端接收到的2個心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi1和HeartBeatACKi2的時間間隔,S是發(fā)送端發(fā)送的心跳數(shù)據(jù)包的大小。
進(jìn)一步地,根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定備選存儲鏈路中的可選擇的鏈路包括:設(shè)置入選存儲鏈路集合,其中入選存儲鏈路集合為空集;計算可到達(dá)的存儲鏈路的鏈路選擇評價值;判斷鏈路選擇評價值是否大于等于存儲鏈路選擇評價參考值;在鏈路選擇評價值大于等于存儲鏈路選擇評價參考值時,將對應(yīng)的存儲鏈路加入入選存儲鏈路集合。
一種可選地實施例中,在出現(xiàn)丟包的情況下,發(fā)送端丟棄在此之后該備選存儲鏈路收到的當(dāng)前心跳數(shù)據(jù)包的心跳確認(rèn)數(shù)據(jù)包,并使心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)加1;判斷心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)與丟失錯誤閾值之間的大小,當(dāng)心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)大于丟失錯誤閾值時,則將該備選存儲鏈路標(biāo)記為不可到達(dá)的備選存儲鏈路,選取一條未曾被選取過的備選存儲鏈路,返回執(zhí)行步驟S104;否則,不改變備選存儲鏈路,并返回執(zhí)行步驟S104。
在未出現(xiàn)丟包的情況下,判斷接收到的2個心跳確認(rèn)數(shù)據(jù)包是否為亂序的心跳確認(rèn)數(shù)據(jù)包,如果接收到的2個心跳確認(rèn)數(shù)據(jù)包是亂序的心跳確認(rèn)數(shù)據(jù)包,則丟棄接收到的2個心跳確認(rèn)數(shù)據(jù)包,不改變備選存儲鏈路,返回執(zhí)行步驟S104;否則,將該備選存儲鏈路標(biāo)記為可到達(dá)的備選存儲鏈路,計算該可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率;判斷是否已經(jīng)計算出所有可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率,如果已經(jīng)計算出所有可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率,則計算每條可達(dá)的備選存儲鏈路的鏈路評價值以及所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值;否則,選取一條未曾被選取的備選存儲鏈路,返回執(zhí)行步驟S104。在計算每條可到達(dá)的備選存儲鏈路的鏈路評價值以及所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值之后,根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定可選擇的鏈路。
可選地,計算可到達(dá)的存儲鏈路的鏈路選擇評價值包括:通過第二公式計算鏈路選擇評價值,其中,第二公式為:其中,θi為第i條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,Ebest為所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值。
所述計算該可到達(dá)的備選存儲鏈路的時延利用公式其中,是第i條可到達(dá)的備選存儲鏈路的時延,RTTi1和RTTi2分別是第i條可到達(dá)的備選存儲鏈路上發(fā)送端接收到的心跳確認(rèn)數(shù)據(jù)包的時間和與之對應(yīng)的發(fā)送端發(fā)送的心跳數(shù)據(jù)包的時間間隔,i=1,2,...,n,n為可到達(dá)的備選存儲鏈路的總數(shù)。
所述計算該可到達(dá)的備選存儲鏈路的帶寬利用公式其中,是第i條可到達(dá)的備選存儲鏈路的帶寬,tinterval是發(fā)送端接收到的2個心跳確認(rèn)數(shù)據(jù)包的時間間隔,S是發(fā)送端發(fā)送的心跳數(shù)據(jù)包的大小。
所述計算每條可到達(dá)的備選存儲鏈路的鏈路評價值利用公式其中,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,是第i條可到達(dá)的備選存儲鏈路的時延,是第i條可到達(dá)的備選存儲鏈路的帶寬,α和β分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ1,α+β+γ=1。
上述實施例中,所述根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定可選擇的鏈路包括:
設(shè)定入選存儲鏈路集合為空集;
根據(jù)公式計算每條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,根據(jù)公式計算主存儲鏈路的鏈路選擇評價值;其中,θi為第i條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,Ebest為所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值。
判斷每條可到達(dá)的備選存儲鏈路的鏈路選擇評價值與存儲鏈路選擇評價參考值的大小,當(dāng)可到達(dá)的備選存儲鏈路的鏈路選擇評價值大于等于存儲鏈路選擇評價參考值時,將該可到達(dá)的備選存儲鏈路加入入選存儲鏈路集合;判斷主存儲鏈路的鏈路選擇評價值與存儲鏈路選擇評價參考值的大小,當(dāng)主存儲鏈路的鏈路選擇評價值大于等于存儲鏈路選擇評價參考值時,將主存儲鏈路加入入選存儲鏈路集合。
將入選存儲鏈路集合中鏈路選擇評價值最大的鏈路設(shè)置為主存儲鏈路,此時入選存儲鏈路集合中的鏈路即為可選擇的鏈路。
本發(fā)明使用心跳機(jī)制對備選存儲鏈路的性能進(jìn)行準(zhǔn)確測量,其能夠在不改變存儲分組格式和控制流程的基礎(chǔ)上為存儲的鏈路切換和多條存儲鏈路同時傳輸?shù)逆溌愤x擇提供支持。
下面對本申請的一個可選的實施例進(jìn)行詳細(xì)描述:
步驟1:初始化參數(shù)。
本實施例中設(shè)定存儲多鏈路中共有三條存儲鏈路pathi,i=0,1,2;其中一條存儲鏈路設(shè)定為主存儲鏈路(path0)進(jìn)行數(shù)據(jù)傳輸;備選存儲鏈路有兩條,分別為備選存儲鏈路1(path1)和備選存儲鏈路2(path2)。設(shè)定主存儲鏈路時延初值RTTpri,init、帶寬初值Bpri,init和誤碼率初值Epri,init;設(shè)定備選存儲鏈路path1的時延初值帶寬初值和誤碼率初值設(shè)定備選存儲鏈路path2的時延初值帶寬初值和誤碼率初值設(shè)定丟失錯誤閾值Lostthre和鏈路選擇評價參考值θthr。
步驟2:任意選取一條備選存儲鏈路,如備選存儲鏈路pathi,i=1,2。
步驟3:發(fā)送端在備選存儲鏈路pathi上分別連續(xù)發(fā)送2個相同的心跳數(shù)據(jù)包HeartBeati1和HeartBeati2,心跳數(shù)據(jù)包的大小為S。同時針對每個心跳數(shù)據(jù)包,在該備選存儲鏈路上分別啟動超時定時器Timer1和Timer2。
步驟4:接收端在鏈路pathi上收到心跳數(shù)據(jù)包HeartBeati1后,立即經(jīng)過鏈路pathi向發(fā)送端發(fā)送心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi1;接收端在鏈路pathi上收到心跳數(shù)據(jù)包HeartBeati2后,立即經(jīng)過鏈路pathi向發(fā)送端發(fā)送心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi2。
步驟5:發(fā)送端接收到2個心跳確認(rèn)數(shù)據(jù)包后,檢測備選存儲鏈路的定時器,如果某一定時器超時,即Timeri≥3RTTi時(RTTi為前一時刻測量得到的該備選存儲鏈路時延),則認(rèn)為該鏈路發(fā)生數(shù)據(jù)包丟失,執(zhí)行步驟6;否則,執(zhí)行步驟9。
步驟6:發(fā)送端丟棄在此之后該備選存儲鏈路收到的當(dāng)前心跳數(shù)據(jù)包的心跳確認(rèn)數(shù)據(jù)包,并使心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)Losti加1。
步驟7:判斷心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)Losti與丟失錯誤閾值Lostthre之間的大小,當(dāng)心跳確認(rèn)數(shù)據(jù)包丟失次數(shù)Losti大于丟失錯誤閾值Lostthre時,則執(zhí)行步驟8;否則,不改變備選存儲鏈路,返回步驟3。
步驟8:將該備選存儲鏈路標(biāo)記為不可到達(dá)的備選存儲鏈路,選取一條未曾被選取過的備選存儲鏈路,返回步驟3。
步驟9:判斷接收到的2個心跳確認(rèn)數(shù)據(jù)包是否為亂序的心跳確認(rèn)數(shù)據(jù)包。如果發(fā)送端在接收到心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi1之前接收到心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi2,則說明這2個心跳確認(rèn)數(shù)據(jù)包是亂序的心跳確認(rèn)數(shù)據(jù)包,丟棄接收到的2個心跳確認(rèn)數(shù)據(jù)包,不改變備選存儲鏈路,執(zhí)行步驟3;否則,執(zhí)行步驟10。
步驟10:將該備選存儲鏈路標(biāo)記為可到達(dá)的備選存儲鏈路,計算該可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率。
其中,計算該可到達(dá)的備選存儲鏈路的時延利用公式其中,是第i條可到達(dá)的備選存儲鏈路的時延,RTTi1/RTTi2是第i條可到達(dá)的備選存儲鏈路上發(fā)送端接收到的心跳確認(rèn)數(shù)據(jù)包HeartBeatACKi1/HeartBeatACKi2的時間和發(fā)送端發(fā)送的心跳數(shù)據(jù)包HeartBeati1/HeartBeati2的時間間隔,i=1,2,...,n,n為可到達(dá)的備選存儲鏈路的總數(shù)。
其中,計算可到達(dá)的備選存儲鏈路的帶寬利用公式其中,是第i條可到達(dá)的備選存儲鏈路的帶寬,tinterval是發(fā)送端接收到的2個心跳確認(rèn)數(shù)據(jù)包的HeartBeatACKi1和HeartBeatACKi2的時間間隔,S是發(fā)送端發(fā)送的心跳數(shù)據(jù)包的大小。
步驟11:判斷是否已經(jīng)計算出所有可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率,如果已經(jīng)計算出所有可到達(dá)的備選存儲鏈路的時延、帶寬和誤碼率,則執(zhí)行步驟12;否則,選取一條未曾被選取的備選存儲鏈路,返回步驟3。
對于本實施例,如果備選存儲鏈路path1和備選存儲鏈路path2都是可到達(dá)的備選存儲鏈路,則需要計算出備選存儲鏈路path1和備選存儲鏈路path2的時延和帶寬。在計算出備選存儲鏈路path1的時延和帶寬后,選擇出備選存儲鏈路path2,并返回步驟3,依照步驟3-11計算出備選存儲鏈路path2的時延、帶寬和誤碼率。
步驟:12:計算每條可到達(dá)的備選存儲鏈路的鏈路評價值以及所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值。
計算每條可到達(dá)的備選存儲鏈路的鏈路評價值利用公式其中,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,是第i條可到達(dá)的備選存儲鏈路的時延,是第i條可到達(dá)的備選存儲鏈路的帶寬,α和β分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ1,α+β+γ=1。
計算所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值利用公式其中n為可到達(dá)的備選存儲鏈路的總數(shù)。
步驟13:根據(jù)每條可到達(dá)的備選存儲鏈路的鏈路評價值確定可選擇的鏈路,可選地,該步驟可以通過如下方案實現(xiàn):
步驟131:設(shè)定入選存儲鏈路集合為空集。
步驟132:根據(jù)公式計算每條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,根據(jù)公式計算主存儲鏈路鏈路選擇評價值;其中,θi為第i條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,Ebest為所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值。
步驟133:判斷每條可到達(dá)的備選存儲鏈路的鏈路選擇評價值θi與存儲鏈路選擇評價參考值θthr的大小,當(dāng)可到達(dá)的備選存儲鏈路的鏈路選擇評價值θi大于等于存儲鏈路選擇評價參考值θthr時,將該可到達(dá)的備選存儲鏈路加入入選存儲鏈路集合;判斷主存儲鏈路鏈路選擇評價值θ0與存儲鏈路選擇評價參考值θthr的大小,當(dāng)主存儲鏈路的鏈路選擇評價值θ0大于等于存儲鏈路選擇評價參考值θthr時,將主存儲鏈路加入入選存儲鏈路集合。其中,0≤θthr≤1.0,在單條存儲鏈路傳輸中θthr=1.0,在多條存儲鏈路同時傳輸中,建議取值為θthr=0.5。
步驟134:將入選存儲鏈路集合中存儲鏈路選擇評價值最大的存儲鏈路設(shè)置為主存儲鏈路,此時入選存儲鏈路集合中的鏈路即為可選擇的鏈路。
本發(fā)明根據(jù)存儲特有的備選存儲鏈路分組數(shù)據(jù)傳輸特點,使用心跳機(jī)制進(jìn)行時延、帶寬和誤碼率測量,在不改變存儲數(shù)據(jù)分組格式和存儲鏈路控制流程的基礎(chǔ)上,準(zhǔn)確地測量備選存儲鏈路時延、帶寬和誤碼率值,為存儲的鏈路切換和多條存儲鏈路同時傳輸?shù)逆溌愤x擇提供支持。
根據(jù)本發(fā)明實施例的一個方面,提供了一種存儲鏈路的選擇裝置,該裝置包括如圖2所示的:第一確定單元21,用于確定發(fā)送端與接收端之間的多條存儲鏈路;發(fā)送單元22,用于通過每條存儲鏈路向接收端發(fā)送心跳數(shù)據(jù)包;接收單元23,用于接收接收端基于心跳數(shù)據(jù)包向發(fā)送端返回的心跳確認(rèn)數(shù)據(jù)包;第二確定單元24,用于根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài)確定存儲鏈路中所有可到達(dá)的備選存儲鏈路;計算單元25,用于計算每條備選存儲鏈路的鏈路評價值;第三確定單元26,用于根據(jù)鏈路評價值確定備選存儲鏈路中的可選擇的鏈路。
進(jìn)一步地,第二確定單元包括:第一檢測模塊,用于根據(jù)心跳確認(rèn)數(shù)據(jù)包的狀態(tài),檢測存儲鏈路是否發(fā)生丟包;第二檢測模塊,用于在檢測出存儲鏈路未發(fā)生丟包的情況下,檢測通過存儲鏈路返回的心跳確認(rèn)數(shù)據(jù)包是否亂序;確定模塊,用于在檢測出存儲鏈路返回的心跳確認(rèn)數(shù)據(jù)包未亂序的情況下,確定存儲鏈路為可到達(dá)的備選存儲鏈路。
進(jìn)一步地,第一檢測模塊包括:第一檢測子模塊,用于在發(fā)送端接收到心跳確認(rèn)數(shù)據(jù)包后,檢測超時定時器是否超過預(yù)定值;第一確定子模塊,用于在檢測出超時定時器超過預(yù)定值的情況下,確定存儲鏈路發(fā)生丟包。
進(jìn)一步地,第二檢測模塊包括:第二檢測子模塊,用于檢測發(fā)送端是否在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包;第二確定子模塊,用于在檢測出發(fā)送端在接收到第一心跳確認(rèn)數(shù)據(jù)包之前收到第二心跳確認(rèn)數(shù)據(jù)包的情況下,確定心跳確認(rèn)數(shù)據(jù)包亂序。
進(jìn)一步地,計算單元包括:計算模塊,用于通過第一公式計算備選存儲鏈路的鏈路評價值,其中,第一公式為:其中,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,RTTpri是主存儲鏈路的時延,Bpri是主存儲鏈路的帶寬,Epri是主存儲鏈路的誤碼率,是第i條可到達(dá)的備選存儲鏈路的時延,是第i條可到達(dá)的備選存儲鏈路的帶寬,是第i條可到達(dá)的備選存儲鏈路的誤碼率,α,β以及γ分別為鏈路評價參數(shù),且0≤α≤1,0≤β≤1,0≤γ≦1,α+β+γ=1。
進(jìn)一步地,第三確定單元包括:設(shè)置模塊,用于設(shè)置入選存儲鏈路集合,其中入選存儲鏈路集合為空集;第一計算子模塊,用于計算可到達(dá)的存儲鏈路的鏈路選擇評價值;判斷模塊,用于判斷鏈路選擇評價值是否大于等于存儲鏈路選擇評價參考值;加入模塊,用于在鏈路選擇評價值大于等于存儲鏈路選擇評價參考值時,將對應(yīng)的存儲鏈路加入入選存儲鏈路集合。
進(jìn)一步地,計算子模塊包括:第二計算子模塊,用于通過第二公式計算鏈路選擇評價值,其中,第二公式為:其中,θi為第i條可到達(dá)的備選存儲鏈路的鏈路選擇評價值,Ei為第i條可到達(dá)的備選存儲鏈路的鏈路評價值,Ebest為所有可到達(dá)的備選存儲鏈路的鏈路評價值的最大值。
述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。
在本發(fā)明的上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其他實施例的相關(guān)描述。
在本申請所提供的幾個實施例中,應(yīng)該理解到,所揭露的技術(shù)內(nèi)容,可通過其它的方式實現(xiàn)。其中,以上所描述的裝置實施例僅僅是示意性的,例如所述單元的劃分,可以為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,單元或模塊的間接耦合或通信連接,可以是電性或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個單元上。可以根據(jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨(dú)物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用軟件功能單元的形式實現(xiàn)。
所述集成的單元如果以軟件功能單元的形式實現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可為個人計算機(jī)、服務(wù)器或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:U盤、只讀存儲器(ROM,Read-Only Memory)、隨機(jī)存取存儲器(RAM,Random Access Memory)、移動硬盤、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。