專利名稱:一種數(shù)據(jù)流量控制方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種數(shù)據(jù)流量控制方法和系統(tǒng)。
背景技術(shù):
SDH (Synchronous Digital Hierarchy,同步數(shù)字體系)是一種將復(fù)接、 線路傳輸及交換功能融為一體,并由統(tǒng)一網(wǎng)管系統(tǒng)操作的綜合信息傳送網(wǎng)絡(luò)。 SDH有155M, 622M, 2.5G, IOG等多種速率。POS (PACKET OVER SDH, SDH上的包傳輸)是一種在SDH上傳輸數(shù)據(jù)包的技術(shù)。它對對IP數(shù)據(jù)包進行封 裝,并映射到SDH/SONET幀上。
CPOS (Channelized POS,通道化的POS)對POS鏈路進行通道劃分,例 如一個155M鏈路最多支持63個2M速率的E1鏈路。CPOS充分利用了SDH機制 的特點,提供對帶寬精細劃分的能力,CPOS減少了組網(wǎng)中對路由器低速物理 接口的數(shù)量要求,增強了路由器的低速接口匯聚能力,并提高了路由器的專 線接入能力。
CPOS卡是提供CPOS接口的線卡,圖1為一種典型的155M CPOS卡。如 圖1所示,CPOS卡由CPOS芯片IO、 CPU20和存儲器30組成。CPOS芯片10實 現(xiàn)155M外部線路和CPOS芯片10中63個通道的數(shù)據(jù)轉(zhuǎn)換。CPOS芯片10和CPU 20之間通過數(shù)據(jù)總線連接,以數(shù)據(jù)包為單位傳輸數(shù)據(jù)。數(shù)據(jù)總線的速率和CPOS 卡的線路速率匹配,如155M的CPOS卡使用的數(shù)據(jù)總線速率為155M以上。
圖2為CPOS芯片10接收部分的邏輯框圖。如圖2所示,CPOS芯片10包括 數(shù)據(jù)處理單元201、多個接收緩存202以及數(shù)據(jù)總線接口單元203。 CPOS卡接 收數(shù)據(jù)時,外部線路將CPOS數(shù)據(jù)發(fā)送給CPOS芯片10; CPOS芯片10在內(nèi)部對 每個通道有一個獨立的接收緩存202, CPOS芯片10將從線路上接收的數(shù)據(jù)拆 分出63個E1通道的數(shù)據(jù),存儲到CPOS芯片內(nèi)部相應(yīng)通道的緩存中;如果某個通道的緩存中的數(shù)據(jù)達到了一個完整包(包的大小由系統(tǒng)定義,通常為64-1518字節(jié),也可以更小或更大),就通過數(shù)據(jù)總線提供給CPU20; CPU20將數(shù)據(jù)包存儲在存儲器30中,并根據(jù)需要進行處理。
圖3為CPOS芯片10發(fā)送部分的邏輯框圖。如圖3所示,CPOS芯片10包括數(shù)據(jù)處理單元201、多個發(fā)送緩存302以及數(shù)據(jù)總線接口單元203。 CPOS卡發(fā)送數(shù)據(jù)時,CPU20將在存儲器30中對應(yīng)于某個通道的數(shù)據(jù)包通過數(shù)據(jù)總線發(fā)送給CPOS芯片10; CPOS芯片10在內(nèi)部對每個通道有一個獨立的發(fā)送緩存302,CPOS芯片10將CPU20送過來的數(shù)據(jù)包存儲在相應(yīng)的發(fā)送緩存302中;CPOS芯片10將各個通道數(shù)據(jù)組合成CPOS數(shù)據(jù)發(fā)送到155M外部線路上。如果只有一個通道的數(shù)據(jù),在CPOS上發(fā)送時,其他通道填充空閑數(shù)據(jù)。
在數(shù)據(jù)接收方向,由于CPU20的存儲器30容量較大,并且CPU20處理能力強,總的接收數(shù)據(jù)速率有63X2-126M,可以保證從CPOS芯片10發(fā)送給CPU20的數(shù)據(jù)都能被處理,不會出現(xiàn)丟幀情況。但是在發(fā)送方向,由于每個E1通道的速率只有2M, CPU20通過數(shù)據(jù)總線發(fā)送數(shù)據(jù)包的速率遠遠高于每個線路的速率,需要有流量控制機制才能保證不丟包。
流量控制的基本原理為設(shè)備A向設(shè)備B發(fā)送數(shù)據(jù)時,如果設(shè)備A發(fā)送的速率大于設(shè)備B能夠處理的能力,設(shè)備B內(nèi)部的緩存將會溢出,導(dǎo)致數(shù)據(jù)丟失。為了使設(shè)備B不出現(xiàn)數(shù)據(jù)丟失,通常當設(shè)備B的緩存占用達到一定程度,例如整個緩存的3/4時,由設(shè)備B向設(shè)備A發(fā)出流控指令,這時設(shè)備A停止發(fā)送。當設(shè)備B的緩存占用下降到一定程度,例如整個緩存的l/4時,設(shè)備B向設(shè)備A發(fā)出允許發(fā)送指令,設(shè)備A重新向設(shè)備B發(fā)送數(shù)據(jù)。
如果直接在數(shù)據(jù)總線上采用流控而不對每個通道進行區(qū)分,就會出現(xiàn)一個通道流控、所有通道堵塞的情況,因此必須對每個通道單獨進行流控。申請?zhí)枮?00710120756.X,名稱為"一種信譽流量控制方法"的中國專利申請中提到了一種信譽流量控制方法,該方法通過在數(shù)據(jù)總線上發(fā)送流控包進行流控,步驟如下步驟l、初始化在發(fā)送端CPU20中為CPOS芯片10的每個通道分別建立"遠端信譽計數(shù)器"(遠端是相對CPOS芯片而言,CPU是遠端,CPOS芯片是本地);在接收端CPOS芯片中建立"本地信譽計數(shù)器"。兩個計數(shù)器的初始值相等,都等于CPOS芯片對應(yīng)通道緩存的空閑字節(jié)數(shù),運行過程中會不同。
步驟2、 CPU在發(fā)送數(shù)據(jù)包前比較發(fā)送的數(shù)據(jù)包大小和相應(yīng)通道中"遠端信譽計數(shù)器"的信譽值,只有數(shù)據(jù)包的大小小于該計數(shù)器中的信譽值時才發(fā)送數(shù)據(jù)包,并執(zhí)行步驟3。
步驟3、 CPU根據(jù)發(fā)送數(shù)據(jù)包的大小減少相應(yīng)通道的"遠端信譽計數(shù)器"的值。
步驟4、 CPOS芯片接收數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包的大小減少"本地信譽計數(shù)器"的值。
步驟5、 CPOS芯片的每個接收端口對CPU所要發(fā)送的下一個數(shù)據(jù)包的大小進行預(yù)測,根據(jù)預(yù)測結(jié)果、"本地信譽計數(shù)器"的值以及接收緩存空閑空間的大小這幾個因素,決定是否向CPU發(fā)送含有新信譽值的流控包。該判斷條件包括CPOS芯片接收端相應(yīng)通道的緩存空閑空間大于預(yù)測包的長度,并且"本地信譽計數(shù)器"的值小于預(yù)測包的長度。新信譽值根據(jù)接收緩存的空閑空間決定。
步驟6、 CPU的發(fā)送端口如果接收到流控包,更新"遠端信譽計數(shù)器"中的值,并根據(jù)新的信譽值進行數(shù)據(jù)包發(fā)送。
發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn)上述流控方式有如下缺點
A、 流控包通過數(shù)據(jù)總線發(fā)送,占用了有效的數(shù)據(jù)帶寬。
B、 信譽值計數(shù)器以字節(jié)為單位,增加了計算量。
C、 在特定條件下,可能出現(xiàn)發(fā)送停止的情況。流控包的判斷條件中,需要對發(fā)送端口的數(shù)據(jù)包的大小進行預(yù)測,該預(yù)測根據(jù)歷史接收的數(shù)據(jù)包的大小進行。如果在初始通訊中的數(shù)據(jù)包都是短包,后續(xù)是長包。在短包和長包交界處可能出現(xiàn)接收端判斷本地信譽計數(shù)器的值大于預(yù)測包的長度,不用發(fā)送流控包。同時發(fā)送端的遠端信譽值計數(shù)器小于實際包的長度,無法發(fā)送數(shù)據(jù)。這種情況下,就會導(dǎo)致發(fā)送端停止發(fā)送,無法工作。
D、可能出現(xiàn)流控失效,導(dǎo)致數(shù)據(jù)丟失。例如發(fā)送端發(fā)送了一個長度為l的包,還沒有到接收端。這時接收端的空閑空間為l,接收端將H乍為新信譽值發(fā)給發(fā)送端。發(fā)送端根據(jù)這個l的新信譽值,又發(fā)送了一個長度為l的包。這樣,發(fā)送端總共發(fā)送了2個長度為1的包,而實際上接收端只有l(wèi)的空閑空間,從而出現(xiàn)數(shù)據(jù)丟失。
發(fā)明內(nèi)容
本發(fā)明的目的是克服現(xiàn)有流量控制方法中存在占有數(shù)據(jù)帶寬、停止接收以及流控失效等缺陷,提供一種可靠的流量控制方法與系統(tǒng)。
為實現(xiàn)以上目的,本發(fā)明實施例提供一種數(shù)據(jù)流量控制方法,所述方法包括數(shù)據(jù)接收端為每個數(shù)據(jù)通道建立本地信譽值計數(shù)器,數(shù)據(jù)發(fā)送端為所述數(shù)據(jù)接收端的每個數(shù)據(jù)通道建立遠端信譽值計數(shù)器;當數(shù)據(jù)發(fā)送端需要向數(shù)據(jù)接收端的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時,所述數(shù)據(jù)發(fā)送端讀取所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值,將讀取的本地信譽值計數(shù)器的值和所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值相加得到目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的新值,用所述新值更新所述遠端信譽值計數(shù)器,并將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器清零;所述數(shù)據(jù)發(fā)送端根據(jù)所述遠端信譽值計數(shù)器的新值向所述目標數(shù)據(jù)通道發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值;所述數(shù)據(jù)接收端將接收的數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值;對于每個數(shù)據(jù)通道滿足本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值^該通道的緩存容量;并且,本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+緩存中的數(shù)據(jù)量+數(shù)據(jù)總線上的數(shù)據(jù)量《該通道的緩存容量。
為實現(xiàn)以上目的,本發(fā)明實施例還提供一種數(shù)據(jù)流量控制系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)接收裝置和數(shù)據(jù)發(fā)送裝置,所述數(shù)據(jù)接收裝置包括為所述數(shù) 據(jù)接收裝置的每個數(shù)據(jù)通道建立的本地信譽值計數(shù)器;所述數(shù)據(jù)發(fā)送裝置包 括為所述數(shù)據(jù)接收裝置的每個數(shù)據(jù)通道建立的遠端信譽值計數(shù)器;所述數(shù) 據(jù)發(fā)送裝置還包括信譽值更新單元,用于當數(shù)據(jù)發(fā)送裝置需要向數(shù)據(jù)接收 裝置的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時,讀取所述目標數(shù)據(jù)通道的本地信譽值計數(shù) 器的值,將讀取的本地信譽值計數(shù)器的值和所述目標數(shù)據(jù)通道的遠端信譽值 計數(shù)器的值相加得到目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的新值,用所述新值 更新所述遠端信譽值計數(shù)器,并將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器清 零;數(shù)據(jù)發(fā)送處理單元,用于根據(jù)所述遠端信譽值計數(shù)器的新值向所述數(shù)據(jù) 接收裝置發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少所述目標數(shù)據(jù)通道的遠端信譽 值計數(shù)器的值;所述數(shù)據(jù)接收裝置還包括數(shù)據(jù)接收處理單元,用于將接收 的數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量 來增加所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值;對于每個數(shù)據(jù)通道滿足 本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值^該通道的緩存容 量;并且,本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+緩存中的數(shù)據(jù)量+ 數(shù)據(jù)總線上的數(shù)據(jù)量《該通道的緩存容量。
采用本發(fā)明實施例的流控機制,數(shù)據(jù)發(fā)送裝置上遠端信譽計數(shù)器的值加 上數(shù)據(jù)總線上的包個數(shù),永遠小于或等于CPOS芯片上緩存空閑空間的包個 數(shù),不會出現(xiàn)由于流控失效導(dǎo)致數(shù)據(jù)丟失的現(xiàn)象。
圖1為現(xiàn)有技術(shù)一種典型的155M CPOS卡的原理圖2為現(xiàn)有技術(shù)CPOS芯片10接收部分的邏輯框圖3為現(xiàn)有技術(shù)CPOS芯片10發(fā)送部分的邏輯框圖4為本發(fā)明實施例的數(shù)據(jù)流量控制系統(tǒng)原理圖; 圖5為本發(fā)明實施例數(shù)據(jù)流量控制方法的一種整體流程圖6為本發(fā)明實施例數(shù)據(jù)流量控制方法的一種詳細流程圖。
具體實施例方式
以下結(jié)合附圖對本發(fā)明具體實施方式
進行詳細說明。
圖4為本發(fā)明實施例的數(shù)據(jù)流量控制系統(tǒng)原理圖。如圖1所示,該系統(tǒng)包 括數(shù)據(jù)接收裝置40和數(shù)據(jù)發(fā)送裝置50。數(shù)據(jù)接收裝置40包括為所述數(shù)據(jù)
接收裝置40的每個數(shù)據(jù)通道建立的本地信譽值計數(shù)器401;數(shù)據(jù)發(fā)送裝置50包 括為所述數(shù)據(jù)接收裝置40的每個數(shù)據(jù)通道建立的遠端信譽值計數(shù)器501 。
數(shù)據(jù)發(fā)送裝置50還包括信譽值更新單元502,用于當數(shù)據(jù)發(fā)送裝置50需 要向數(shù)據(jù)接收裝置40的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時,讀取所述目標數(shù)據(jù)通道的 本地信譽值計數(shù)器401的值,將讀取的本地信譽值計數(shù)器401的值和所述目標 數(shù)據(jù)通道的遠端信譽值計數(shù)器501的值相加得到目標數(shù)據(jù)通道的遠端信譽值 計數(shù)器的新值,用所述新值更新所述遠端信譽值計數(shù)器501,并將所述目標數(shù) 據(jù)通道的本地信譽值計數(shù)器401清零;數(shù)據(jù)發(fā)送處理單元503,用于根據(jù)所述 遠端信譽值計數(shù)器501的新值向所述數(shù)據(jù)接收裝置40發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù) 據(jù)量來減少所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器401的值。
數(shù)據(jù)接收裝置40還包括數(shù)據(jù)通道緩存402,用于存儲數(shù)據(jù)發(fā)送裝置50發(fā) 送給相應(yīng)通道的數(shù)據(jù);數(shù)據(jù)接收處理單元403,用于將接收的數(shù)據(jù)存儲于目標 數(shù)據(jù)通道的緩存402中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加所述目標 數(shù)據(jù)通道的本地信譽值計數(shù)器401的值。
本發(fā)明實施例的數(shù)據(jù)流量控制系統(tǒng),對應(yīng)于數(shù)據(jù)接收裝置的每個數(shù)據(jù)通 道,滿足以下條件本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值 《該通道的緩存容量;并且,本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+ 緩存中的數(shù)據(jù)量+數(shù)據(jù)總線上的數(shù)據(jù)量《該通道的緩存容量。
如圖4所示,可選地,本實施例的數(shù)據(jù)發(fā)送裝置50和數(shù)據(jù)接收裝置40之間 通過數(shù)據(jù)總線以及局部總線連接。信譽值更新單元502,用于通過局部總線來 讀取所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器401的值;數(shù)據(jù)發(fā)送處理單元503, 用于通過數(shù)據(jù)總線向數(shù)據(jù)接收裝置40發(fā)送數(shù)據(jù)包??蛇x地,本實施例的數(shù)據(jù)以數(shù)據(jù)包的形式傳輸,所述數(shù)據(jù)量為數(shù)據(jù)包的 個數(shù),所述通道的緩存容量為通道所允許容納的數(shù)據(jù)包個數(shù)。本實施例的信
譽值計數(shù)器以包為單位,不再以字節(jié)為單位,這樣可以減少CPU端的計算量。 因為數(shù)據(jù)發(fā)送都是以包為單位,原來CPU每發(fā)送一個包,需要統(tǒng)計這個包的
字節(jié)數(shù),然后和信譽計數(shù)器的值比較,才能決定是否發(fā)送,現(xiàn)在的信譽計數(shù) 器以包為單位,可以省略這個過程。本實施例根據(jù)數(shù)據(jù)接收裝置的緩存容量 所對應(yīng)的數(shù)據(jù)包個數(shù)來確定本地信譽值計數(shù)器以及遠端信譽值計數(shù)器的初始 值,后續(xù)發(fā)送/接收數(shù)據(jù)時,信譽值的加減也以包為單位。
可選地,數(shù)據(jù)發(fā)送處理單元503,用于當目標數(shù)據(jù)通道的遠端信譽值計數(shù) 器501的值大于零時,向數(shù)據(jù)接收裝置40發(fā)送數(shù)據(jù)包,每發(fā)送一個數(shù)據(jù)包則將 所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器501的值減一;當目標數(shù)據(jù)通道的遠端 信譽值計數(shù)器501的值等于零時,停止向數(shù)據(jù)接收裝置40發(fā)送數(shù)據(jù)包。
可選地,數(shù)據(jù)接收處理單元202,用于當目標數(shù)據(jù)通道的緩存402中存在 數(shù)據(jù)包時,將所述數(shù)據(jù)包發(fā)送給外部線路,每發(fā)送一個數(shù)據(jù)包則將所述目標 數(shù)據(jù)通道的本地信譽值計數(shù)器401的值加一。
在實際的產(chǎn)品中,本發(fā)明實施例的系統(tǒng)可以為CPOS卡,數(shù)據(jù)發(fā)送裝置為 CPOS卡中的CPU、數(shù)據(jù)接收裝置為CPOS卡中的CPOS芯片,CPOS卡的原理 圖可以參見圖l。本實施例在CPOS卡的CPU20和CPOS芯片10之間增加Local bus (局部總線,為CPU用于操作低速設(shè)備的總線)連接,CPU20通3lLocal bus 接口讀取CPOS芯片10上每個通道的信譽值,信譽值不再通過數(shù)據(jù)總線的流控 包傳輸;數(shù)據(jù)總線只傳輸數(shù)據(jù)包無需傳送流控包,該系統(tǒng)的架構(gòu)能夠較少對 數(shù)據(jù)總線帶寬的占用。
圖5為本發(fā)明實施例數(shù)據(jù)流量控制方法的一種整體流程圖。如圖5所示
步驟S501、數(shù)據(jù)接收端為每個數(shù)據(jù)通道建立本地信譽值計數(shù)器,數(shù)據(jù)發(fā) 送端為所述數(shù)據(jù)接收端的每個數(shù)據(jù)通道建立遠端信譽值計數(shù)器。
本實施例中,對于每個數(shù)據(jù)通道滿足本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值^該通道的緩存容量,本實施例中的緩存容量可以定義 為緩存所允許容納的數(shù)據(jù)包個數(shù)。如,可以將本地信譽值計數(shù)器的初始值設(shè) 置為該通道的緩存所允許容納的數(shù)據(jù)包個數(shù),將遠端信譽值計數(shù)器的初始值
設(shè)置為零。
可選地,本實施例根據(jù)系統(tǒng)約定的最大包長度以及緩存自身存儲空間的 大小得到緩存允許容納的最大包個數(shù),將最大包個數(shù)作為緩存所允許容納的
數(shù)據(jù)包個數(shù)。如,最大包長度為IO,緩存大小為IOO,則緩存能夠容納的最大 包個數(shù)(即數(shù)據(jù)包個數(shù))為IO。
步驟S502、當數(shù)據(jù)發(fā)送端需要向數(shù)據(jù)接收端的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時, 所述數(shù)據(jù)發(fā)送端讀取所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值,將讀取的 本地信譽值計數(shù)器的值和所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值相加得 到目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的新值,用所述新值更新所述遠端信譽 值計數(shù)器,并將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器清零。
可選地,數(shù)據(jù)發(fā)送端通過局部總線來讀取所述目標數(shù)據(jù)通道的本地信譽 值計數(shù)器的值,數(shù)據(jù)發(fā)送端通過數(shù)據(jù)總線向所述數(shù)據(jù)接收端發(fā)送數(shù)據(jù)。
步驟S503、所述數(shù)據(jù)發(fā)送端根據(jù)所述遠端信譽值計數(shù)器的新值向所述目 標數(shù)據(jù)通道發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少所述目標數(shù)據(jù)通道的遠端信 譽值計數(shù)器的值。
可選地,本實施例的數(shù)據(jù)量為數(shù)據(jù)包的個數(shù)。此時,數(shù)據(jù)發(fā)送端根據(jù)發(fā) 送數(shù)據(jù)包的個數(shù)來減少所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值。
步驟S504、所述數(shù)據(jù)接收端將接收的數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中 并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加所述目標數(shù)據(jù)通道的本地信譽 值計數(shù)器的值。
可選地,本實施例的數(shù)據(jù)量為數(shù)據(jù)包的個數(shù)。此時,數(shù)據(jù)接收端根據(jù)發(fā) 送數(shù)據(jù)包的個數(shù)來增加所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值。
本實施例中,對于每個數(shù)據(jù)通道滿足本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+緩存中的數(shù)據(jù)量+數(shù)據(jù)總線上的數(shù)據(jù)量^緩存容量??蛇x地,本
實施例的數(shù)據(jù)以數(shù)據(jù)包的形式傳輸,所述數(shù)據(jù)量為數(shù)據(jù)包的個數(shù),所述通道 的緩存容量為通道所允許容納的數(shù)據(jù)包個數(shù)。
可選地,步驟S503可以進一步細化為當目標數(shù)據(jù)通道的遠端信譽值計
數(shù)器的值大于零時,所述數(shù)據(jù)發(fā)送端向所述數(shù)據(jù)接收端發(fā)送數(shù)據(jù)包,每發(fā)送
一個數(shù)據(jù)包則將所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值減一;當目標數(shù) 據(jù)通道的遠端信譽值計數(shù)器的值等于零時,所述數(shù)據(jù)發(fā)送端停止向所述數(shù)據(jù) 接收端發(fā)送數(shù)據(jù)包。
可選地,步驟S504可以進一步細化為當目標數(shù)據(jù)通道的緩存中存在數(shù) 據(jù)包時,將所述數(shù)據(jù)包發(fā)送給外部線路,每發(fā)送一個數(shù)據(jù)包則將所述目標數(shù) 據(jù)通道的本地信譽值計數(shù)器的值加一。
圖6為本發(fā)明實施例數(shù)據(jù)流量控制方法的一種詳細流程圖。該圖以CPOS 卡為例詳細說明本實施例的一種實際的流控過程。如圖6所示
步驟S601、初始化步驟在CPOS芯片中對應(yīng)于每個通道建立"本地信譽 計數(shù)器",在CPU中對應(yīng)于CPOS芯片的每個通道建立"遠端信譽計數(shù)器"。 對于每個數(shù)據(jù)通道,本實施例中將"本地信譽值計數(shù)器"的初始值設(shè)為該通 道緩存所允許容納的數(shù)據(jù)包個數(shù),將"遠端信譽計數(shù)器"的初始值設(shè)為O。
作為一般情況,只要滿足"本地計數(shù)器初始值+遠端計數(shù)器初始值^接收 緩存所允許容納的包個數(shù)"的初值設(shè)定都在本發(fā)明權(quán)利要求的保護范圍內(nèi)。
步驟S602、 CPU在發(fā)送數(shù)據(jù)包前,通過Local bus讀取CPOS芯片相應(yīng)通道 的"本地信譽計數(shù)器"的值。CPOS芯片的本地信譽計數(shù)器被讀取以后,變?yōu)?0。 CPU將讀到的值加"遠端信譽計數(shù)器"的值,更新到"遠端信譽計數(shù)器"。
步驟S603、 CPU根據(jù)更新后的遠端信譽計數(shù)器的值確定能夠發(fā)送數(shù)據(jù)的 最大包個數(shù)。如果遠端信譽值計數(shù)器為O,則不能發(fā)送數(shù)據(jù),返回步驟S602; 如果遠端信譽值計數(shù)器大于O,則進入步驟S604。
步驟S604、 CPU向CPOS芯片發(fā)送數(shù)據(jù)包,在發(fā)送數(shù)據(jù)包后,CPU將"遠端信譽計數(shù)器"的值減去發(fā)送的包個數(shù)。
步驟S605、 CPOS芯片接收數(shù)據(jù)到相應(yīng)通道的緩存;
步驟S606、判斷緩存中是否有完整數(shù)據(jù)包,如果有則進入步驟S607,否 則返回步驟S605;
步驟S607、將緩存中的數(shù)據(jù)包通過155M線路發(fā)送出去。每發(fā)送一個包, CPOS芯片的本地信譽計數(shù)器加l。這樣做是為了保持本地信譽值計數(shù)器的 值+遠端信譽值計數(shù)器的值+緩存的數(shù)據(jù)包個數(shù)+數(shù)據(jù)總線上的數(shù)據(jù)包個數(shù)^該 通道的緩存所允許容納的數(shù)據(jù)包個數(shù)。
采用本發(fā)明實施例的流控機制,CPU上"遠端信譽計數(shù)器"的值加上數(shù) 據(jù)總線上的包個數(shù),永遠小于或等于CPOS芯片上緩存空閑空間的包個數(shù)。不 會出現(xiàn)流控失效,導(dǎo)致數(shù)據(jù)丟失的現(xiàn)象。本發(fā)明實施例的流量控制方法,保 證CPU和CPOS芯片之間能夠穩(wěn)定,可靠地傳輸數(shù)據(jù),不會出現(xiàn)因為一個通道 的流控堵塞其他通道,或者數(shù)據(jù)丟失,無法發(fā)送等現(xiàn)象。
以上所揭露的僅為本發(fā)明的實施例而已,不能以此來限定本發(fā)明的權(quán)利 范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1、一種數(shù)據(jù)流量控制方法,其特征在于,所述方法包括數(shù)據(jù)接收端為每個數(shù)據(jù)通道建立本地信譽值計數(shù)器,數(shù)據(jù)發(fā)送端為所述數(shù)據(jù)接收端的每個數(shù)據(jù)通道建立遠端信譽值計數(shù)器;當數(shù)據(jù)發(fā)送端需要向數(shù)據(jù)接收端的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時,所述數(shù)據(jù)發(fā)送端讀取所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值,將讀取的本地信譽值計數(shù)器的值和所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值相加得到目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的新值,用所述新值更新所述遠端信譽值計數(shù)器,并將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器清零;所述數(shù)據(jù)發(fā)送端根據(jù)所述遠端信譽值計數(shù)器的新值向所述目標數(shù)據(jù)通道發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值;所述數(shù)據(jù)接收端將接收的數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值;對于每個數(shù)據(jù)通道滿足本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值≤該通道的緩存容量;并且,本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+緩存中的數(shù)據(jù)量+數(shù)據(jù)總線上的數(shù)據(jù)量≤該通道的緩存容量。
2、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述數(shù)據(jù)以數(shù)據(jù)包的形式 傳輸,所述數(shù)據(jù)量為數(shù)據(jù)包的個數(shù),所述通道的緩存容量為通道所允許容納 的數(shù)據(jù)包個數(shù)。
3、 根據(jù)權(quán)利要求l所述的方法,其特征在于,所述數(shù)據(jù)發(fā)送端通過局部總線來讀取所述目標數(shù)據(jù)通道的本地信譽值計 數(shù)器的值;所述數(shù)據(jù)發(fā)送端通過數(shù)據(jù)總線向所述數(shù)據(jù)接收端發(fā)送數(shù)據(jù)。
4、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)發(fā)送端根據(jù)所述 遠端信譽值計數(shù)器的新值向所述目標數(shù)據(jù)通道發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量 來減少所述目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值;包括當目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值大于零時,所述數(shù)據(jù)發(fā)送端向 所述數(shù)據(jù)接收端發(fā)送數(shù)據(jù)包,每發(fā)送一個數(shù)據(jù)包則將所述目標數(shù)據(jù)通道的遠 端信譽值計數(shù)器的值減一;當目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值等于零時,所述數(shù)據(jù)發(fā)送端停 止向所述數(shù)據(jù)接收端發(fā)送數(shù)據(jù)包。
5、 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述數(shù)據(jù)接收端將接收的 數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來 增加所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值;包括當目標數(shù)據(jù)通道的緩存中存在數(shù)據(jù)包時,將所述數(shù)據(jù)包發(fā)送給外部線路, 每發(fā)送一個數(shù)據(jù)包則將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值加一。
6、 一種數(shù)據(jù)流量控制系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)接收裝置 和數(shù)據(jù)發(fā)送裝置,所述數(shù)據(jù)接收裝置包括為所述數(shù)據(jù)接收裝置的每個數(shù)據(jù) 通道建立的本地信譽值計數(shù)器;所述數(shù)據(jù)發(fā)送裝置包括為所述數(shù)據(jù)接收裝 置的每個數(shù)據(jù)通道建立的遠端信譽值計數(shù)器;所述數(shù)據(jù)發(fā)送裝置還包括信譽值更新單元,用于當數(shù)據(jù)發(fā)送裝置需要向數(shù)據(jù)接收裝置的目標數(shù)據(jù)通道發(fā)送數(shù)據(jù)時,讀取所述目標數(shù)據(jù)通道的本地 信譽值計數(shù)器的值,將讀取的本地信譽值計數(shù)器的值和所述目標數(shù)據(jù)通道的 遠端信譽值計數(shù)器的值相加得到目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的新值, 用所述新值更新所述遠端信譽值計數(shù)器,并將所述目標數(shù)據(jù)通道的本地信譽值計數(shù)器清零;數(shù)據(jù)發(fā)送處理單元,用于根據(jù)所述遠端信譽值計數(shù)器的新值 向所述數(shù)據(jù)接收裝置發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少所述目標數(shù)據(jù)通道 的遠端信譽值計數(shù)器的值;所述數(shù)據(jù)接收裝置還包括數(shù)據(jù)接收處理單元,用于將接收的數(shù)據(jù)存儲于目標數(shù)據(jù)通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加所述 目標數(shù)據(jù)通道的本地信譽值計數(shù)器的值; 對于每個數(shù)據(jù)通道滿足本地信譽值計數(shù)器的初始值+遠端信譽值計數(shù)器的初始值^該通道的緩存 容量;并且,本地信譽值計數(shù)器的值+遠端信譽值計數(shù)器的值+緩存中的數(shù)據(jù)量+數(shù)據(jù) 總線上的數(shù)據(jù)量s該通道的緩存容量。
7、 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)以數(shù)據(jù)包的形式 傳輸,所述數(shù)據(jù)量為數(shù)據(jù)包的個數(shù),所述通道的緩存容量為通道所允許容納 的數(shù)據(jù)包個數(shù)。
8、 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述信譽值更新單元,用于通過局部總線來讀取所述目標數(shù)據(jù)通道的本 地信譽值計數(shù)器的值;所述數(shù)據(jù)發(fā)送處理單元,用于通過數(shù)據(jù)總線向所述數(shù)據(jù)接收裝置發(fā)送數(shù)據(jù)。
9、 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述數(shù)據(jù)發(fā)送處理單元,用于當目標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值 大于零時,向所述數(shù)據(jù)接收裝置發(fā)送數(shù)據(jù)包,每發(fā)送一個數(shù)據(jù)包則將所述目 標數(shù)據(jù)通道的遠端信譽值計數(shù)器的值減一;當目標數(shù)據(jù)通道的遠端信譽值計 數(shù)器的值等于零時,停止向所述數(shù)據(jù)接收裝置發(fā)送數(shù)據(jù)包;所述數(shù)據(jù)接收處理單元,用于當目標數(shù)據(jù)通道的緩存中存在數(shù)據(jù)包時, 將所述數(shù)據(jù)包發(fā)送給外部線路,每發(fā)送一個數(shù)據(jù)包則將所述目標數(shù)據(jù)通道的 本地信譽值計數(shù)器的值加一。
10、 根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,所述數(shù)據(jù)流量控制系統(tǒng)為 CPOS卡,所述數(shù)據(jù)發(fā)送裝置為CPU,所述數(shù)據(jù)接收裝置為CPOS芯片。
全文摘要
本發(fā)明實施例提供一種數(shù)據(jù)流量控制方法和系統(tǒng),所述方法包括在接收端為每個通道建立本地信譽值計數(shù)器,在發(fā)送端為所述每個通道建立遠端信譽值計數(shù)器;發(fā)送端讀取接收端的目標通道的本地信譽值計數(shù)器的值,將讀取的值和目標通道的遠端信譽值計數(shù)器的值相加得到目標通道的遠端信譽值計數(shù)器的新值,用該新值更新遠端信譽值計數(shù)器,并將目標通道的本地信譽值計數(shù)器清零;發(fā)送端根據(jù)遠端信譽值計數(shù)器的新值向目標通道發(fā)送數(shù)據(jù),根據(jù)發(fā)送的數(shù)據(jù)量來減少目標通道的遠端信譽值計數(shù)器的值;接收端將接收的數(shù)據(jù)存儲于目標通道的緩存中并發(fā)送給外部線路,根據(jù)發(fā)送的數(shù)據(jù)量來增加目標通道的本地信譽值計數(shù)器的值。
文檔編號H04L1/00GK101534173SQ20091013511
公開日2009年9月16日 申請日期2009年4月20日 優(yōu)先權(quán)日2009年4月20日
發(fā)明者寧 楊 申請人:福建星網(wǎng)銳捷網(wǎng)絡(luò)有限公司