專利名稱:一種信譽(yù)流量控制方法
技術(shù)領(lǐng)域:
本發(fā)明涉及高速數(shù)據(jù)通信網(wǎng)絡(luò)端到端的鏈路流量控制,特別涉及一種 信譽(yù)流量控制方法。
背景技術(shù):
高速通信網(wǎng)絡(luò)通常由兩種網(wǎng)絡(luò)實(shí)體組成,處理節(jié)點(diǎn)和交換機(jī),其中的 處理節(jié)點(diǎn)包括網(wǎng)卡和主機(jī)。如圖l所示,網(wǎng)卡與交換機(jī)的通信端口相連, 主機(jī)把數(shù)據(jù)包發(fā)送給網(wǎng)卡,經(jīng)過交換機(jī)到達(dá)目的節(jié)點(diǎn)以實(shí)現(xiàn)數(shù)據(jù)通信過 程。
在數(shù)據(jù)通信過程中,為了避免交換機(jī)接收緩沖區(qū)溢出,導(dǎo)致數(shù)據(jù)包丟
失,需要采用流量控制策略。流量控制可采用專用物理通道,Xon/Xoff或 基于信譽(yù)(Credit-based)等方法實(shí)現(xiàn)。由于串行數(shù)據(jù)傳輸方法的采用以及 總線帶寬的迅速提升,釆用專用物理通道的實(shí)現(xiàn)方法不僅不易與總線串行 化技術(shù)結(jié)合,還要求額外的連接線,相對(duì)而言成本較高。因此,目前高速 通信中多采用基于Xon/Xoff或信譽(yù)的方法。Xon/Xoff —般適用于蟲洞 (Wormhole)交換方式,對(duì)于采用虛切入(Virtual Cut Through)交換方式 的交換機(jī)則 一般采用基于信譽(yù)的流量控制方法。
網(wǎng)絡(luò)中的交換機(jī)或處理節(jié)點(diǎn)采用點(diǎn)到點(diǎn)的方式進(jìn)行連接。每個(gè)連接在 物理鏈路兩端的通信實(shí)體(兩端都為交換機(jī),或一端為交換機(jī)另一端為處 理節(jié)點(diǎn))包含若干個(gè)虛通道(Virtual Channel),流量控制是基于每個(gè)虛通 道進(jìn)行的。每個(gè)交換機(jī)端口或處理節(jié)點(diǎn)都包含接收模塊,發(fā)送模塊和流量 控制模塊,它們分別用于接收和發(fā)送物理鏈路上的數(shù)據(jù)包以及進(jìn)行發(fā)送模 塊和接收模塊的流量控制。
通信實(shí)體進(jìn)行流量控制時(shí)的基本過程如下 一個(gè)通信實(shí)體的接收模塊
接收到通信對(duì)端的流控包,并把流控包中的信息傳遞給本身的流控模塊。 該流控模塊經(jīng)過同步處理,將流控包中所包含的信譽(yù)值發(fā)送(信譽(yù)值表示 發(fā)送模塊能夠發(fā)送最大數(shù)據(jù)量)給發(fā)送模塊。發(fā)送模塊可發(fā)送不超過該信
譽(yù)值的數(shù)據(jù)量。隨著數(shù)據(jù)的發(fā)送,信譽(yù)值逐步減少。當(dāng)要發(fā)送的數(shù)據(jù)包長 度大于剩余信譽(yù)值時(shí),發(fā)送模塊不能進(jìn)行數(shù)據(jù)發(fā)送,直到接收模塊接收到 通信對(duì)端的流控包,得到新的信譽(yù)值,且該信譽(yù)值的大小比所要發(fā)送數(shù)據(jù) 包的長度大時(shí),發(fā)送模塊才能繼續(xù)發(fā)送。
在上述過程中,流控包的發(fā)送時(shí)機(jī)對(duì)性能有重要影響。 一方面當(dāng)發(fā)送 模塊信譽(yù)值不足時(shí),如果通信對(duì)端有足夠的空閑空間卻沒有及時(shí)補(bǔ)充新的 信譽(yù)值,發(fā)送模塊就不能發(fā)送新的數(shù)據(jù)包,造成物理鏈路的浪費(fèi),導(dǎo)致交
換機(jī)吞吐率下降;另一方面如果通信對(duì)端頻繁發(fā)送信譽(yù)信息,就會(huì)占用大 量物理通道導(dǎo)致正常的數(shù)據(jù)包無法發(fā)送,這樣也會(huì)影響交換機(jī)性能。因此, 如何選擇流控包的發(fā)送時(shí)機(jī),對(duì)于提高交換機(jī)的性能有重要的影響。但在 現(xiàn)有的方法,如在AMD HyperTransport協(xié)議規(guī)范中,對(duì)流控包的發(fā)送時(shí) 機(jī)采用固定方法,而沒有考慮接收緩沖區(qū)剩余空間和當(dāng)前流量特征。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有流量控制方法中對(duì)流控包的發(fā)送時(shí)機(jī)過于 僵化,沒有考慮接收緩沖區(qū)剩余空間和當(dāng)前流量特征的缺陷,從而提供一 種能夠有效提高物理鏈路資源和接收緩沖區(qū)資源利用率的流量控制方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種信譽(yù)流量控制方法,包括以下 步驟
步驟l)、上游通信端口在發(fā)送數(shù)據(jù)包前,比較所要發(fā)送數(shù)據(jù)包的大小 與所述遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值,當(dāng)所要發(fā)送數(shù)據(jù)包的大小小于遠(yuǎn)端 信譽(yù)值計(jì)數(shù)器中的信譽(yù)值時(shí),發(fā)送所述數(shù)據(jù)包,并執(zhí)行下一步,否則,不 發(fā)送所述數(shù)據(jù)包;
步驟2)、根據(jù)所發(fā)送數(shù)據(jù)包的大小,減少所述遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的 信譽(yù)值;
步驟3)、下游通信端口接收數(shù)據(jù)包,并根據(jù)所述數(shù)據(jù)包的大小減少所 述本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值;
步驟4 )、下游通信端口對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的長 度進(jìn)行預(yù)測;
步驟5)、根據(jù)步驟4)所得到的數(shù)據(jù)包長度預(yù)測結(jié)果,下游通信端口 的本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值,以及下游通信端口接收緩沖區(qū)空閑空間 的大小,決定是否需要向上游通信端口發(fā)送包含有新信譽(yù)值的流控包。
上述技術(shù)方案中,所述信譽(yù)值為表示信譽(yù)塊大小的值。
上述技術(shù)方案中,在所述的步驟4)中,所述的對(duì)上游通信端口所要 發(fā)送的下一個(gè)數(shù)據(jù)包的長度進(jìn)行預(yù)測是指
將臨近時(shí)間段內(nèi),從所接收到的數(shù)據(jù)包中選擇數(shù)量最多的數(shù)據(jù)包長度 類型,并將該類型數(shù)據(jù)包的長度作為所預(yù)測的下一個(gè)數(shù)據(jù)包的長度。
上述技術(shù)方案中,所述的對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的 長度進(jìn)行預(yù)測包括
首先,根據(jù)最大傳輸單元的大小限制,對(duì)數(shù)據(jù)包長度進(jìn)行分類;所述 最大傳輸單元為網(wǎng)絡(luò)上能夠傳送的最大長度的數(shù)據(jù)包;
然后,為每種數(shù)據(jù)包長度類型設(shè)置相應(yīng)的計(jì)數(shù)器;
接著,在接收數(shù)據(jù)包的過程中,根據(jù)所接收數(shù)據(jù)包的長度在相應(yīng)的數(shù) 據(jù)包長度類型中,為所對(duì)應(yīng)的計(jì)數(shù)器增值;
最后,在預(yù)測下一個(gè)數(shù)據(jù)包的長度時(shí),從所有的計(jì)數(shù)器中選擇值最大 的計(jì)數(shù)器,根據(jù)該計(jì)數(shù)器得到對(duì)應(yīng)的數(shù)據(jù)包長度類型,將該類型數(shù)據(jù)包的 長度作為所預(yù)測的下 一 個(gè)數(shù)據(jù)包的長度。
上述技術(shù)方案中,在所述的步驟5)中,在判斷是否需要向上游通信 端口發(fā)送包含有新信譽(yù)值的流控包時(shí),將所述下游通信端口的本地信譽(yù)值 計(jì)數(shù)器中的信譽(yù)值與所述數(shù)據(jù)包長度預(yù)測結(jié)果進(jìn)行比較,并將所述下游通 信端口接收緩沖區(qū)空閑空間的大小與所述數(shù)據(jù)包長度預(yù)測結(jié)果進(jìn)行比較,
根據(jù)上述兩個(gè)比較結(jié)果,決定是否發(fā)送流控包。
在判斷是否需要向上游通信端口發(fā)送包含有新信譽(yù)值的流控包時(shí),只 有同時(shí)滿足兩個(gè)判斷條件才能發(fā)送流控包,所述兩個(gè)判斷條件是指 RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)——條件1 FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)——條件2
其中,RemainCreditdw表示下游通信端口中的剩余信譽(yù)值,即下游通 信端口中本地信譽(yù)值計(jì)數(shù)器的值;
FreeCrediW表示下游通信端口接收緩沖區(qū)的空閑空間的信譽(yù)值;
PrePktLen表示數(shù)據(jù)包長度預(yù)測結(jié)果;
RTT表示物理鏈路回環(huán)時(shí)間,BW表示物理鏈路的帶寬,RTTxBW 表示在物理鏈路回環(huán)時(shí)間內(nèi)物理鏈路上傳輸?shù)臄?shù)據(jù)包大??; creditof()表示按信譽(yù)塊大小所進(jìn)行的規(guī)整化操作。 本發(fā)明的優(yōu)點(diǎn)在于
本發(fā)明的信譽(yù)流量控制方法不會(huì)盲目發(fā)送流控信息,只會(huì)根據(jù)當(dāng)前數(shù) 據(jù)流情況,自適應(yīng)的在鏈路恰好需要流控信息時(shí)發(fā)送有效流控包,來保證 數(shù)據(jù)流不斷流,從而提高物理鏈路和緩沖區(qū)資源利用率。
以下,結(jié)合附圖來詳細(xì)說明本發(fā)明的實(shí)施例,其中
圖1為高速通信網(wǎng)絡(luò)的示意圖2為一個(gè)物理鏈路中的上下游通信端口的示意圖3為數(shù)據(jù)包長度預(yù)測的硬件裝置圖4為本發(fā)明的信譽(yù)流量控制方法的流程圖5是數(shù)據(jù)包的長度類型與數(shù)據(jù)包的預(yù)測長度對(duì)應(yīng)關(guān)系表的示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施方式
對(duì)本發(fā)明的方法進(jìn)行說明。 鏈路通信由兩個(gè)對(duì)等的通信實(shí)體組成,即互聯(lián)的兩個(gè)通信端口。在圖 2中,把其中一個(gè)通信端口稱為上游端口,另外一個(gè)通信端口稱為下游端 口。每個(gè)通信端口中包含發(fā)送模塊、接收模塊和流量控制模塊。上游的發(fā) 送模塊和下游的接收模塊相連,下游的發(fā)送模塊和上游的接收模塊相連。 流量控制模塊在兩個(gè)流向上相互獨(dú)立且功能相同。在說明本發(fā)明的方法 前,首先對(duì)通信端口中各個(gè)模塊的功能做詳細(xì)說明。
接收模塊的作用是接收數(shù)據(jù)流,并從所接收的數(shù)據(jù)流中提取數(shù)據(jù)包和 流控包。接收模塊中包含有多個(gè)虛通道,每個(gè)虛通道有各自的接收緩沖區(qū), 用來暫存網(wǎng)絡(luò)上的數(shù)據(jù)包。在接收數(shù)據(jù)包的過程中,接收模塊還需要不停 地檢測是否有流控包插入到數(shù)據(jù)包中。如果有,則把嵌入到數(shù)據(jù)包的流控 包提取出來。
接收模塊提供給流控模塊四個(gè)參數(shù)。第 一 個(gè)參數(shù)為 Creditof(FreeSpace),其中的FreeSpace表示當(dāng)前接收緩沖區(qū)中的空閑空間, creditof(FreeSpace)是對(duì)FreeSpace按信譽(yù)塊大小進(jìn)行規(guī)整化操作。該參數(shù) 的主要作用是用于流控模塊進(jìn)行流控包發(fā)送時(shí)機(jī)的判斷和生成新的本地 信譽(yù)值。信譽(yù)值是表示信譽(yù)塊大小的值,信譽(yù)塊是流量控制的基本單位, 它在大小上等于一定數(shù)量的字節(jié)單元,如64字節(jié)、128字節(jié)等。第二個(gè)參 數(shù)為New Credit, New Credit是接收模塊從通信對(duì)端所發(fā)送的流控包中提
取的新信譽(yù)值。接收模塊利用New Credit通知流控模塊進(jìn)行遠(yuǎn)端信譽(yù)值的 更新操作,該參數(shù)的值表示了本地發(fā)送模塊能夠發(fā)送的最大數(shù)據(jù)量。第三 個(gè)參數(shù)為一位的信號(hào)量,它的作用是通知流控模塊將本地信譽(yù)值自減1。 接收模塊每當(dāng)接收到 一個(gè)信譽(yù)塊數(shù)據(jù)量時(shí),通知流控^t塊把本地信譽(yù)值進(jìn) 行自減1操作。第四個(gè)參數(shù)為數(shù)據(jù)包長度,流控模塊根據(jù)該值進(jìn)行數(shù)據(jù)包 長度的預(yù)測。
發(fā)送模塊負(fù)責(zé)發(fā)送數(shù)據(jù)包和流控包。發(fā)送數(shù)據(jù)包時(shí),發(fā)送模塊針對(duì)每 個(gè)虛通道進(jìn)行長度^r查,只有發(fā)送數(shù)據(jù)包長小于遠(yuǎn)端信譽(yù)值時(shí),數(shù)據(jù)包才 能夠發(fā)送。由于流量控制通常是雙向的,通信過程中的上游端口和下游端 口也是相對(duì)的,發(fā)送模塊經(jīng)常要同時(shí)發(fā)送數(shù)據(jù)包和流控包。因此,發(fā)送模 塊時(shí)時(shí)檢測有無流控包請(qǐng)求發(fā)送,即使在發(fā)送數(shù)據(jù)包的過程中,如果有流 控包請(qǐng)求,發(fā)送模塊也應(yīng)當(dāng)把流控包插入到數(shù)據(jù)包中,以保證流控信息的 及時(shí)性。
發(fā)送模塊只向流控模塊提供1個(gè)信息,即當(dāng)發(fā)送數(shù)據(jù)達(dá)到一個(gè)信譽(yù)塊 時(shí),通知流控模快把當(dāng)前的遠(yuǎn)端信譽(yù)值進(jìn)行自減l操作。
流控模塊根據(jù)統(tǒng)計(jì)信息和狀態(tài)信息來判斷何時(shí)發(fā)送流控包給通信對(duì) 端,并把發(fā)送請(qǐng)求和發(fā)送參數(shù)(本地新信譽(yù)值(New Credit))提供給發(fā)送 模塊,發(fā)送模塊再根據(jù)流控模塊的請(qǐng)求和提供的參數(shù),發(fā)送流控包給通信 對(duì)端。
流控模塊中包含兩個(gè)重要的計(jì)數(shù)器。 一個(gè)是遠(yuǎn)端信譽(yù)值計(jì)數(shù)器 (RemoteCreditCnt),該計(jì)數(shù)器表示從上次接收到對(duì)方流控包后,還剩余 的信譽(yù)值。發(fā)送模塊用該信譽(yù)值來判斷能否發(fā)送數(shù)據(jù)包。另一個(gè)是本地信 譽(yù)值計(jì)數(shù)器(LocalCreditCnt),該計(jì)數(shù)器表示從上次發(fā)送流控包給對(duì)方后, 本地還剩余的信譽(yù)值。該計(jì)數(shù)器在大小上,約等于對(duì)方的遠(yuǎn)端信譽(yù)計(jì)數(shù)器, 是對(duì)該值的一個(gè)估計(jì)。有了該計(jì)數(shù)器后,本地流控模塊就可以知道對(duì)方發(fā) 送模塊能夠發(fā)送的數(shù)據(jù)量大小。
流控模塊根據(jù)發(fā)送模塊的指示對(duì)遠(yuǎn)端信譽(yù)值計(jì)數(shù)器 (RemoteCreditCnt)進(jìn)行自減1操作,根據(jù)接收模塊的指示對(duì)本地信譽(yù)值 計(jì)數(shù)器(LocalCreditCnt)進(jìn)行自減1操作。流控模塊還要把接收到的新信 譽(yù)值更新到遠(yuǎn)端信譽(yù)計(jì)數(shù)器。此外流控模塊還要根據(jù)當(dāng)前緩沖區(qū)的空閑情 況,判斷一個(gè)合適的時(shí)機(jī)發(fā)送流控包。該時(shí)機(jī)一方面能夠保證數(shù)據(jù)包不斷 流,另一方面還能夠盡量減少流量控制信息對(duì)物理帶寬的開銷,減少對(duì)正
常數(shù)據(jù)通信的影響,提高數(shù)據(jù)吞吐率,減少數(shù)據(jù)包平均等待時(shí)間,同時(shí)能 夠適應(yīng)不同數(shù)據(jù)流對(duì)流控方法的影響。
流控模塊要在合適時(shí)機(jī)發(fā)送流控包的一個(gè)重要前提是對(duì)上游通信端 口所要發(fā)送的下一個(gè)數(shù)據(jù)包的包長進(jìn)行預(yù)測。在網(wǎng)絡(luò)中存在著大量突發(fā)數(shù) 據(jù)包,這些數(shù)據(jù)包長度相同,且在時(shí)間上彼此相連,這就為包長預(yù)測提供 了基礎(chǔ)。本發(fā)明中所采用的包長預(yù)測方法的基本思想是選擇在臨近時(shí)間段
內(nèi)最大可能到達(dá)的包長。其基本實(shí)現(xiàn)步驟為首先根據(jù)最大傳輸單元 (MTU: Maximum Transfer Unit,網(wǎng)絡(luò)上能夠傳送的最大長度的數(shù)據(jù)包) 的限制,對(duì)數(shù)據(jù)包長度進(jìn)行分類,將數(shù)據(jù)包長度分為(0,L0 (L!+1,L2)... (Lm.rH,MTU)等m種長度類型;然后為每種數(shù)據(jù)包長度類型設(shè)置一個(gè)相 應(yīng)的計(jì)數(shù)器Counteri,每當(dāng)接收到該長度范圍內(nèi)的一個(gè)數(shù)據(jù)包后,Counteri 加1;在每次做包長預(yù)測時(shí),選取值最大的計(jì)數(shù)器,根據(jù)所選取的計(jì)數(shù)器 從一個(gè)存儲(chǔ)于內(nèi)容可尋址存儲(chǔ)器中的表得到數(shù)據(jù)包的預(yù)測長度。圖5是存 儲(chǔ)于內(nèi)容可尋址存儲(chǔ)器中的表的一個(gè)示例圖,從該圖中可以看出,對(duì)于一
定的長度區(qū)間有固定的預(yù)測值,選定一個(gè)計(jì)數(shù)器后即可得到相應(yīng)的數(shù)據(jù)包 的預(yù)測長度。為了保證預(yù)測的時(shí)間局部性,當(dāng)鏈路超過一定時(shí)間沒有接收 到數(shù)據(jù)包后,所有與包長預(yù)測相關(guān)的計(jì)數(shù)器清零。對(duì)包長預(yù)測的上述操作 可通過圖3中的裝置圖實(shí)現(xiàn)。在本實(shí)施例中,介紹了一種包長預(yù)測的可能 實(shí)現(xiàn)方式,但本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)明白,采用其他方式的包長預(yù)測 方法也可應(yīng)用于本發(fā)明的申請(qǐng)。
在對(duì)所要發(fā)送的數(shù)據(jù)包進(jìn)行包長預(yù)測的基礎(chǔ)上,本發(fā)明對(duì)流控包的發(fā) 送時(shí)機(jī)進(jìn)行控制。在一個(gè)實(shí)施例中,對(duì)流控包的發(fā)送時(shí)機(jī)進(jìn)行控制基于以 下2個(gè)條件
RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)——條件1 FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)——條件2
只有同時(shí)滿足了上述2個(gè)條件,下游通信端口的流控模塊才會(huì)通知發(fā) 送模塊發(fā)送包含有新信譽(yù)值的流控包。
上述公式中,RemainCreditdw表示下游通信模塊中的剩余信譽(yù)值,它 的值等于下游通信端口中本地信譽(yù)值計(jì)數(shù)器的值;FreeCreditdw表示下游通 信模塊中某一虛通道的接收緩沖區(qū)的空閑空間的信譽(yù)值,它的大小是對(duì)所 述接收緩沖區(qū)的空閑空間按信譽(yù)塊大小進(jìn)行規(guī)整化操作后得到的; PrePktLen表示下游通信端口的流控模塊根據(jù)已往所接收到的包長度,預(yù)
測的下一個(gè)將要到來的數(shù)據(jù)包長度,也就是步驟60所得到的包長預(yù)測結(jié) 果;RTT (Round Trip Time)表示物理鏈路回環(huán)時(shí)間,BW表示物理鏈路 的帶寬,RTTxBW表示在該回環(huán)時(shí)間內(nèi)所包含的物理鏈路上傳輸?shù)臄?shù)據(jù) 包大?。籧reditof()就表示按信譽(yù)塊大小所進(jìn)行的規(guī)整化操作。
在上述兩個(gè)條件中,不等式右端所增加的變量creditof(RTT x BW)表 示在鏈路上可能包含的信息量。由于發(fā)送模塊發(fā)送出的數(shù)據(jù)要經(jīng)過物理線 傳輸延遲一段時(shí)間才能到達(dá)接收模塊,因此在預(yù)估通信流量時(shí)應(yīng)當(dāng)添加這 一變量。由于鏈路上的信息不可知,所以本發(fā)明采用最壞估計(jì)方法,假設(shè) 在鏈路上存在creditof(RTT x BW)大小的信息量。在數(shù)值上creditof(RTT x BW)跟線長和帶寬有關(guān),對(duì)于2.5Gbps網(wǎng)絡(luò),20米長度傳輸線范圍內(nèi),該 值范圍在l-2個(gè)信譽(yù)值之間。上述判斷條件的主要思想是下游接收模塊采 用預(yù)測下一個(gè)到來的數(shù)據(jù)包長度比較當(dāng)前剩余信譽(yù)值。如果當(dāng)前剩余值足 以滿足長度需求,就不發(fā)送流控包;相反如果不能滿足,就觀察當(dāng)前緩沖 區(qū)資源剩余情況;如果空閑資源能夠滿足下一個(gè)數(shù)據(jù)包長度,就立即發(fā)送 流控包,否則不發(fā)送流控包。這種方法不會(huì)盲目發(fā)送流控信息,只會(huì)根據(jù) 當(dāng)前數(shù)據(jù)流情況,自適應(yīng)地在鏈路恰好需要流控信息時(shí)發(fā)送有效流控空數(shù) 據(jù)包,以保證凄t據(jù)流不斷流。
在上述實(shí)施例中,介紹了流控包發(fā)送時(shí)機(jī)的一種具體判斷條件,但本 發(fā)明的技術(shù)人員應(yīng)當(dāng)明白,其他的判斷條件也可用于本發(fā)明。
在對(duì)通信端口中的各個(gè)組成部分進(jìn)行詳細(xì)說明的基礎(chǔ)上,結(jié)合一個(gè)實(shí) 施例對(duì)本發(fā)明的方法進(jìn)行說明。在實(shí)施例中,為了方便描述,將采用由上 游發(fā)送模塊到下游接收模塊這個(gè)數(shù)據(jù)流向?yàn)槔龑?duì)本發(fā)明的方法進(jìn)行說明。
當(dāng)數(shù)據(jù)流從上游通信端口發(fā)送到下游通信端口時(shí),流控方向?yàn)閺南掠?通信端口到上游通信端口。其中,流控的目的是下游通信端口為了防止自 身的接收緩沖區(qū)溢出,而對(duì)上游通信端口的發(fā)送模塊進(jìn)行數(shù)據(jù)發(fā)送的控 制。應(yīng)當(dāng)注意的是,在流控過程中,所要完成的流控操作是針對(duì)單獨(dú)的虛 通道進(jìn)行的,所有對(duì)參數(shù)的描述都是針對(duì)一個(gè)虛通道的描述。在前文中已 經(jīng)提到, 一個(gè)流控模塊包含有遠(yuǎn)端信譽(yù)值計(jì)數(shù)器和本地信譽(yù)值計(jì)數(shù)器這兩 個(gè)重要的計(jì)數(shù)器,在本實(shí)施例中,由于數(shù)據(jù)流方向?yàn)閺纳嫌瓮ㄐ哦丝诘较?游通信端口,因此,上游通信端口主要釆用遠(yuǎn)端信譽(yù)值計(jì)數(shù)器,而下游通 信端口主要采用本地信譽(yù)值計(jì)數(shù)器。
仍然以圖2為例,對(duì)本發(fā)明的方法進(jìn)行詳細(xì)說明,在圖2中,上游通
信端口是數(shù)據(jù)的發(fā)送端,下游通信端口是數(shù)據(jù)的接收端,參考圖4,本發(fā) 明方法的具體實(shí)現(xiàn)步驟如下
步驟IO、對(duì)一次通信過程中的上下游通信端口分別做初始化操作,在 初始化過程中,分別為上游通信端口中的遠(yuǎn)端信譽(yù)值計(jì)數(shù)器和下游通信端 口中的本地信譽(yù)值計(jì)數(shù)器賦予初值。
在本步驟中,下游通信端口中的接收模塊首先得到本次通信過程所涉 及虛通道的接收緩沖區(qū)大小,用RxBuf表示該接收緩沖區(qū)大小,然后對(duì)接 收緩沖區(qū)按信譽(yù)塊大小進(jìn)行規(guī)整化操作,得到所述接收緩沖區(qū)大小的信譽(yù) 值,用creditof(RxBuf)表示,將該信譽(yù)值賦予下游通信端口的本地信譽(yù)值 計(jì)數(shù)器,最后還要將該信譽(yù)值通過下游通信端口的發(fā)送模塊和上游通信端 口的接收模塊通知上游通信端口的遠(yuǎn)端信譽(yù)值計(jì)數(shù)器。
經(jīng)過初始化過程后,上游通信端口的遠(yuǎn)端信譽(yù)值計(jì)數(shù)器和下游通信端 口的本地信譽(yù)值計(jì)數(shù)器的初始值應(yīng)當(dāng)相同,大小均為creditof(RxBuf)。初 始化操作是一個(gè)系統(tǒng)在剛開始做通信過程時(shí)所經(jīng)歷的階段,在某些通信過 程中可省去這一操作。
步驟20、上游通信端口的發(fā)送模塊發(fā)送虛通道中的數(shù)據(jù),在發(fā)送數(shù)據(jù) 包的過程中,判斷所要發(fā)送數(shù)據(jù)包的大小是否小于遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的 信譽(yù)值,如果小于,則執(zhí)行下一步,否則,發(fā)送模塊停止發(fā)送所述虛通道 中的數(shù)據(jù),該虛通道處于閑置狀態(tài)。
步驟30、發(fā)送數(shù)據(jù)包,在發(fā)送數(shù)據(jù)包的過程中,發(fā)送模塊每發(fā)送一個(gè) 信譽(yù)塊的數(shù)據(jù)量,就通知本通信端口中的流控模塊把遠(yuǎn)端信譽(yù)值計(jì)數(shù)器的 值減1。
步驟40、下游通信端口的接收模塊接收數(shù)據(jù)包,并將所接收的數(shù)據(jù)包 傳送到對(duì)應(yīng)虛通道的接收緩沖區(qū)中。
步驟50、下游通信端口的接收模塊每接收一個(gè)信譽(yù)塊的數(shù)據(jù)量,就通 知本通信端口中的流控模塊將本地信譽(yù)值計(jì)數(shù)器中的值減1。
步驟60、對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的長度進(jìn)行預(yù)測。 在前述說明中,已對(duì)本步驟中所要完成的工作進(jìn)行了詳細(xì)說明,此處不再 做重復(fù)性描述。
步驟70、根據(jù)步驟60的包長預(yù)測結(jié)果,下游通信端口的流控模塊決 定是否需要通過發(fā)送模塊向上游通信端口的接收模塊發(fā)送包含有新信譽(yù) 值的流控包,如果需要,則執(zhí)行下一步,否則,轉(zhuǎn)到步驟20。
步驟80、下游通信端口的流控模塊將虛通道接收緩沖區(qū)的空閑空間的 信譽(yù)值作為新的信譽(yù)值,然后用新的信譽(yù)值更新本地信譽(yù)值計(jì)數(shù)器的值。
步驟90、下游通信端口的發(fā)送模塊將包含有新的信譽(yù)值的流控包發(fā)送 到上游通信端口的接收模塊,通知上游通信端口的流控模塊根據(jù)新的信譽(yù) 值更新遠(yuǎn)端信譽(yù)值計(jì)數(shù)器的值后,執(zhí)行步驟20。上述步驟80和步驟90中 所要完成的操作屬于成熟的現(xiàn)有技術(shù),在此不再做重復(fù)性說明。
權(quán)利要求
1、一種信譽(yù)流量控制方法,包括以下步驟步驟1)、上游通信端口在發(fā)送數(shù)據(jù)包前,比較所要發(fā)送數(shù)據(jù)包的大小與所述遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值,當(dāng)所要發(fā)送數(shù)據(jù)包的大小小于遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值時(shí),發(fā)送所述數(shù)據(jù)包,并執(zhí)行下一步,否則,不發(fā)送所述數(shù)據(jù)包;步驟2)、根據(jù)所發(fā)送數(shù)據(jù)包的大小,減少所述遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值;步驟3)、下游通信端口接收數(shù)據(jù)包,并根據(jù)所述數(shù)據(jù)包的大小減少所述本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值;步驟4)、下游通信端口對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的長度進(jìn)行預(yù)測;步驟5)、根據(jù)步驟4)所得到的數(shù)據(jù)包長度預(yù)測結(jié)果,下游通信端口的本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值,以及下游通信端口接收緩沖區(qū)空閑空間的大小,決定是否需要向上游通信端口發(fā)送包含有新信譽(yù)值的流控包。
2、 根據(jù)權(quán)利要求1所述的信譽(yù)流量控制方法,其特征在于,所述信 譽(yù)值為表示信譽(yù)塊大小的值。
3、 根據(jù)權(quán)利要求1所述的信譽(yù)流量控制方法,其特征在于,在所述 的步驟4)中,所述的對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的長度進(jìn) 行預(yù)測是指將臨近時(shí)間段內(nèi),從所接收到的數(shù)據(jù)包中選擇數(shù)量最多的數(shù)據(jù)包長度 類型,并將該類型數(shù)據(jù)包的長度作為所預(yù)測的下 一 個(gè)數(shù)據(jù)包的長度。
4、 根據(jù)權(quán)利要求3所述的信譽(yù)流量控制方法,其特征在于,所述的 對(duì)上游通信端口所要發(fā)送的下一個(gè)數(shù)據(jù)包的長度進(jìn)行預(yù)測包括首先,根據(jù)最大傳輸單元的大小限制,對(duì)數(shù)據(jù)包長度進(jìn)行分類;所述 最大傳輸單元為網(wǎng)絡(luò)上能夠傳送的最大長度的數(shù)據(jù)包;然后,為每種數(shù)據(jù)包長度類型設(shè)置相應(yīng)的計(jì)數(shù)器;接著,在接收數(shù)據(jù)包的過程中,根據(jù)所接收數(shù)據(jù)包的長度在相應(yīng)的數(shù) 據(jù)包長度類型中,為所對(duì)應(yīng)的計(jì)數(shù)器增值;最后,在預(yù)測下一個(gè)數(shù)據(jù)包的長度時(shí),從所有的計(jì)數(shù)器中選擇值最大 的計(jì)數(shù)器,根據(jù)該計(jì)數(shù)器得到對(duì)應(yīng)的數(shù)據(jù)包長度類型,將該類型數(shù)據(jù)包的 長度作為所預(yù)測的下 一 個(gè)數(shù)據(jù)包的長度。
5、 根據(jù)權(quán)利要求1所述的信譽(yù)流量控制方法,其特征在于,在所述 的步驟5)中,在判斷是否需要向上游通信端口發(fā)送包含有新信譽(yù)值的流 控包時(shí),將所述下游通信端口的本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值與所述數(shù)據(jù) 包長度預(yù)測結(jié)果進(jìn)行比較,并將所述下游通信端口接收緩沖區(qū)空閑空間的 大小與所述數(shù)據(jù)包長度預(yù)測結(jié)果進(jìn)行比較,根據(jù)上述兩個(gè)比較結(jié)果,決定 是否發(fā)送流控包。
6、 根據(jù)權(quán)利要求5所述的信譽(yù)流量控制方法,其特征在于,在判斷 是否需要向上游通信端口發(fā)送包含有新信譽(yù)值的流控包時(shí),只有同時(shí)滿足 兩個(gè)判斷條件才能發(fā)送流控包,所述兩個(gè)判斷條件是指RemainCreditdw < creditof(PrePktLen) + creditof(RTT x BW)--條件1FreeCreditdw >= creditof(PrePktLen) + creditof(RTT x BW)--條件2其中,RemainCreditdw表示下游通信端口中的剩余信譽(yù)值,即下游通 信端口中本地信譽(yù)值計(jì)數(shù)器的值;FreeCreditdw表示下游通信端口接收緩沖區(qū)的空閑空間的信譽(yù)值; PrePktLen表示數(shù)據(jù)包長度預(yù)測結(jié)果;RTT表示物理鏈路回環(huán)時(shí)間,BW表示物理鏈路的帶寬,RTTxBW 表示在物理鏈路回環(huán)時(shí)間內(nèi)物理鏈路上傳輸?shù)臄?shù)據(jù)包大??; creditof()表示按信譽(yù)塊大小所進(jìn)行的規(guī)整化操作。
全文摘要
本發(fā)明公開了一種信譽(yù)流量控制方法,包括當(dāng)所要發(fā)送數(shù)據(jù)包的大小小于遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值時(shí),發(fā)送所述數(shù)據(jù)包,并執(zhí)行下一步,否則,不發(fā)送所述數(shù)據(jù)包;根據(jù)所發(fā)送數(shù)據(jù)包的大小,減少遠(yuǎn)端信譽(yù)值計(jì)數(shù)器中的信譽(yù)值;接收數(shù)據(jù)包,并減少所述本地信譽(yù)值計(jì)數(shù)器中的信譽(yù)值;對(duì)下一個(gè)數(shù)據(jù)包的長度進(jìn)行預(yù)測;根據(jù)預(yù)測結(jié)果,信譽(yù)值,以及接收緩沖區(qū)空閑空間的大小,決定是否需要發(fā)送包含有新信譽(yù)值的流控包。本發(fā)明不會(huì)盲目發(fā)送流控信息,只會(huì)根據(jù)當(dāng)前數(shù)據(jù)流情況,自適應(yīng)的在鏈路恰好需要流控信息時(shí)發(fā)送有效流控包,以保證數(shù)據(jù)流不斷流,從而提高物理鏈路和緩沖區(qū)資源利用率。
文檔編號(hào)H04L12/56GK101115053SQ20071012075
公開日2008年1月30日 申請(qǐng)日期2007年8月24日 優(yōu)先權(quán)日2007年8月24日
發(fā)明者劉新春, 安學(xué)軍, 政 曹, 王達(dá)偉 申請(qǐng)人:中國科學(xué)院計(jì)算技術(shù)研究所