專利名稱:帶數(shù)據(jù)刪除的存儲(chǔ)管理的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的現(xiàn)有技術(shù)本發(fā)明涉及通信,更具體地說涉及在進(jìn)行包交換的數(shù)據(jù)網(wǎng)絡(luò)中的包刪除。
在進(jìn)行包交換的網(wǎng)絡(luò)中,數(shù)字化的數(shù)據(jù)包往往是依據(jù)在來源和目的地之間不同的網(wǎng)絡(luò)鏈路的容量和可用性按不同的路由從來源傳送到目的地的。數(shù)據(jù)是通過遍及網(wǎng)絡(luò)在物理和邏輯兩者上分布的連接網(wǎng)絡(luò)節(jié)點(diǎn)的鏈路(例如,路由器)發(fā)送的。數(shù)據(jù)能夠在起源于某個(gè)節(jié)點(diǎn)的各種不同的鏈路上傳送。
節(jié)點(diǎn)就它們能夠轉(zhuǎn)移的和為轉(zhuǎn)移暫時(shí)儲(chǔ)存的數(shù)據(jù)量而言具有有限的容量。當(dāng)節(jié)點(diǎn)的容量(帶寬及緩沖空間)由于有太多的數(shù)據(jù)(按包的數(shù)目和包的長(zhǎng)度的任何組合)進(jìn)入該節(jié)點(diǎn)而被超過的時(shí)候,為了把準(zhǔn)備轉(zhuǎn)移出該節(jié)點(diǎn)的(或用該節(jié)點(diǎn)儲(chǔ)存的)包的數(shù)量減少到該特定的節(jié)點(diǎn)的容量范圍之內(nèi),某些包可以刪除。哪個(gè)(或哪些)包將被刪除可以按各種不同的方式確定,包括通過選擇最長(zhǎng)的隊(duì)列。
在實(shí)現(xiàn)用于儲(chǔ)存器網(wǎng)絡(luò)的最長(zhǎng)的隊(duì)列刪除(LQD)策略時(shí),系統(tǒng)中最長(zhǎng)的隊(duì)列的同一性能夠在系統(tǒng)中各個(gè)不同的點(diǎn)被確定下來。實(shí)現(xiàn)這項(xiàng)功能所必需的時(shí)間在系統(tǒng)中可能在緩沖區(qū)的處理速度方面是一個(gè)限制的因素。正常情況下確定組合中最大的隊(duì)列是通過起分類函數(shù)作用的優(yōu)先權(quán)隊(duì)列(或堆)完成的。然而,為了確定最長(zhǎng)的隊(duì)列,優(yōu)先權(quán)隊(duì)列的實(shí)現(xiàn)傾向于需要O(log2N)操作例如,算術(shù)的(加、減等)、邏輯的(例如,比較)、或數(shù)據(jù)結(jié)構(gòu)處理(例如,存儲(chǔ)器訪問)來實(shí)現(xiàn)插入、刪除或修改優(yōu)先權(quán)隊(duì)列中的元素的功能。換句話說,優(yōu)先權(quán)隊(duì)列的實(shí)現(xiàn)在所需要的時(shí)間方面隨著元素?cái)?shù)目N的增加線性地增加。一般地說,存儲(chǔ)器范圍對(duì)于性能具有最大的沖擊。
本發(fā)明的概述本發(fā)明的實(shí)施方案提供用來從許多數(shù)據(jù)隊(duì)列當(dāng)中刪除比較長(zhǎng)的數(shù)據(jù)隊(duì)列的技術(shù)。隊(duì)列依照它們的長(zhǎng)度被分成若干類別或組別。這些類別可以具有相同的或不同的長(zhǎng)度或長(zhǎng)度范圍,例如,相同的百分比長(zhǎng)度范圍。例如,每個(gè)類別的長(zhǎng)度可以從特定的長(zhǎng)度(例如,64Kbytes)到那個(gè)特定的長(zhǎng)度的兩倍(例如,128Kbytes)。在每個(gè)類別或組別之內(nèi),隊(duì)列可能是也可能不是依照長(zhǎng)度分類的。當(dāng)節(jié)點(diǎn)容量被超過并且打算刪除一個(gè)隊(duì)列的時(shí)候,與非空隊(duì)列的最大范圍相關(guān)的組別被選定并且從那個(gè)組別中刪除一個(gè)隊(duì)列。被刪除的隊(duì)列在該組別之內(nèi)可能是也可能不是最大的隊(duì)列。來自被選定的類別的隊(duì)列可以以各種不同的方式進(jìn)行選擇,例如,隨機(jī)地或在該組別中首先列出的隊(duì)列(例如,在存儲(chǔ)棧的頂端)。為了減少在該組別中被刪除的隊(duì)列和實(shí)際最長(zhǎng)的隊(duì)列之間在長(zhǎng)度方面可能的差別組別的長(zhǎng)度范圍能夠被改變。換句話說,組別的范圍規(guī)定在給定的組別中可能的最小隊(duì)列在給定的組別中可能的最大隊(duì)列的預(yù)定的長(zhǎng)度差別范圍之內(nèi),而且可以為了把預(yù)定的長(zhǎng)度差別減少到可接受的水平而選擇/設(shè)計(jì)這些范圍。
一般地說,一方面,本發(fā)明提供用來轉(zhuǎn)移分組化數(shù)據(jù)的裝置,該裝置包括用來接收分組化數(shù)據(jù)的輸入端;與輸入端耦合為了排隊(duì)儲(chǔ)存分組化數(shù)據(jù)而配置的存儲(chǔ)器,每個(gè)隊(duì)列有相關(guān)的長(zhǎng)度;與存儲(chǔ)器耦合用來傳輸分組化數(shù)據(jù)的輸出端;以及在操作中與存儲(chǔ)器耦合為了控制分組化數(shù)據(jù)從存儲(chǔ)器到輸出端的轉(zhuǎn)移而配置的控制器,該控制器是為了確定眾多隊(duì)列長(zhǎng)度范圍當(dāng)中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列以及為了從所述的至少一個(gè)相關(guān)的隊(duì)列中刪除被選定的隊(duì)列的分組化數(shù)據(jù)而配置的。
本發(fā)明的實(shí)現(xiàn)可以包括一個(gè)或多個(gè)下述的特征??刂破魇菫榱送ㄟ^解除分配一部分儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器來刪除分組化數(shù)據(jù)而配置的??刂破魇菫榱送ㄟ^重新分配一部分儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器來刪除分組化數(shù)據(jù)而配置的??刂破魇菫榱诉M(jìn)一步確定節(jié)點(diǎn)的容量是否被超過而配置的,而且其中控制器是為了作為對(duì)確定節(jié)點(diǎn)的容量已被超過的反應(yīng)確定眾多隊(duì)列長(zhǎng)度范圍當(dāng)中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列而配置的??刂破魇菫榱诉x擇從中刪除數(shù)據(jù)的隊(duì)列而配置的,這種選擇相對(duì)于長(zhǎng)度在與被選定的隊(duì)列相同的長(zhǎng)度范圍之內(nèi)的其它隊(duì)列的長(zhǎng)度與被選定的隊(duì)列的長(zhǎng)度無關(guān)??刂破靼閳?zhí)行軟件指令而配置的處理器??刂破靼楸举|(zhì)上與軟件指令無關(guān)地操作而配置的硬件。
一般地說,另一方面,本發(fā)明提供用來轉(zhuǎn)移分組化數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括用來接收分組化數(shù)據(jù)的輸入端;與輸入端耦合為排隊(duì)儲(chǔ)存分組化數(shù)據(jù)而配置的存儲(chǔ)器,每個(gè)隊(duì)列有相關(guān)的長(zhǎng)度;與存儲(chǔ)器耦合用來傳輸分組化數(shù)據(jù)的輸出端;以及在操作中與存儲(chǔ)器耦合用來從與隊(duì)列長(zhǎng)度范圍大于具有至少一個(gè)相關(guān)的隊(duì)列的任何其它的隊(duì)列長(zhǎng)度范圍相關(guān)的特定的隊(duì)列中刪除至少一個(gè)數(shù)據(jù)包的控制裝置。
本發(fā)明的實(shí)現(xiàn)可以包括一個(gè)或多個(gè)下述的特征??刂蒲b置刪除至少一個(gè)數(shù)據(jù)包,這種刪除相對(duì)于與特定的隊(duì)列長(zhǎng)度范圍相關(guān)的任何其它隊(duì)列的長(zhǎng)度與特定的隊(duì)列的長(zhǎng)度無關(guān)??刂蒲b置解除分配一部分儲(chǔ)存至少一個(gè)被刪除的包的存儲(chǔ)器??刂蒲b置重新分配一部分儲(chǔ)存至少一個(gè)被刪除的包的存儲(chǔ)器。
一般地說,第三方面,本發(fā)明提供一種方法,該方法包括在一個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)中儲(chǔ)存用于從該網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)移的分組化數(shù)據(jù)的隊(duì)列和隊(duì)列長(zhǎng)度的標(biāo)記;確定眾多隊(duì)列長(zhǎng)度范圍當(dāng)中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列;以及刪除從至少一個(gè)相關(guān)的隊(duì)列當(dāng)中選定的隊(duì)列的分組化數(shù)據(jù)。
本發(fā)明的實(shí)現(xiàn)可以包括一個(gè)或多個(gè)下述的特征。刪除包括解除分配儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器。刪除包括重新分配儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器。該方法可以進(jìn)一步包括確定節(jié)點(diǎn)的容量是否已被超過,而且其中確定眾多隊(duì)列長(zhǎng)度范圍當(dāng)中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列是作為對(duì)確定節(jié)點(diǎn)的容量已被超過的反應(yīng)被確定的。
一般地說,第四方面,本發(fā)明提供在轉(zhuǎn)移數(shù)據(jù)包的網(wǎng)絡(luò)節(jié)點(diǎn)中數(shù)據(jù)流動(dòng)的方法,該方法包括在網(wǎng)絡(luò)節(jié)點(diǎn)中儲(chǔ)存用于從該網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)移的分組化數(shù)據(jù)的隊(duì)列和該隊(duì)列長(zhǎng)度的標(biāo)記;使分組化數(shù)據(jù)的隊(duì)列與某些存儲(chǔ)桶相關(guān),這些存儲(chǔ)桶具有能夠與它們相關(guān)的隊(duì)列長(zhǎng)度范圍;確定這些存儲(chǔ)桶當(dāng)中哪一個(gè)至少被部分地填充并且相對(duì)于至少被部分地填充的任何其它的存儲(chǔ)桶具有相關(guān)的最大的隊(duì)列長(zhǎng)度范圍;從被確定存儲(chǔ)桶中選擇一個(gè)隊(duì)列;以及從被選定的隊(duì)列中刪除分組化數(shù)據(jù)。
本發(fā)明的實(shí)現(xiàn)可以包括一個(gè)或多個(gè)下述的特征。刪除包括解除分配儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器。該方法可以進(jìn)一步包括確定用來轉(zhuǎn)移分組化數(shù)據(jù)的節(jié)點(diǎn)的容量是否被超過,而且其中確定至少部份地被填充的存儲(chǔ)桶當(dāng)中哪一個(gè)相對(duì)于至少部份地被填充的任何其它的存儲(chǔ)桶具有相關(guān)的最大的隊(duì)列長(zhǎng)度范圍是作為對(duì)確定節(jié)點(diǎn)的容量已被超過的反應(yīng)確定的。
本發(fā)明的各種不同的實(shí)施方案可以提供一個(gè)或多個(gè)下述的優(yōu)勢(shì)。隊(duì)列可以通過為數(shù)不多的幾步(例如一步)確定待刪除的隊(duì)列的操作被選定用于刪除。隊(duì)列可以被選定用于至少在規(guī)定的最大隊(duì)列范圍之內(nèi)的刪除。在被刪除的隊(duì)列和實(shí)際上最大的隊(duì)列之間潛在的長(zhǎng)度差異可以被選擇和/或調(diào)整。比較長(zhǎng)但可能并非最長(zhǎng)的隊(duì)列可能被選定用于刪除,而且硬件操作比選擇保證刪除的最長(zhǎng)隊(duì)列少。隊(duì)列可以不管在隊(duì)列的數(shù)目和長(zhǎng)度方面的變化被選定用于按比較恒定的時(shí)間量刪除。
這些和其它的優(yōu)勢(shì)以及發(fā)明本身從下面的附圖、描述和權(quán)利要求書將更容易變得清楚明了。
附圖簡(jiǎn)要說明
圖1是包括節(jié)點(diǎn)和節(jié)點(diǎn)鏈路的網(wǎng)絡(luò)的方框圖。
圖2是圖1所示的網(wǎng)絡(luò)節(jié)點(diǎn)的示意方框圖。
圖3是隊(duì)列存儲(chǔ)桶系統(tǒng)的方框圖。
圖4是刪除隊(duì)列的過程的流程方框圖。
優(yōu)選實(shí)施方案的詳細(xì)說明本發(fā)明提供用來從用于通過包交換網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)移的在線隊(duì)列當(dāng)中選擇用于刪除的比較長(zhǎng)的數(shù)據(jù)隊(duì)列的技術(shù)。
參照?qǐng)D1,通信系統(tǒng)10包括個(gè)人計(jì)算機(jī)121-125以及包括網(wǎng)絡(luò)節(jié)點(diǎn)161-161的網(wǎng)絡(luò)14。如圖所示,計(jì)算機(jī)12借助適當(dāng)?shù)脑O(shè)備(例如調(diào)制解調(diào)器)和適當(dāng)?shù)能浖B接到節(jié)點(diǎn)161和167上。連接節(jié)點(diǎn)16的鏈路18是為雙向通信配置的。節(jié)點(diǎn)16是用來通過諸如被稱為英特網(wǎng)的全球性包交換數(shù)據(jù)網(wǎng)絡(luò)之類的網(wǎng)絡(luò)14轉(zhuǎn)移數(shù)據(jù)包的路由器。節(jié)點(diǎn)16是為了接收包和把它傳送到毗鄰節(jié)點(diǎn)16(例如,由安排路由的節(jié)點(diǎn)16確定的節(jié)點(diǎn)或在節(jié)點(diǎn)本身之內(nèi))而配置的。節(jié)點(diǎn)16也是為了在把包轉(zhuǎn)移到毗鄰節(jié)點(diǎn)16之前適當(dāng)?shù)鼐彌_輸入的包而配置的。節(jié)點(diǎn)16具有緩沖和轉(zhuǎn)移裝置的多重副本,以致數(shù)據(jù)能夠在內(nèi)部緩沖和轉(zhuǎn)移,而且內(nèi)部的緩沖和轉(zhuǎn)移可能變得擁擠,正如數(shù)據(jù)緩沖和外部轉(zhuǎn)移可能在外部發(fā)生的那樣。節(jié)點(diǎn)16也可能是包的來源和/或目的地。
參照?qǐng)D2,示范節(jié)點(diǎn)16,在這里是節(jié)點(diǎn)164,包括為儲(chǔ)存和轉(zhuǎn)移數(shù)據(jù)包的隊(duì)列20而配置的節(jié)點(diǎn)緩沖區(qū)18。緩沖區(qū)18包括用來在執(zhí)行軟件的處理器22的控制下儲(chǔ)存數(shù)據(jù)的存儲(chǔ)器。如圖1所示,緩沖區(qū)18是為了接收來自節(jié)點(diǎn)161、163和167的數(shù)據(jù)包和把數(shù)據(jù)包傳送給節(jié)點(diǎn)161、163和167而連接的,盡管節(jié)點(diǎn)16之間的其它連接也是可接受的。包是經(jīng)由在輸入口28的輸入線26接收的并且是經(jīng)由輸出線30從輸出口32傳送出去的。數(shù)據(jù)包被儲(chǔ)存在隊(duì)列20(在這里展示的是隊(duì)列201-207)中以便轉(zhuǎn)移出緩沖區(qū)18。
數(shù)據(jù)包可以按各種不同的順序轉(zhuǎn)移出隊(duì)列20。例如,數(shù)據(jù)包可以按Q1至Q7的隊(duì)列編號(hào)次序依照分配給每個(gè)隊(duì)列20的帶寬的數(shù)量(對(duì)于每個(gè)隊(duì)列20可能是不同的)并行地傳送。包也可以按這些技術(shù)的組合傳送,例如,如果隊(duì)列201-203是按編號(hào)次序傳送的,而且隊(duì)列204-207也是按編號(hào)次序傳送的,但是來自隊(duì)列201-201的群體的數(shù)據(jù)包和來自隊(duì)列204-207的群體的數(shù)據(jù)包可以依照分配給各個(gè)群體的帶寬并行地傳送。
緩沖區(qū)18和處理器22是為了實(shí)現(xiàn)近似的最長(zhǎng)隊(duì)列刪除(LQD)策略而配置的。優(yōu)選的是緩沖區(qū)實(shí)數(shù)空間是固定的,以致對(duì)于緩沖存儲(chǔ)器存在有限的長(zhǎng)度,所以只有小的正整數(shù)被緩沖區(qū)18和處理器22分類。處理器22是為了依照軟件代碼操作控制緩沖區(qū)18完成各種不同的功能實(shí)現(xiàn)近似的LQD而配置的。關(guān)于通過它元素(隊(duì)列)的值(長(zhǎng)度)可以改變的數(shù)量在它被修正的時(shí)候存在某種限制。包被一個(gè)一個(gè)地添加和從隊(duì)列中取走,因此元素的值將僅僅通過包的最大長(zhǎng)度增加或減少。另外,“幾乎正確的”答案被假定是可接受的。業(yè)已證明即使用來尋找最長(zhǎng)隊(duì)列的粗略的近似值也能具有非常好的性能。隊(duì)列20在長(zhǎng)度范圍有限的情況下被插入/移出緩沖區(qū)18。隊(duì)列20當(dāng)它們從空的變成有數(shù)據(jù)包的時(shí)候被放進(jìn)系統(tǒng),而當(dāng)它們沒有數(shù)據(jù)包的時(shí)候則被取消。這樣新近插入的隊(duì)列20將具有大于0而且小于或等于最大的包長(zhǎng)度的長(zhǎng)度,而被取消的隊(duì)列20將具有等于0的長(zhǎng)度。
緩沖區(qū)18是為了使隊(duì)列20在一系列與改變長(zhǎng)度的隊(duì)列相對(duì)應(yīng)的“存儲(chǔ)桶”中相關(guān)而配置的。盡管隊(duì)列20可以被看作是儲(chǔ)存在存儲(chǔ)桶中,但是隊(duì)列20不需要實(shí)際上被儲(chǔ)存在一起。存儲(chǔ)桶是邏輯分組多于物理分組。例如,存儲(chǔ)桶可以用指針、鏈路一覽表、或其它表明哪個(gè)隊(duì)列20屬于哪個(gè)存儲(chǔ)桶的標(biāo)記來實(shí)現(xiàn)。
參照?qǐng)D3,緩沖區(qū)18包括n個(gè)存儲(chǔ)桶240-24n-1,而只有三個(gè)存儲(chǔ)桶240-242被展示出來。能夠與存儲(chǔ)桶24相關(guān)聯(lián)的隊(duì)列20的最大長(zhǎng)度是用函數(shù)S給定的,其中Si表示將被放在存儲(chǔ)桶24i之中的長(zhǎng)度最大的隊(duì)列。存儲(chǔ)桶B0將包含長(zhǎng)度為0字節(jié)到S0字節(jié)的隊(duì)列20,存儲(chǔ)桶241將包含長(zhǎng)度從S0+1字節(jié)到S1字節(jié)的隊(duì)列20,依此類推。
存儲(chǔ)桶24(在這里是240、241和242)儲(chǔ)存長(zhǎng)度在相應(yīng)的長(zhǎng)度范圍R(在這里是R0、R1和R2)之內(nèi)的隊(duì)列20。長(zhǎng)度范圍R包含多種長(zhǎng)度,其中除了最小隊(duì)列長(zhǎng)度為0的情況之外,用于范圍R的最大隊(duì)列長(zhǎng)度S大約為用于范圍R的最小隊(duì)列長(zhǎng)度的兩倍。例如,范圍R0包括長(zhǎng)度為0字節(jié)到63字節(jié)的隊(duì)列,范圍R1包含64字節(jié)到127字節(jié),而范圍R2包括128字節(jié)到255字節(jié)的隊(duì)列。換句話說,R0=
和Ri=[2n字節(jié),2n+1-1字節(jié)],其中n=i+1。為了將隊(duì)列分類,對(duì)長(zhǎng)度的二進(jìn)制指示進(jìn)行分析以確定是1的最高位。不同于在這個(gè)例子中給出的其它的范圍R之間的關(guān)系(例如,n對(duì)i的不同關(guān)系)都是可接受的。存儲(chǔ)桶的長(zhǎng)度范圍R可以隨著平均的/最大的隊(duì)列長(zhǎng)度或長(zhǎng)度分布變化動(dòng)態(tài)地被改變。然而,按固定的長(zhǎng)度分類可以提供比較簡(jiǎn)單的實(shí)現(xiàn)。
在任何給定的存儲(chǔ)桶24之內(nèi)的隊(duì)列20都不必依照它們的長(zhǎng)度儲(chǔ)存。隊(duì)列20可以依照它們的相對(duì)長(zhǎng)度儲(chǔ)存,或相對(duì)于它們各自的長(zhǎng)度獨(dú)立地儲(chǔ)存,例如,依照首先抵達(dá)、最后抵達(dá)或隨機(jī)地儲(chǔ)存。
緩沖區(qū)18和處理器22(圖2)是為了在適當(dāng)?shù)臅r(shí)候?qū)崿F(xiàn)刪除隊(duì)列20的近似地LQD機(jī)制而配置的。依照刪除機(jī)制,緩沖區(qū)18和處理器24能夠容易地確定哪個(gè)存儲(chǔ)桶24是非空的(即,至少被部份地填充),識(shí)別在非空的存儲(chǔ)桶24中的至少一個(gè)隊(duì)列20,以及很容易地從存儲(chǔ)桶24中刪除一個(gè)或多個(gè)來自任何任意的隊(duì)列20的數(shù)據(jù)包。因此,準(zhǔn)備刪除的隊(duì)列20(即,作為靶子的隊(duì)列的一個(gè)或多個(gè)數(shù)據(jù)包將被刪除)可能不是最長(zhǎng)的隊(duì)列20,但是這個(gè)關(guān)于最長(zhǎng)的隊(duì)列20的相對(duì)精度足以提供相對(duì)的公平。多少包被刪除可以改變,但是優(yōu)選有足夠的包被刪除,以致節(jié)點(diǎn)164的容量不因未被刪除的包被超出。包是通過解除分配和/或重新分配儲(chǔ)存被刪除的包的存儲(chǔ)器被刪除的,所以其它的數(shù)據(jù)能夠被寫入被解除分配和/或重新分配的存儲(chǔ)器。緩沖區(qū)18和處理器22的刪除機(jī)制也能識(shí)別極少或從不接受服務(wù)的隊(duì)列以及刪除來自那些隊(duì)列的包。
參照?qǐng)D4,同時(shí)進(jìn)一步參照?qǐng)D1-2,從隊(duì)列20中刪除包的程序40包括階段42、44和46,為了說明的(而不是限制的)目的,在這些階段網(wǎng)絡(luò)節(jié)點(diǎn)164接收某個(gè)數(shù)據(jù)包和適當(dāng)?shù)鼐彌_(儲(chǔ)存)這個(gè)數(shù)據(jù)包。在階段42,包經(jīng)輸入線26和輸入口28被接收。分組化數(shù)據(jù)在緩沖區(qū)18中以正在進(jìn)行的方式被儲(chǔ)存在一個(gè)或多個(gè)隊(duì)列20中。在階段44,收到的包與隊(duì)列20相關(guān)聯(lián),例如,通過指定給隊(duì)列20,就收到的包與哪些其它的包相關(guān)聯(lián)而論可能依照包中的標(biāo)記。在階段46,收到的包進(jìn)一步依照與收到的包相關(guān)聯(lián)的隊(duì)列20的長(zhǎng)度與隊(duì)列存儲(chǔ)桶24相關(guān)聯(lián)。與隊(duì)列20相關(guān)聯(lián)的存儲(chǔ)桶24隨著隊(duì)列20的長(zhǎng)度變化而變化。
在階段48,處理器22確定用來儲(chǔ)存來自節(jié)點(diǎn)164的包的容量是否被超過。這種確定可能是作為對(duì)包正在被節(jié)點(diǎn)164接收的反應(yīng)。如果節(jié)點(diǎn)的容量未被超過,那么程序40返回到階段42,等待另一個(gè)包被接收。作為替代,確定容量可能是定期進(jìn)行的,例如,在定時(shí)器的控制之下。在這種情況下,如同用虛線環(huán)49指出的那樣,如果節(jié)點(diǎn)的容量不被超過,那么程序40保持在階段48。如果節(jié)點(diǎn)的容量被超過,那么程序40進(jìn)入階段52。
在階段52,處理器22確定哪個(gè)存儲(chǔ)桶24是非空的而且具有最大的隊(duì)列長(zhǎng)度范圍R。例如,處理器可以按隊(duì)列長(zhǎng)度范圍R遞減的次序詢問每個(gè)存儲(chǔ)桶24一直到非空的存儲(chǔ)桶24被找到。
在階段54,在非空的隊(duì)列長(zhǎng)度范圍R最大的存儲(chǔ)桶24中選擇用于刪除的隊(duì)列20。處理器22隨機(jī)地或以其它方式在存儲(chǔ)桶24中選擇隊(duì)列20,不考慮被選定的隊(duì)列20相對(duì)于那個(gè)存儲(chǔ)桶24中的任何其它的隊(duì)列20是否具有比較大的長(zhǎng)度。因此,被選定的隊(duì)列20可能不是最大的隊(duì)列20。
在階段56,在階段54中選定的隊(duì)列20被刪除。刪除可能包括使用于傳輸?shù)陌鼜墓?jié)點(diǎn)164出列,或以其它方式解除分配儲(chǔ)存一個(gè)或多個(gè)待刪除的包的存儲(chǔ)器。
在圖4中展示的程序40是示范性的而不是限制性的。與圖4相比較,這些階段可能被增添、刪除或重新排列。例如,階段44可能被省略,例如,如果收到的包如同用包中的信息(例如,在包的標(biāo)題中)指出的那樣與某個(gè)隊(duì)列相關(guān)聯(lián)。另外,階段42、44和46也可能被刪除,例如,如果數(shù)據(jù)包的接收未被用來啟動(dòng)刪除機(jī)制。
其它的實(shí)施方案在權(quán)利要求書的范圍和精神之內(nèi)。例如,各種功能在前面被描述成是由軟件完成/控制的。但是,由于軟件的特性,這些功能可能是由軟件、硬件、固件、硬連線或這些當(dāng)中的任何組合完成/控制的,而且這些功能的物理實(shí)現(xiàn)可能實(shí)際上駐留在不同于上述的那個(gè)/那些的位置,包括分布在各種不同的位置。例如,處理器22可以是作為完成上述功能的硬件邏輯(與軟件無關(guān)的,或者實(shí)質(zhì)上如此)實(shí)現(xiàn)的,這可能導(dǎo)致比使用受軟件控制的處理器更快速的操作。受軟件控制的處理器可能被用來處理用于對(duì)網(wǎng)絡(luò)14外面的連接的數(shù)據(jù),而硬件可能被用來處理用于對(duì)網(wǎng)絡(luò)14內(nèi)部的連接的數(shù)據(jù)。盡管用于緩沖區(qū)的優(yōu)先選擇已被列出,但是緩沖區(qū)實(shí)數(shù)空間不需要是固定的,隊(duì)列的長(zhǎng)度可能改變的數(shù)量當(dāng)它被修改的時(shí)候不需要受限制,隊(duì)列可能被插入/移出緩沖區(qū),不需要在限定的長(zhǎng)度范圍內(nèi),而且隊(duì)列可能不時(shí)地被放入系統(tǒng),而不是當(dāng)它們從空的變成有包的時(shí)候,而且可能當(dāng)它們有至少一個(gè)包的時(shí)候被取消。存儲(chǔ)桶長(zhǎng)度范圍R可能不同于討論過的那些。長(zhǎng)度范圍R可能重疊。一個(gè)范圍相對(duì)于另一個(gè)增加的程度可能不同于前面討論過的。例如,在比較低的長(zhǎng)度范圍,范圍R可能按可能相同也可能不同的小增量(例如,64字節(jié))增加,而在比較高的長(zhǎng)度范圍,增加比較大,例如,類似于討論過的將最大的長(zhǎng)度加倍。優(yōu)選的是無論使用什么使隊(duì)列20與存儲(chǔ)桶24相關(guān)聯(lián)的方案,使隊(duì)列20相關(guān)聯(lián)和選擇用于刪除的隊(duì)列20的程序與隊(duì)列20分類并且選擇最大的隊(duì)列相比將是比較便宜的(根據(jù)成本和/或處理消費(fèi))。
隊(duì)列的長(zhǎng)度可以通過對(duì)一個(gè)或多個(gè)隊(duì)列加權(quán)被調(diào)整到有效長(zhǎng)度。有效長(zhǎng)度可以被用來使隊(duì)列20與存儲(chǔ)桶24相關(guān)聯(lián)。為了將隊(duì)列20作為擠出去的靶子,可以使用隊(duì)列20必須滿足的有效長(zhǎng)度的最小值/門限值。特殊的存儲(chǔ)桶可以是為有效長(zhǎng)度低于最小值/門限值的隊(duì)列20(例如,有效的/加權(quán)的長(zhǎng)度為零字節(jié)的那些有字節(jié)的隊(duì)列)確定的。這種特殊的存儲(chǔ)桶可以被這樣使用,以致隊(duì)列可以被定為刪除的目標(biāo),不管是否符合正常的刪除條件。作為刪除對(duì)象的隊(duì)列可能是從這個(gè)特殊的存儲(chǔ)桶中隨機(jī)選定的,或者相似的機(jī)制可能被應(yīng)用于把確實(shí)滿足最小值/門限值的隊(duì)列定為目標(biāo)(例如,通過改變最小值/門限值)。
權(quán)利要求
1.一種用來轉(zhuǎn)移分組化數(shù)據(jù)的裝置,該裝置包括用來接收分組化數(shù)據(jù)的輸入端;與輸入端耦合為排隊(duì)儲(chǔ)存分組化數(shù)據(jù)而配置的存儲(chǔ)器,每個(gè)隊(duì)列有相關(guān)的長(zhǎng)度;與存儲(chǔ)器耦合用來傳輸分組化數(shù)據(jù)的輸出端;以及在操作中與存儲(chǔ)器耦合為控制分組化數(shù)據(jù)從存儲(chǔ)器到輸出端的轉(zhuǎn)移而配置的控制器,所述的控制器是為了確定眾多長(zhǎng)度范圍不同的隊(duì)列當(dāng)中哪一個(gè)隊(duì)列具有最大的長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列以及為了刪除從所述的至少一個(gè)相關(guān)的隊(duì)列當(dāng)中選定的隊(duì)列的分組化數(shù)據(jù)而配置的。
2.根據(jù)權(quán)利要求1的裝置,其中控制器是為了通過解除分配一部分儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器刪除分組化數(shù)據(jù)而配置的。
3.根據(jù)權(quán)利要求1的裝置,其中控制器是為了通過重新分配一部分儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器刪除分組化數(shù)據(jù)而配置的。
4.根據(jù)權(quán)利要求3的裝置,其中所述的控制器是進(jìn)一步為了確定是否超出節(jié)點(diǎn)的容量而配置的,以及為了作為對(duì)確定是否超出節(jié)點(diǎn)的容量的反應(yīng)確定眾多長(zhǎng)度范圍不同的隊(duì)列中哪一個(gè)隊(duì)列具有最大的長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列而配置的。
5.根據(jù)權(quán)利要求1的裝置,其中控制器是為了選擇從中刪除數(shù)據(jù)的隊(duì)列而配置的,這種選擇相對(duì)于長(zhǎng)度在與被選定的隊(duì)列相同的長(zhǎng)度范圍之內(nèi)的其它隊(duì)列的長(zhǎng)度與被選定的隊(duì)列的長(zhǎng)度無關(guān)。
6.根據(jù)權(quán)利要求1的裝置,其中控制器包括為執(zhí)行軟件指令而配置的處理器。
7.根據(jù)權(quán)利要求1的裝置,其中控制器包括為了實(shí)質(zhì)上與軟件指令無關(guān)地操作而配置的硬件。
8.一種用來轉(zhuǎn)移分組化數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括用來接收分組化數(shù)據(jù)的輸入端;與輸入端耦合為排隊(duì)儲(chǔ)存分組化數(shù)據(jù)而配置的存儲(chǔ)器,每個(gè)隊(duì)列有相關(guān)的長(zhǎng)度;與存儲(chǔ)器耦合用來傳輸分組化數(shù)據(jù)的輸出端;以及在操作中與存儲(chǔ)器耦合用來從與某個(gè)長(zhǎng)度范圍大于具有至少一個(gè)相關(guān)隊(duì)列的任何其它隊(duì)列長(zhǎng)度范圍的特定的隊(duì)列長(zhǎng)度范圍相關(guān)的特定的隊(duì)列中刪除至少一個(gè)數(shù)據(jù)包的控制裝置。
9.根據(jù)權(quán)利要求8的系統(tǒng),其中控制裝置獨(dú)立于與特定的隊(duì)列長(zhǎng)度范圍相關(guān)的任何其它隊(duì)列的長(zhǎng)度有關(guān)的特定隊(duì)列的長(zhǎng)度地刪除至少一個(gè)數(shù)據(jù)包。
10.根據(jù)權(quán)利要求9的系統(tǒng),其中控制裝置解除分配一部分儲(chǔ)存著至少一個(gè)被刪除的包的儲(chǔ)存器。
11.根據(jù)權(quán)利要求10的系統(tǒng),其中控制裝置重新分配一部分儲(chǔ)存著至少一個(gè)被刪除的包的儲(chǔ)存器。
12.一種方法,其中包括在某個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)中儲(chǔ)存用于從該網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)移的分組化數(shù)據(jù)的隊(duì)列和該隊(duì)列長(zhǎng)度的標(biāo)記;確定眾多隊(duì)列長(zhǎng)度范圍中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列;以及從所述的至少一個(gè)相關(guān)的隊(duì)列當(dāng)中刪除某個(gè)選定的隊(duì)列的分組化數(shù)據(jù)。
13.根據(jù)權(quán)利要求12的方法,其中刪除包括解除分配儲(chǔ)存該分組化數(shù)據(jù)的存儲(chǔ)器。
14.根據(jù)權(quán)利要求12的方法,其中刪除包括重新分配儲(chǔ)存該分組化數(shù)據(jù)的存儲(chǔ)器。
15.根據(jù)權(quán)利要求14的方法進(jìn)一步包括確定是否已超過用來轉(zhuǎn)移分組化數(shù)據(jù)的節(jié)點(diǎn)的容量,而且其中確定眾多隊(duì)列長(zhǎng)度范圍當(dāng)中哪一個(gè)具有最大的隊(duì)列長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列是作為對(duì)確定節(jié)點(diǎn)的容量已被超出的反應(yīng)被確定的。
16.一種在轉(zhuǎn)移數(shù)據(jù)包的網(wǎng)絡(luò)節(jié)點(diǎn)中的數(shù)據(jù)流動(dòng)方法,該方法包括在網(wǎng)絡(luò)節(jié)點(diǎn)中儲(chǔ)存用于從該網(wǎng)絡(luò)節(jié)點(diǎn)轉(zhuǎn)移的分組化數(shù)據(jù)的隊(duì)列和隊(duì)列長(zhǎng)度的標(biāo)記;使分組化數(shù)據(jù)的隊(duì)列與某些存儲(chǔ)桶相關(guān),這些存儲(chǔ)桶具有能與之相關(guān)聯(lián)的相關(guān)的隊(duì)列長(zhǎng)度范圍;確定這些存儲(chǔ)桶當(dāng)中哪一個(gè)被至少部份地填充并且相對(duì)于被至少部份地填充的任何其它存儲(chǔ)桶具有最大的相關(guān)的隊(duì)列長(zhǎng)度范圍;從被確定的存儲(chǔ)桶當(dāng)中選擇一個(gè)隊(duì)列;以及從被選定的隊(duì)列當(dāng)中刪除分組化數(shù)據(jù)。
17.根據(jù)權(quán)利要求16的方法,其中刪除包括解除分配儲(chǔ)存分組化數(shù)據(jù)的存儲(chǔ)器。
18.根據(jù)權(quán)利要求17的方法,進(jìn)一步包括確定是否已超過用來轉(zhuǎn)移分組化數(shù)據(jù)的節(jié)點(diǎn)的容量,而且其中確定哪一個(gè)被至少部份地填充的存儲(chǔ)桶相對(duì)于至少部份地被填充的任何其它的存儲(chǔ)桶具有最大的相關(guān)的隊(duì)列長(zhǎng)度范圍是作為對(duì)確定節(jié)點(diǎn)的容量已被超過的反應(yīng)被確定的。
全文摘要
用來轉(zhuǎn)移分組化數(shù)據(jù)的裝置包括用來接收分組化數(shù)據(jù)的輸入端;與輸入端耦合為排隊(duì)儲(chǔ)存分組化數(shù)據(jù)而配置的存儲(chǔ)器,每個(gè)隊(duì)列有相關(guān)的長(zhǎng)度;與存儲(chǔ)器耦合為傳輸分組化數(shù)據(jù)而配置的輸出端;以及在操作中與存儲(chǔ)器耦合為控制分組化數(shù)據(jù)從存儲(chǔ)器到輸出端的轉(zhuǎn)移而配置的控制器,所述的控制器是為了確定眾多長(zhǎng)度范圍不同的隊(duì)列當(dāng)中哪一個(gè)隊(duì)列具有最大的長(zhǎng)度范圍和至少一個(gè)相關(guān)的隊(duì)列以及為了刪除從所述的至少一個(gè)相關(guān)的隊(duì)列當(dāng)中選定的隊(duì)列的分組化數(shù)據(jù)而配置的。
文檔編號(hào)H04L12/56GK1636350SQ01808942
公開日2005年7月6日 申請(qǐng)日期2001年5月1日 優(yōu)先權(quán)日2000年5月1日
發(fā)明者喬恩·C·R·班納特 申請(qǐng)人:河流三角洲網(wǎng)絡(luò)工程有限公司