專利名稱:數(shù)據(jù)傳輸過程中的流量整形方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)傳輸?shù)姆椒?,更具體的涉及一種數(shù)據(jù)傳輸過程中流量控制的方法。
背景技術(shù):
現(xiàn)今,數(shù)據(jù)通信技術(shù)發(fā)展很快,在通信網(wǎng)絡(luò)中時(shí)刻都在傳遞著大量數(shù)據(jù),因此,處理好數(shù)據(jù)在通信網(wǎng)絡(luò)中的傳輸是提高網(wǎng)絡(luò)資源利用率和數(shù)據(jù)傳輸效率的重要手段。隨著大量數(shù)據(jù)在網(wǎng)絡(luò)中的傳輸,往往會(huì)出現(xiàn)這樣的情況,由于網(wǎng)絡(luò)容量有限,當(dāng)突發(fā)數(shù)據(jù)流時(shí),很多數(shù)據(jù)往往來不及發(fā)送就被丟棄;還有時(shí)為了滿足用戶訂制的網(wǎng)絡(luò)服務(wù)質(zhì)量,需要對(duì)網(wǎng)絡(luò)中傳輸?shù)臄?shù)據(jù)進(jìn)行發(fā)送控制,例如按照特定的時(shí)刻、速率、順序等要求發(fā)送數(shù)據(jù),等等。在出現(xiàn)上述情況時(shí),通常的解決方法是在網(wǎng)絡(luò)突發(fā)數(shù)據(jù)或者按照服務(wù)質(zhì)量的要求控制數(shù)據(jù)的發(fā)送時(shí),將來不及發(fā)送的數(shù)據(jù)緩存起來,等到網(wǎng)絡(luò)空閑或在適當(dāng)?shù)臅r(shí)刻再發(fā)送出去。流量整形的重點(diǎn)就是將數(shù)據(jù)緩存和控制數(shù)據(jù)發(fā)送的時(shí)刻結(jié)合起來,以保證數(shù)據(jù)流速率不超過約定的大小。
圖1是現(xiàn)有技術(shù)流量整形的調(diào)度方法示意圖,該方法涉及整形部分、調(diào)度部分和一個(gè)發(fā)送隊(duì)列,整形部分用于確定報(bào)文發(fā)送的時(shí)刻,并將報(bào)文插入發(fā)送隊(duì)列中相應(yīng)的單元,而調(diào)度部分負(fù)責(zé)在規(guī)定的時(shí)刻將發(fā)送隊(duì)列中的報(bào)文發(fā)送出去,發(fā)送隊(duì)列中的每個(gè)單元是一個(gè)固定大小的緩存區(qū),只能存儲(chǔ)一個(gè)報(bào)文,發(fā)送時(shí),調(diào)度部分依次將發(fā)送隊(duì)列中的報(bào)文發(fā)送出去,而且保證調(diào)度一個(gè)單元的時(shí)間是恒定的,設(shè)為T0。若檢查到發(fā)送隊(duì)列中某一單元為空,表示沒有報(bào)文需要發(fā)送,則等待T0時(shí)間后才調(diào)度下一單元的報(bào)文發(fā)送。
如圖1所示,調(diào)度部分依次將發(fā)送隊(duì)列中報(bào)文1,2,3,4,5,…發(fā)送出去。假設(shè)隊(duì)列長(zhǎng)度為N,當(dāng)調(diào)度部分將第N個(gè)報(bào)文發(fā)送出去之后,又折回到隊(duì)列首部開始下一輪的發(fā)送。
如圖2所示的ATM(異步傳輸模式)中的流量整形示意圖,對(duì)于常見的利用恒定報(bào)文發(fā)送速率的方法實(shí)現(xiàn)流量整形,當(dāng)整形部分試圖往發(fā)送隊(duì)列中某一單元放入報(bào)文時(shí),若該單元已有報(bào)文存在,則從這個(gè)單元開始往后找到一個(gè)空的單元為止。若搜索的單元到了隊(duì)列最后一個(gè)單元,則從隊(duì)列的開頭重新搜索,但不能超過調(diào)度部分當(dāng)前發(fā)送的單元。在圖2中,M1是當(dāng)前發(fā)送的單元,M2是整形部分試圖將報(bào)文放入隊(duì)列中的單元,整形部分搜索非空單元的范圍只能是M2,(M2+1),…,N,1,2,(M1-1)中的一個(gè)。
以圖2所示的ATM中流量整形為例進(jìn)行分析。在上述技術(shù)中,流量整形的能力受到隊(duì)列長(zhǎng)度的直接限制,考慮下面一種情況,如圖3所示,在某一時(shí)刻,數(shù)據(jù)源X產(chǎn)生較大的報(bào)文突發(fā),突發(fā)長(zhǎng)度為N,也即發(fā)送隊(duì)列的長(zhǎng)度,假定為偶數(shù),此外,沒有其他數(shù)據(jù)流。圖3中M1為隊(duì)列當(dāng)前的發(fā)送單元(2<M1<N),假定需要對(duì)數(shù)據(jù)流進(jìn)行CBR(恒定信元率)的整形,而且SCR(持續(xù)信元率)剛為發(fā)送速率的1/2,即每?jī)蓚€(gè)報(bào)文調(diào)度周期2T內(nèi),可以將數(shù)據(jù)源X的一個(gè)報(bào)文發(fā)送出去。整形部分將該數(shù)據(jù)流的報(bào)文X(0),X(1),X(2),…,X(N/2-2),X(N/2-1),依次插入發(fā)送隊(duì)列中的單元M1,(M1+2),(M1+4),…,(M1-4),(M1-2)中。當(dāng)整形部分試圖把第(N/2)個(gè)報(bào)文放入發(fā)送隊(duì)列時(shí),可以發(fā)現(xiàn)將要放入的單元也在M1,但X(0)已經(jīng)在這個(gè)單元。所以,必須將報(bào)文X(N/2)及其后續(xù)報(bào)文X(N/2+1),…,X(N)丟棄。在這種情況下,對(duì)于這個(gè)數(shù)據(jù)源X來講,長(zhǎng)度為N的發(fā)送隊(duì)列最多只能容忍(N/2-1)個(gè)報(bào)文的突發(fā)長(zhǎng)度。
因此,在上述技術(shù)中,發(fā)送隊(duì)列的長(zhǎng)度完全決定了能夠容忍的最大突發(fā)長(zhǎng)度。而提高流量整形抗突發(fā)能力一個(gè)簡(jiǎn)單的方法就是加大發(fā)送隊(duì)列的長(zhǎng)度,隊(duì)列的長(zhǎng)度越長(zhǎng),流量整形抗突發(fā)的能力就越強(qiáng)。但隨著突發(fā)長(zhǎng)度的增加,發(fā)送隊(duì)列的長(zhǎng)度將可能變得非常巨大。
另一方面,較大的數(shù)據(jù)突發(fā)是偶然發(fā)生的,在較長(zhǎng)的時(shí)間內(nèi)出現(xiàn)的幾率可能非常的低。加大發(fā)送隊(duì)列長(zhǎng)度的同時(shí),也造成了內(nèi)存利用效率的下降和成本的增加。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種數(shù)據(jù)傳輸過程中的流量整形方法,以解決上述現(xiàn)有技術(shù)存在的流量整形能力受發(fā)送隊(duì)列長(zhǎng)度的限制,以及內(nèi)存的利用效率較低的問題。
本發(fā)明的目的是通過下面的方法實(shí)現(xiàn)的,一種數(shù)據(jù)傳輸過程中的流量整形方法,該方法包括以下步驟a)建立存儲(chǔ)待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu),發(fā)送隊(duì)列中的每個(gè)單元對(duì)應(yīng)一個(gè)所述的存儲(chǔ)結(jié)構(gòu);b)確定發(fā)送隊(duì)列中可緩存待發(fā)送報(bào)文的單元,然后將待發(fā)送報(bào)文存入所述可緩存的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中;c)按照設(shè)定的調(diào)度策略調(diào)度發(fā)送隊(duì)列中各單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的預(yù)定報(bào)文發(fā)送。
具體的步驟b)所述待發(fā)送報(bào)文的緩存操作按照下述步驟實(shí)現(xiàn)(11)在所述發(fā)送隊(duì)列搜索可緩存待發(fā)送報(bào)文的單元;(12)如搜索到的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中沒有待發(fā)送的報(bào)文或沒有與欲存入的待發(fā)送報(bào)文的發(fā)送輪次值相同的報(bào)文,則將該待發(fā)送報(bào)文存入所述單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中,結(jié)束緩存操作;如搜索到的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中已有與欲存入待發(fā)送報(bào)文的發(fā)送輪次值相同的報(bào)文,則重復(fù)上述步驟(11)、(12)繼續(xù)搜索可緩存單元以存入該待發(fā)送報(bào)文。
優(yōu)化的,步驟c)所述的預(yù)定報(bào)文是發(fā)送輪次值為0的報(bào)文。
本發(fā)明與現(xiàn)有技術(shù)相比有如下的優(yōu)點(diǎn)1.流量整形抗突發(fā)的能力不受發(fā)送隊(duì)列長(zhǎng)度的限制,本發(fā)明中建立了對(duì)應(yīng)發(fā)送隊(duì)列中每一單元的存儲(chǔ)結(jié)構(gòu),由于所述的存儲(chǔ)結(jié)構(gòu)可存儲(chǔ)多個(gè)報(bào)文,即本發(fā)明中的每一單元代表多個(gè)報(bào)文,相比現(xiàn)有技術(shù),本發(fā)明的發(fā)送隊(duì)列的長(zhǎng)度大大減少了,在緩存突發(fā)數(shù)據(jù)時(shí)由于設(shè)置報(bào)文的發(fā)送輪次(roundcount)為不同的值,調(diào)度各單元報(bào)文發(fā)送時(shí)將該單元中roundcount值為0的報(bào)文發(fā)送出去,其余報(bào)文依發(fā)送輪次值在以后輪次發(fā)送,可以保證報(bào)文正確發(fā)送出去;2.本發(fā)明進(jìn)一步的優(yōu)點(diǎn)是提高了內(nèi)存的利用效率,突發(fā)數(shù)據(jù)發(fā)生的幾率是很少的,本發(fā)明中由于減少了發(fā)送隊(duì)列的長(zhǎng)度,內(nèi)存的利用的效率也相應(yīng)提高了。
圖1是現(xiàn)有技術(shù)流量整形的調(diào)度方法示意圖;圖2是ATM網(wǎng)絡(luò)中流量整形的示意圖;圖3是現(xiàn)有流量整形方法突發(fā)數(shù)據(jù)時(shí)的整形示意圖;圖4是本發(fā)明發(fā)送隊(duì)列各單元對(duì)應(yīng)一存儲(chǔ)結(jié)構(gòu)的示意圖;圖5是本發(fā)明將發(fā)送輪次數(shù)據(jù)與報(bào)文封裝的結(jié)構(gòu)圖;圖6是本發(fā)明緩存待發(fā)送報(bào)文的流程圖;
圖7是本發(fā)明具體實(shí)施例的流程圖;具體實(shí)施方式
在數(shù)據(jù)傳輸過程中,流量整形是較常應(yīng)用的控制數(shù)據(jù)流的方法,本實(shí)施方式中仍以上面所述的數(shù)據(jù)源X產(chǎn)生較大突發(fā)的情況,結(jié)合附圖詳細(xì)敘述本發(fā)明流量整形的方法。
為了技術(shù)人員更便于理解本發(fā)明的方法,下面仍以ATM(異步傳輸模式)網(wǎng)絡(luò)為例進(jìn)行說明,我們?cè)賮砜匆幌卢F(xiàn)有流量整形的方法,如圖3所示的,數(shù)據(jù)源X產(chǎn)生較大的報(bào)文突發(fā),突發(fā)長(zhǎng)度為N,隊(duì)列長(zhǎng)度也為N,對(duì)數(shù)據(jù)流進(jìn)行CBR(恒定信元率)的整形,而且SCR(持續(xù)信元率)剛為發(fā)送速率的1/2,即每?jī)蓚€(gè)報(bào)文調(diào)度周期2T內(nèi),可以將數(shù)據(jù)源X的一個(gè)報(bào)文發(fā)送出去。整形部分將該數(shù)據(jù)流的報(bào)文X(0),X(1),X(2),…,X(N/2-2),X(N/2-1),依次插入發(fā)送隊(duì)列中的單元M1,(M1+2),(M1+4),…,(M1-4),(M1-2)中。當(dāng)整形部分試圖把第(N/2)個(gè)報(bào)文放入發(fā)送隊(duì)列時(shí),可以發(fā)現(xiàn)將要放入的單元也在M1,但X(0)已經(jīng)在這個(gè)單元。所以,必須將報(bào)文X(N/2)及其后續(xù)報(bào)文X(N/2+1),…,X(N)丟棄。在這種情況下,對(duì)于這個(gè)數(shù)據(jù)源X來講,長(zhǎng)度為N的發(fā)送隊(duì)列最多只能容忍(N/2-1)個(gè)報(bào)文的突發(fā)長(zhǎng)度。
下面我們先對(duì)造成上述問題的原因進(jìn)行分析,不難發(fā)現(xiàn),造成上述問題的最直接的原因是發(fā)送隊(duì)列中可緩存待發(fā)送報(bào)文的單元只能緩存一個(gè)報(bào)文,沒有緩存多個(gè)報(bào)文的能力,如上所述的,當(dāng)整形部分試圖把第(N/2)個(gè)報(bào)文放入發(fā)送隊(duì)列時(shí),可以發(fā)現(xiàn)將要放入的單元也在M1,但X(0)已經(jīng)在這個(gè)單元。這樣,不得不將報(bào)文X(N/2)及其后續(xù)報(bào)文X(N/2+1),…,X(N)丟棄。簡(jiǎn)單分析這個(gè)問題,我們可找到兩種可能的原因
1)發(fā)送隊(duì)列的各個(gè)單元沒有存儲(chǔ)多個(gè)報(bào)文的能力,這樣,當(dāng)有新的報(bào)文時(shí)顯然只有丟棄;2)即使隊(duì)列的各個(gè)單元有多個(gè)可緩存待發(fā)送報(bào)文的能力,但存入兩個(gè)不同的報(bào)文后,由于各個(gè)報(bào)文發(fā)送的時(shí)間不同,在調(diào)度發(fā)送時(shí),調(diào)度部分不能區(qū)別應(yīng)該發(fā)送哪一個(gè)報(bào)文,這樣只能丟棄后來的報(bào)文。
要解決這個(gè)問題,如現(xiàn)有技術(shù)提出的加大發(fā)送隊(duì)列的長(zhǎng)度是一種簡(jiǎn)單易行的辦法,但正如我們分析的那樣,這樣做的缺點(diǎn)就是隊(duì)列長(zhǎng)度過長(zhǎng),而突發(fā)數(shù)據(jù)出現(xiàn)幾率不是很大,這就造成了內(nèi)存的浪費(fèi),并且只是治標(biāo)不治本,因此,我們考慮在不增加發(fā)送隊(duì)列長(zhǎng)度的條件下,提供一種可以緩存多個(gè)待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu),即本發(fā)明提出一種改進(jìn)的方法,建立一種新的待發(fā)送報(bào)文存儲(chǔ)結(jié)構(gòu),可以在不增加發(fā)送隊(duì)列長(zhǎng)度的同時(shí),將原來不能緩存的多個(gè)待發(fā)送報(bào)文緩存起來,并在合適的時(shí)刻發(fā)送出去。請(qǐng)參考圖4所示,具體地說,本發(fā)明提出的待發(fā)送報(bào)文存儲(chǔ)結(jié)構(gòu)是對(duì)應(yīng)發(fā)送隊(duì)列每一單元的,也即發(fā)送隊(duì)列每一單元都可找到一個(gè)對(duì)應(yīng)它的存儲(chǔ)結(jié)構(gòu),可通過在發(fā)送隊(duì)列各單元中存儲(chǔ)指向與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)的指針實(shí)現(xiàn)各單元與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)。也可通過在發(fā)送隊(duì)列各單元中存儲(chǔ)與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)的標(biāo)記實(shí)現(xiàn)各單元與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng),比如,可以對(duì)各單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)進(jìn)行標(biāo)記,然后在發(fā)送隊(duì)列的單元中存儲(chǔ)該標(biāo)記,在調(diào)度報(bào)文發(fā)送時(shí)根據(jù)該標(biāo)記即可找到該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)。下面以發(fā)送隊(duì)列每個(gè)單元和其存儲(chǔ)結(jié)構(gòu)的對(duì)應(yīng)是通過在發(fā)送隊(duì)列各單元中存儲(chǔ)指向與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)的指針為例說明整形時(shí)如何調(diào)度報(bào)文發(fā)送,整形部分將待發(fā)送報(bào)文存入該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中后,在該單元中存儲(chǔ)指向該單元存儲(chǔ)結(jié)構(gòu)的指針,調(diào)度報(bào)文時(shí),當(dāng)調(diào)度到該單元,調(diào)度部分首先讀取該單元中存儲(chǔ)的指針,進(jìn)一步由該指針找到緩存該待發(fā)送報(bào)文的報(bào)文存儲(chǔ)結(jié)構(gòu),再由該報(bào)文存儲(chǔ)結(jié)構(gòu)讀取需發(fā)送的預(yù)定報(bào)文并調(diào)度出去發(fā)送。
在建立存儲(chǔ)待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu)后,當(dāng)突發(fā)數(shù)據(jù)時(shí),確定可存入該待發(fā)送報(bào)文在發(fā)送隊(duì)列中的單元,并將該待發(fā)送報(bào)文存儲(chǔ)在該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中,發(fā)送時(shí),根據(jù)某種調(diào)度策略將該單元中存儲(chǔ)的預(yù)定報(bào)文出隊(duì)發(fā)送,這種調(diào)度策略可能是依隊(duì)列單元順序發(fā)送,也可能是其他可能的隊(duì)列調(diào)度方法,由于不涉及本發(fā)明實(shí)質(zhì)內(nèi)容,且均為公知技術(shù),這里不再詳述。
上述提出的待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu),可以是一鏈表,也可以是一數(shù)組,甚至可以是一先進(jìn)先出隊(duì)列,這些存儲(chǔ)結(jié)構(gòu)的特點(diǎn)是可以存儲(chǔ)多個(gè)報(bào)文,而不需加大發(fā)送隊(duì)列長(zhǎng)度,例如,以上面敘述的ATM網(wǎng)絡(luò)中的流量整形為例,當(dāng)整形部分試圖把第(N/2)個(gè)報(bào)文放入發(fā)送隊(duì)列時(shí),可以發(fā)現(xiàn)將要放入的單元在M1,而X(0)已經(jīng)在這個(gè)單元。由于本發(fā)明構(gòu)造的待發(fā)送報(bào)文存儲(chǔ)結(jié)構(gòu)可以存儲(chǔ)多個(gè)報(bào)文,例如,單元M1對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)假設(shè)為一維數(shù)組,則將X(0)存入該數(shù)組的第一個(gè)數(shù)組單元后,X(N/2)到來時(shí),也可存入該數(shù)組中,但這時(shí)存入的是下一個(gè)數(shù)組單元,顯然,其后續(xù)報(bào)文X(N/2+1),…,X(N)也可以按照相同的原理存入發(fā)送隊(duì)列相應(yīng)單元中,而不會(huì)被丟棄。
流量整形中,報(bào)文的發(fā)送時(shí)刻是按照一定的算法進(jìn)行的,如GCRA(通用信元率算法)算法等,接收到待發(fā)送報(bào)文后,需要確定發(fā)送隊(duì)列中可存入待發(fā)送報(bào)文的單元,現(xiàn)有技術(shù)中,由于發(fā)送隊(duì)列長(zhǎng)度的限制,超過一定的突發(fā)數(shù)據(jù)量,一些報(bào)文就不得不被丟棄,而本發(fā)明中所建立的報(bào)文存儲(chǔ)結(jié)構(gòu)則可以緩存這些報(bào)文,并在合適的時(shí)刻內(nèi)將這些報(bào)文發(fā)送出去,當(dāng)然,這里為了正確區(qū)分報(bào)文的發(fā)送次序,我們?cè)诖_定報(bào)文的發(fā)送時(shí)間后,可根據(jù)發(fā)送隊(duì)列的長(zhǎng)度,以及目前的時(shí)間,得出待發(fā)送報(bào)文的發(fā)送輪次值,舉例說,根據(jù)整形算法確定的目標(biāo)時(shí)間t1,當(dāng)前時(shí)間t0,發(fā)送隊(duì)列長(zhǎng)度N,由于調(diào)度該發(fā)送隊(duì)列中每一單元的時(shí)間是固定的,設(shè)為T0,隊(duì)列調(diào)度一輪的時(shí)間為T,則取(t1-t0)/T的整數(shù)部分作為報(bào)文的發(fā)送輪次值,這樣如所述報(bào)文的發(fā)送輪次值為0,表示該報(bào)文在第一輪發(fā)送,為1表示該報(bào)文在第二輪發(fā)送,確定了待發(fā)送報(bào)文的發(fā)送輪次值后,將該發(fā)送輪次數(shù)據(jù)與待發(fā)送報(bào)文設(shè)為一體,可以有多種方式,如圖5所示的一種方式,在待發(fā)送報(bào)文的報(bào)文頭中封裝入該數(shù)據(jù),即該報(bào)文的發(fā)送輪次值,發(fā)送時(shí)讀取報(bào)文頭中的數(shù)據(jù),就可以獲取該報(bào)文的發(fā)送輪次值,或者在將待發(fā)送報(bào)文載入內(nèi)存時(shí),在存放該報(bào)文的地址處標(biāo)記該發(fā)送輪次值,發(fā)送時(shí)獲取該報(bào)文的地址的同時(shí)也獲取了該報(bào)文的發(fā)送輪次值,簡(jiǎn)單的說,所述的將待發(fā)送報(bào)文與該報(bào)文的發(fā)送輪次設(shè)為一體建立了發(fā)送輪次和待發(fā)送報(bào)文的一一對(duì)應(yīng)關(guān)系,實(shí)際還可以舉出更多的例子,這里僅以上述例子為代表,而不局限于上述的實(shí)施方式,下面進(jìn)一步說明本發(fā)明的方法,上述確定了報(bào)文的發(fā)送輪次值,并且構(gòu)造了可存儲(chǔ)多報(bào)文的報(bào)文存儲(chǔ)結(jié)構(gòu),進(jìn)一步,還需將待發(fā)送報(bào)文存入發(fā)送隊(duì)列的可緩存的單元中,如圖6所示的緩存待發(fā)送報(bào)文的流程圖,包括以下的步驟步驟(11)在發(fā)送隊(duì)列中搜索可緩存待發(fā)送報(bào)文的單元,如上述的,這樣的單元與一存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng),還以上述的ATM網(wǎng)絡(luò)為例,設(shè)當(dāng)前隊(duì)列調(diào)度的單元p0,發(fā)送隊(duì)列的長(zhǎng)度為N和完成一輪隊(duì)列調(diào)度的周期T即可確定將該待緩存發(fā)送報(bào)文將要存入隊(duì)列的目標(biāo)單元p1,具體按照下述方法確定
記(t1-t0)/T得到的余數(shù)為r,則p1取((r/T0)+p0)的整數(shù)部分;若這樣得到的p1>N,則p1=p1-N,這樣從所述的目標(biāo)單元p1開始搜索往下找可緩存單元;步驟(12)如搜索到可緩存單元,且該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中沒有待發(fā)送報(bào)文,則執(zhí)行步驟(14)將待發(fā)送報(bào)文存入該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中,實(shí)際上這樣的情況是很少的,正如本發(fā)明要解決的問題,往往該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中已有待發(fā)送報(bào)文,現(xiàn)有技術(shù)中,采取的辦法是丟棄報(bào)文,而本發(fā)明中基于前述步驟,執(zhí)行步驟(13)首先核對(duì)該存儲(chǔ)結(jié)構(gòu)中的已有報(bào)文與欲存入報(bào)文的發(fā)送輪次值是否相同,如不同,則執(zhí)行步驟(14)將待發(fā)送報(bào)文存入該單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中,然后結(jié)束緩存操作,這樣可保證該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的報(bào)文發(fā)送輪次值是不同的,發(fā)送時(shí)根據(jù)發(fā)送輪次值發(fā)送而并不會(huì)引起混亂,如搜索到的可緩存單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中已有報(bào)文與欲存入報(bào)文的發(fā)送輪次值相同,則重復(fù)上述步驟(11)、(12)、(13)繼續(xù)搜索可緩存單元以存入該待發(fā)送報(bào)文。
下面進(jìn)一步詳細(xì)說明本發(fā)明的方法,為便于理解,仍以上述對(duì)ATM網(wǎng)絡(luò)進(jìn)行流量整形為例,參考圖7所示步驟701,先建立一發(fā)送隊(duì)列,長(zhǎng)度設(shè)為N,并建立對(duì)應(yīng)發(fā)送隊(duì)列每一單元的存儲(chǔ)結(jié)構(gòu),這里存儲(chǔ)結(jié)構(gòu)以鏈表為例,然后根據(jù)整形算法,確定發(fā)送報(bào)文的發(fā)送時(shí)間,并進(jìn)一步確定發(fā)送報(bào)文的發(fā)送輪次值,然后將該發(fā)送輪次值數(shù)據(jù)與待發(fā)送報(bào)文設(shè)為一體;步驟702,在發(fā)送隊(duì)列中選擇可緩存單元,假設(shè)待發(fā)送報(bào)文的發(fā)送輪次值為1,表示該報(bào)文需在第2輪發(fā)送,找到了可緩存的單元后,檢查該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中是否有報(bào)文,如沒有則直接將報(bào)文存入該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中,如檢查到該單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)有待發(fā)送報(bào)文,則核對(duì)該已有報(bào)文與欲存入報(bào)文的發(fā)送輪次值是否相同,舉例說,假設(shè)該已有報(bào)文發(fā)送輪次值為0,表示該報(bào)文需在第1輪發(fā)送,由于該已有報(bào)文與欲存入待發(fā)送報(bào)文的發(fā)送輪次值不同,則可將該欲存入報(bào)文存入所述單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中,結(jié)束緩存操作,如經(jīng)核對(duì)相同,比如該已有報(bào)文的發(fā)送輪次值也為1,表示該已有報(bào)文也需在第2輪發(fā)送,則不能將該欲存入的待發(fā)送報(bào)文存入,以免引起混亂,繼續(xù)搜索可緩存單元以存入該待發(fā)送報(bào)文。
步驟703,完成存入后,按照設(shè)定的策略調(diào)度報(bào)文發(fā)送時(shí),當(dāng)調(diào)度到存儲(chǔ)有待發(fā)送報(bào)文的單元時(shí),將該單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的預(yù)定報(bào)文發(fā)送,這里所述的預(yù)定報(bào)文就是發(fā)送輪次值為0的報(bào)文,而該單元中其他報(bào)文,則根據(jù)其各自的發(fā)送輪次值在以后輪次發(fā)送。簡(jiǎn)單描述如下,如該單元中沒有發(fā)送輪次值為0的報(bào)文,則表示該單元現(xiàn)在沒有需要立即發(fā)送的報(bào)文,則繼續(xù)下面單元的調(diào)度發(fā)送,但不管該單元是否有報(bào)文發(fā)送出去,調(diào)度完該單元后都需將所述單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中剩余報(bào)文的發(fā)送輪次值減一,即都相應(yīng)提前一輪,也就是發(fā)送輪次值為1的改為0,發(fā)送輪次值為2的改為1,…發(fā)送輪次值為N的改為N-1,這樣再經(jīng)過幾輪調(diào)度后,報(bào)文最終會(huì)被調(diào)度出去發(fā)送。從上述描述,不難理解,在發(fā)送隊(duì)列長(zhǎng)度一定的同樣條件下,本發(fā)明的發(fā)送隊(duì)列可以存儲(chǔ)更多的報(bào)文,并能在正確的時(shí)候發(fā)送出去,使內(nèi)存的利用效率大大提高。
以上所述僅為本發(fā)明的優(yōu)選實(shí)施方式,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的權(quán)利要求保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)傳輸過程中的流量整形方法,其特征在于該方法包括以下步驟a)建立存儲(chǔ)待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu),發(fā)送隊(duì)列中的每個(gè)單元對(duì)應(yīng)一個(gè)所述的存儲(chǔ)結(jié)構(gòu);b)確定發(fā)送隊(duì)列中待發(fā)送報(bào)文可緩存的單元,然后將待發(fā)送報(bào)文緩存入所述可緩存的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中;c)按照設(shè)定的調(diào)度策略調(diào)度發(fā)送隊(duì)列中各單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中緩存的預(yù)定報(bào)文發(fā)送。
2.根據(jù)權(quán)利要求1所述的流量整形方法,其特征在于所述存儲(chǔ)結(jié)構(gòu)可以是一鏈表、一數(shù)組或一先進(jìn)先出(FIFO)隊(duì)列。
3.根據(jù)權(quán)利要求1或2所述的流量整形方法,其特征在于所述方法還包括根據(jù)待發(fā)送報(bào)文的目標(biāo)發(fā)送時(shí)間,當(dāng)前時(shí)間及調(diào)度發(fā)送隊(duì)列一輪所需的時(shí)間確定待發(fā)送報(bào)文的發(fā)送輪次(roundcount)值,并將該發(fā)送輪次值與所述的待發(fā)送報(bào)文設(shè)為一體。
4.根據(jù)權(quán)利要求3所述的流量整形方法,其特征在于所述將發(fā)送輪次值與待發(fā)送報(bào)文設(shè)為一體可通過在所述的待發(fā)送報(bào)文的報(bào)文頭中封裝入該數(shù)據(jù)。
5.根據(jù)權(quán)利要求3所述的流量整形方法,其特征在于所述將發(fā)送輪次值與待發(fā)送報(bào)文設(shè)為一體可通過在存放該待發(fā)送報(bào)文的地址處標(biāo)記該發(fā)送輪次值。
6.根據(jù)權(quán)利要求3所述的流量整形方法,其特征在于步驟b)所述待發(fā)送報(bào)文的緩存操作按照下述步驟實(shí)現(xiàn)(11)在所述發(fā)送隊(duì)列搜索可緩存待發(fā)送報(bào)文的單元;(12)如搜索到的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中沒有待發(fā)送的報(bào)文或沒有與欲存入的待發(fā)送報(bào)文的發(fā)送輪次值相同的報(bào)文,則將該待發(fā)送報(bào)文存入所述單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中;如搜索到的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中已有與欲存入的待發(fā)送報(bào)文的發(fā)送輪次值相同的報(bào)文,則重復(fù)上述步驟(11)、(12)繼續(xù)搜索可緩存單元以存入該待發(fā)送報(bào)文。
7.根據(jù)權(quán)利要求3所述的流量整形方法,其特征在于步驟c)所述的預(yù)定報(bào)文是發(fā)送輪次值為0的報(bào)文。
8.根據(jù)權(quán)利要求3所述的流量整形方法,其特征在于步驟c)還包括調(diào)度完發(fā)送隊(duì)列中一單元后,將該單元中剩余報(bào)文的發(fā)送輪次值相應(yīng)減一。
9.根據(jù)權(quán)利要求1所述的流量整形方法,其特征在于通過在發(fā)送隊(duì)列各單元中存儲(chǔ)指向與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)的指針實(shí)現(xiàn)各單元與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)。
10.根據(jù)權(quán)利要求1所述的流量整形方法,其特征在于通過在發(fā)送隊(duì)列各單元中存儲(chǔ)與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)的標(biāo)記實(shí)現(xiàn)各單元與其對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)之間的對(duì)應(yīng)。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)傳輸過程中的流量整形方法,該方法包括以下步驟a)建立存儲(chǔ)待發(fā)送報(bào)文的存儲(chǔ)結(jié)構(gòu),發(fā)送隊(duì)列中的每個(gè)單元對(duì)應(yīng)一個(gè)所述的存儲(chǔ)結(jié)構(gòu);b)確定發(fā)送隊(duì)列中可緩存待發(fā)送報(bào)文的單元,然后將報(bào)文存入所述可緩存的單元對(duì)應(yīng)的存儲(chǔ)結(jié)構(gòu)中;c)按照設(shè)定的調(diào)度策略調(diào)度發(fā)送隊(duì)列中各單元對(duì)應(yīng)存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的預(yù)定報(bào)文發(fā)送。本發(fā)明由于具有多報(bào)文的存儲(chǔ)結(jié)構(gòu),且通過給各個(gè)報(bào)文設(shè)置不同的發(fā)送輪次值以保證報(bào)文正確發(fā)送,可以大大減少發(fā)送隊(duì)列的長(zhǎng)度,降低內(nèi)存的占用。
文檔編號(hào)H04L12/24GK1536816SQ03109200
公開日2004年10月13日 申請(qǐng)日期2003年4月7日 優(yōu)先權(quán)日2003年4月7日
發(fā)明者黃偉才 申請(qǐng)人:華為技術(shù)有限公司