專利名稱:主動管理中心隊列緩沖區(qū)分配的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及通過數(shù)據(jù)傳輸網(wǎng)絡(luò)交換節(jié)點的包流(packet flow)控制,尤其涉及通過根據(jù)節(jié)點的中心隊列中當前可用的未使用空間數(shù)量主動管理分派給交換節(jié)點端口的、中心隊列中的空間分配,而便利于包流的技術(shù)。
背景技術(shù):
用于數(shù)據(jù)通信(或傳輸)網(wǎng)絡(luò)的傳統(tǒng)交換節(jié)點使用在其輸入端口處或其輸出端口處的專用緩沖區(qū)。這些專用緩沖區(qū)將這些端口連接到交換邏輯并便利了通過數(shù)據(jù)通信網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)包的流控制,其中該交換邏輯將由輸入端口接收的數(shù)據(jù)包引導(dǎo)到適當?shù)妮敵龆丝?。?shù)據(jù)傳輸網(wǎng)絡(luò)中的常見數(shù)據(jù)通信流模式常導(dǎo)致網(wǎng)絡(luò)交換節(jié)點端口處的極其不同的通信流量,并且這些不同的通信流量通常隨著時間而變化。因此,專用于網(wǎng)絡(luò)交換節(jié)點中各個端口的緩沖區(qū)的使用常常不能很好地與數(shù)據(jù)通信流量特性相匹配。在繁忙的端口中可能出現(xiàn)輸入端口阻塞,因為當緩沖區(qū)的隊列前面的數(shù)據(jù)包等待被交換到繁忙的輸出端口時它的緩沖區(qū)容量已滿。同時,僅接收少量通信流的其他端口的緩沖區(qū)具有不能被利用的可用空閑空間。
發(fā)明內(nèi)容
通過提供用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制的方法克服了先有技術(shù)的缺點并提供了其他的優(yōu)點。該方法包括主動管理分派給交換節(jié)點的各端口的、該交換節(jié)點的中心隊列中的空間分配。該中心隊列中空間分配的主動管理基于中心隊列中當前可用的未使用空間的數(shù)量。
管理中心隊列中空間分配的該技術(shù)的進一步的方面包括分別跟蹤當前未分配的未使用空間,和分配給該交換節(jié)點的端口、但由于包從中心隊列中被傳輸?shù)捷敵龆丝诙粘龅奈词褂每臻g。向每個端口(例如,接近于周期性地)提供空出的當前分配給它的空間和中心隊列中一定數(shù)量的當前未分配的空間。對在中心隊列中向端口的空間分配進行主動管理的又一方面包括動態(tài)地向端口的一個或多個虛擬通道(virtual lane)分配提供給該端口的那些未使用空間量。
這里還描述并要求保護對應(yīng)于上述方法的系統(tǒng)和計算機程序產(chǎn)品。
通過本發(fā)明的技術(shù)實現(xiàn)了其他的特征和優(yōu)點。下面詳細描述了本發(fā)明的其他實施例和方面,且這些均被認為是所要求保護的本發(fā)明的一部分。
在本說明書后面的權(quán)利要求中具體指出并清楚地要求保護了本發(fā)明的主題。從以下結(jié)合附圖的詳細描述中可清楚地了解本發(fā)明的上述及其他目的、特征和優(yōu)點,其中圖1示出了根據(jù)本發(fā)明一個方面的采用包流控制的數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的一個實施例;圖2是根據(jù)本發(fā)明一個方面的用于管理對數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的端口的中心隊列緩沖區(qū)分配的技術(shù)的一個方面的流程圖;圖3A和圖3B示出了根據(jù)本發(fā)明一個方面的用于管理對交換節(jié)點的端口的中心隊列緩沖區(qū)分配的技術(shù)的另一方面的流程圖,其中分派給端口的、中心隊列中的空間被進一步分配給該端口的虛擬通道;圖4示出了根據(jù)本發(fā)明一個方面的用于圖1的交換節(jié)點實施例的端口控制邏輯的一個實施例;圖5示出了根據(jù)本發(fā)明一個方面的用于圖4的端口控制邏輯實施例的虛擬通道計算器的一個實施例;及圖6示出了根據(jù)本發(fā)明一個方面的圖5的運算邏輯的一個實施例的流程圖。
具體實施例方式
總的來說,這里描述的是用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制技術(shù)。在一個方面,該技術(shù)主動地和動態(tài)地管理一交換節(jié)點的中心隊列中的空間分配,這些空間是給予該交換節(jié)點的各端口以用于包緩沖的。這一中心隊列中空間分配的主動和動態(tài)管理是基于該中心隊列中當前可用的未使用空間數(shù)量。在另一方面,該技術(shù)包括在一端口的一個或多個虛擬通道之間分派給予該端口的空間分配。中心隊列中的空間以n字節(jié)塊(也稱作“塊”(chunk))來分配。每個塊由一個信用(credit)來代表。根據(jù)分派給一個端口的虛擬通道的中心隊列空間數(shù)量,該端口可以向鏈路的發(fā)送端授予相應(yīng)數(shù)量的信用以進行流控制。
下面參照圖1描述根據(jù)本發(fā)明的一方面,采用了包流控制的數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的一個實施例。交換節(jié)點的該實施例包括連接到中心隊列140的多個輸入端口(110、120和130)和同樣連接到中心隊列140的多個輸出端口(160、170和180)。圖1中示出的交換節(jié)點實施例還包括中心隊列控制邏輯150。中心隊列控制邏輯150連接到中心隊列140,輸入端口110、120和130以及輸出端口160、170和180。
輸入端口110通過接收器和鏈路協(xié)議引擎單元112連接到通信鏈路。接收器和鏈路協(xié)議引擎單元112連接到先進先出(FIFO)寄存器114和端口控制邏輯116。輸入端口110的FIFO寄存器114連接到中心隊列140。輸入端口120和130也是同樣設(shè)置的。
輸出端口160的FIFO寄存器162連接到中心隊列140及輸出端口160的發(fā)射器和鏈路協(xié)議引擎單元164。發(fā)射器和鏈路協(xié)議引擎單元164轉(zhuǎn)而連接到端口控制邏輯166和通信鏈路。輸出端口170和180也是同樣設(shè)置的。
下列的討論概述了通過圖1中所示的交換節(jié)點實施例100的數(shù)據(jù)包流和該交換節(jié)點的各組成部分的交互作用。作為例子,假設(shè)通過交換節(jié)點100的數(shù)據(jù)包流,其中數(shù)據(jù)包由輸入端口110接收并最后通過輸出端口160輸出。在數(shù)據(jù)包由接收器和鏈路協(xié)議引擎單元112接收之后,它被放置到FIFO寄存器114中。從FIFO寄存器114,包被緩沖在中心隊列140中。端口控制邏輯116將被指派了該包的虛擬通道可用的空間減少等于該包大小的量。端口根據(jù)包的屬性(例如該包的服務(wù)級別字段)和服務(wù)級別到虛擬通道映射表來確定該包的虛擬通道。
當目的輸出端口不忙于傳輸另一包時,緩沖于中心隊列140中的包可被傳輸?shù)捷敵龆丝?60的FIFO寄存器162。數(shù)據(jù)包由發(fā)射器和鏈路協(xié)議引擎單元164從FIFO寄存器162中讀出,以便通過鏈路傳輸。在準備傳輸中將接收到的包從中心隊列140傳遞給FIFO寄存器162使分配給一端口的虛擬通道的空間空出。這一空出的空間被中心隊列控制邏輯150返還給從其接收到該包的端口的虛擬通道,以便維護中心隊列140中為所有這多個端口的空間分配。
此外,根據(jù)中心隊列140中可用的未使用空間數(shù)量,來主動管理中心隊列140中對該交換節(jié)點的端口的空間分配。中心隊列140中的未使用空間包括當前未分配給該交換節(jié)點的任何端口的空間和空出的已分配空間,即當前分配給一端口的一虛擬通道并已用于緩沖一接收到的包,但因為該包被傳遞給一輸出端口的FIFO寄存器而空出的空間??粘龅囊逊峙淇臻g也可以由于輸入端口丟棄已接收的包而產(chǎn)生。
在用于主動管理中心隊列140中對交換節(jié)點的端口的空間分配的技術(shù)的一個實施例中,該管理分布于中心隊列控制邏輯150和多個端口的端口控制邏輯之中。圖2是根據(jù)本發(fā)明的一方面,用于將中心隊列中的空間分配給圖1中示出的交換節(jié)點實施例的端口的中心隊列控制邏輯的一個實施例的流程圖200。參照圖2,將在空間分配管理中使用的幾個參數(shù)初始化210以開始該過程。這些包括SharedCredits,其是以信用為單位度量的、中心隊列中可用的未分配空間數(shù)量,OfferRC,其是以信用為單位度量的空出的已分配空間數(shù)量,及MaxOffer,其是中心隊列中可用的、在每個管理間隔可由圖1的中心隊列控制邏輯150提供給一端口的未分配空間的最大數(shù)量。
在參數(shù)的初始化之后,使用規(guī)定的規(guī)則選出一個端口以向其提供信用,即未使用空間的數(shù)量212,來開始主動中心隊列空間分配管理。這種規(guī)定的規(guī)則的一個例子是大約周期性地輪流選擇每個端口,以使中心隊列空間在該交換節(jié)點的各端口之間公平分配。中心隊列控制邏輯分別跟蹤空出的為每個端口的虛擬通道分配的空間數(shù)量,及在中心隊列中當前可用的未分配空間的數(shù)量。
如圖2的流程圖所指出的,中心隊列中的這兩類未使用空間是以不同方式分配的。計數(shù)器表OfferRC包括用于每個虛擬通道的計數(shù)器。用于所選擇的端口的每個虛擬通道的計數(shù)器被設(shè)置為等于與指派給相關(guān)虛擬通道的所有空出的已分配空間相應(yīng)的、中心隊列中的空間數(shù)量220。計數(shù)器變量SharedCredits用于跟蹤中心隊列中當前可用的未分配空間數(shù)量。如果計數(shù)器變量SharedCredits的檢驗指出在中心隊列中存在未分配空間230,則通過設(shè)置變量OfferSC等于MaxOffer和SharedCredits這兩個空間數(shù)量中較小的那一個,將該中心隊列中最高達到由參數(shù)MaxOffer規(guī)定的數(shù)量的未分配的空間數(shù)量分配給所選擇的端口232、233和234。分配給所選擇的端口的空間數(shù)量也要從中心隊列中當前可用的未分配空間數(shù)量中減除233和234。計數(shù)器表OfferRC和變量OfferSC的值所代表的未使用空間數(shù)量被提供給選定端口240。在中心隊列控制邏輯的空間管理過程返回到過程循環(huán)的開始處212之前,將每個端口所返回的、代表先前所分配的中心隊列空間數(shù)量的信用數(shù)量添加到中心隊列中未分配空間的池中250。
如上面所討論的,中心隊列中的兩類未使用空間—空出的已分配空間和未分配空間—被分別跟蹤并以不同方式分配。這樣做的原因如下。一方面,空出的已分配空間是由中心隊列控制邏輯提供給它當前被分配的端口的虛擬通道以確保每個虛擬通道得到指定的最小數(shù)量的緩沖空間,從而防止那些虛擬通道由于繁重的通信流以及其他虛擬通道所遭受的阻塞問題而阻塞。另一方面,所提供的共享信用公平地提供給所有端口,以在需要時動態(tài)地將共享中心隊列中的附加緩沖空間提供給各端口及它們各自的虛擬通道,從而將隨時間變化的通信流提供給該交換節(jié)點的端口。
下面參照圖3A和3B所示的流程圖描述根據(jù)本發(fā)明一個方面、用于主動管理在一節(jié)點的中心隊列中對該交換節(jié)點的各端口的空間分配的技術(shù)的其他方面。這一流程圖示出了用于將中心隊列中的空間(其已被提供給一端口)分配給圖1所示的交換節(jié)點實施例的輸入端口的虛擬通道的技術(shù)的一個實施例。參照圖3A,初始化在分配提供給一端口的空間中所使用的幾個變量來開始該過程310。這些變量包括下面用于每個虛擬通道的變量CurrentCredit(VL),其計數(shù)在對該虛擬通道的分配中當前可用(未使用)的空間數(shù)量;DesiredCredit(VL),其代表端口控制邏輯試圖協(xié)同中心隊列控制邏輯為該虛擬通道維護的、中心隊列中未使用的緩沖空間的目標數(shù)量;及DebtCredit(VL),其代表該虛擬通道已從中心隊列中可用的未分配空間的池中借出(但還未返還)的、中心隊列中的緩沖空間數(shù)量。最初,將DebtCredit(VL)設(shè)為等于-DesiredCredit(VL)。DebtCredit(VL)的負值表明該虛擬通道被欠了中心隊列中的空間。
初始化之后,選擇該端口的當前對中心隊列中的緩沖空間處于最大需求中的虛擬通道(VL)312,來開始用于該些虛擬通道的空間分配技術(shù)的重復(fù)循環(huán)。在一個例子中,對中心隊列中的空間處于最大需求中的VL被確定為具有在DesiredCredit(VL)和CurrentCredit(VL)之間的最大差值的虛擬通道。在圖3A和3B所示的流程圖中,中心隊列中的緩沖空間是以稱作“信用”的單位來度量和跟蹤的。
一旦選出了虛擬通道312,則該虛擬通道空間分配技術(shù)的重復(fù)循環(huán)中剩余步驟涉及跟蹤對空間分配和使用的各種度量以及針對所選擇的VL的空間分配決策。首先,檢驗DebtCredit(VL)以確定所選擇的虛擬通道是否被欠了中心隊列中的任何空間320。在一個實施例中,當DebtCredit的值為負時,該虛擬通道被欠了信用。如果所選擇的VL被欠了任何信用,則將OfferRC(VL)與(DesiredCredit(VL)-CurrentCredit(VL))進行比較321,其中(DesiredCredit(VL)-CurrentCredit(VL))是對該虛擬通道VL的、中心隊列中未使用緩沖空間的目標數(shù)量與分配給該虛擬通道的未使用空間的當前數(shù)量之間的差值。如果OfferRC(VL)小于或等于(DesiredCredit(VL)-CurrentCredit(VL)),則為該所選擇的VL而提供給該端口的所有OfferRC信用均分配給該虛擬通道322。相反,如果OfferRC(VL)大于(DesiredCredit(VL)-CurrentCredit(VL)),則端口控制邏輯只為所選擇的虛擬通道保留足夠的OfferRC(VL)信用,以使所選擇的虛擬通道的中心隊列分配中當前的未使用空間數(shù)量(CurrentCredit(VL))增加到目標量(DesiredCredit(VL))。在這種情況下,通過將變量CQ_CreditReturn設(shè)為等于剩余的OfferRC(VL)信用的數(shù)量323,將剩余的OfferRC(VL)信用,即OfferRC(VL)-(DesiredCredit(VL)-CurrentCredit(VL)),返還到中心隊列中未分配空間的池中。如先前參照圖2所討論過的,由中心隊列控制邏輯為一特定虛擬通道而提供給一端口的OfferRC信用相當于當前分派給該端口的該虛擬通道的、中心隊列中空出的已分配空間的數(shù)量。
如果所選擇的虛擬通道未被欠任何信用,則繼續(xù)進行端口控制邏輯的分配處理,以確定將多少為所選擇的虛擬通道而提供給該端口的空出的中心隊列中的已分配空間(即用于該選定虛擬通道的OfferRC信用)分配給所選擇的VL,以及所確定的分配給所選擇的VL的空間是如何利用的。為了簡化上述討論,將為了一虛擬通道而提供給一端口的空出的中心隊列中的已分配空間稱作折扣空間或折扣信用,且OfferRC(VL)將代表表OfferRC中用于所選擇的虛擬通道的計數(shù)器。如果折扣空間超過了所選擇的虛擬通道的當前中心隊列空間債務(wù)330,則通過將對應(yīng)于所借出的中心隊列空間當前差額的數(shù)量的信用返還到中心隊列中未分配空間的池中,來首先使用折扣信用來消除該VL的債務(wù)。在一個例子中,將變量CQ_CreditReturn設(shè)為DebtCredit(VL)以實現(xiàn)滿足當前的空間債務(wù)332。而且,將DebtCredit(VL)設(shè)為等于0以表明該虛擬通道不再有債務(wù)332。
在滿足了所選擇的VL的空間債務(wù)之后,該邏輯判定所剩折扣信用,即那些未用于滿足空間債務(wù)的折扣信用的數(shù)量是否超過了為使在該VL的分配中當前可用(未使用)的空間數(shù)量增加到所期望數(shù)量而所需的數(shù)量334。如果是,則將為使在該VL的分配中可用的中心隊列中空間的數(shù)量增加到所期望數(shù)量而需要的剩余折扣信用分配給所選擇的虛擬通道336。通過將超出的信用增加到CQ_CreditReturn中,將超過需要數(shù)量的剩余折扣信用數(shù)量返還到中心隊列中未分配空間的池中336。如果檢驗334是負值,則將所有提供的折扣信用分配給所選擇的虛擬通道335。在這兩種情況中的任一種情況下,適當增加變量CurrentCredit(VL)中保持的計數(shù),以反映在該VL分配中當前可用空間的增加(334和335)。
然而,如果折扣空間未超過所選擇的虛擬通道的當前中心隊列空間債務(wù)330,則將提供給該端口的所有折扣信用均返還到中心隊列中未分配空間的池中,以減少所選擇的虛擬通道的空間債務(wù)331。在一個例子中,通過將變量CQ_CreditReturn設(shè)為OfferRC(VL)并從空間債務(wù)計數(shù)器變量DebtCredit(VL)中減去OfferRC(VL)信用,來實現(xiàn)這一空間債務(wù)減少。
在分配了為所選擇的虛擬通道而提供給該端口的任何折扣空間之后,該空間分配的管理繼續(xù)從中心隊列中未分配空間的池中分配提供給該端口的一定數(shù)量的空間。這一提供的空間數(shù)量由變量OfferSC的值來表示。為了簡化下面的討論,從中心隊列中未分配空間的池中提供給該端口的空間數(shù)量也被稱作提供的共享信用。在該端口的各虛擬通道之間分配所提供的共享信用是通過判定是否已向該端口提供了任何共享信用來開始的340。如果沒有,則處理返回到循環(huán)的開始,以選擇當前處于對信用的最大需求中的虛擬通道(圖3A的312)。如果從中心隊列中未分配空間的池中已向該端口分配了一定數(shù)量的空間,則檢驗OfferSC以判定所提供的共享信用是否超過了如下所需的信用數(shù)量,即將所選擇的虛擬通道在其中心隊列分配中可用的空間增加到它的目標水平所需的信用數(shù)量342。如果它沒有超過,則將所有所提供的共享信用都分配給所選擇的虛擬通道的、中心隊列中的空間分配344;將所選擇的VL的債務(wù)增加所提供的共享信用的數(shù)量344;并且處理繼續(xù)進行,選擇當前具有對中心隊列中的空間的最大需求的虛擬通道,圖3A中的312。
另一方面,如果所提供的共享信用超過了如下所需的信用數(shù)量,即將所選擇的虛擬通道在其中心隊列分配中的可用空間增加到它的目標水平所需的信用數(shù)量,則將為提高該虛擬通道在中心隊列中的可用空間到目標數(shù)量而所需數(shù)量的所提供的共享信用分配給所選擇的虛擬通道的、中心隊列中的空間分配346;將所選擇的VL的債務(wù)增加如此分配給該VL的所提供的共享信用的數(shù)量;將超過為將VL在中心隊列中可用的信用增加到目標數(shù)量所需的剩余的所提供的共享信用返還到中心隊列的可用未分配空間的池中346;并且處理繼續(xù)進行,選擇當前對中心隊列中的空間具有最大需求的虛擬通道,圖3A中的312。
應(yīng)該指出,因為DesiredCredit(VL)是確定哪一個虛擬通道具有對信用的最大需求的檢驗312中的一個因素,并還會影響在用于分配中心隊列中提供給一交換節(jié)點的一端口的空間的該技術(shù)中的每一遍重復(fù)循環(huán)時分配給所選擇的虛擬通道多少所提供的共享信用的數(shù)量(342、344和346),所以通過簡單改變DesiredCredit(VL)參數(shù)的值來動態(tài)地改變對一端口的虛擬通道的中心隊列空間分配而不必重新初始化該交換節(jié)點是可能的。
下面參照圖4描述根據(jù)本發(fā)明的一方面、用于圖1的交換節(jié)點實施例的端口控制邏輯116(也稱作端口信用管理器)的一個實施例。作為舉例,圖4的實施例將端口的資源劃分為四個虛擬通道,由標號0、1、2和3來標明。端口控制邏輯116接收幾個信號,它使用這幾個信號來管理一端口在圖1的中心隊列140中的空間分配,并在多個虛擬通道之間分配指派給該端口的空間。這些輸入信號包括DesiredCredit(0:1)(0:11)、CQ_Grant_Credit、IP_Decr_Credit(0:3)、OP_Rebate_Credit(0:1)(0:1)、及IP_Incr_Credit(0:3)。在大多數(shù)情況下,第一組標號指VL,第二組是大小。信號DesiredCredit表明在中心隊列中為每個虛擬通道維護的可用(即未使用)緩沖空間的目標數(shù)量。CQ_Grant_Credit是中心隊列中當前提供給該端口的未分配空間的數(shù)量(即圖2的OfferSC)。信號組IP_Decr_Credit(0:3)指示自從上次更新以來用于緩沖該端口為每個虛擬通道所接收的包的空間數(shù)量,因此這一數(shù)量必須從中心隊列中該虛擬通道的可用空間分配中扣除。OP_Rebate_Credit指示由于自從上次更新以來由該端口先前接收的并緩沖在中心隊列中的一個或多個包從中心隊列中被傳送到輸出端口,而作為折扣提供給該端口的VL的、中心隊列中的空間數(shù)量(即圖2的OfferRC)。IP_Incr_Credit指示由于該輸入端口先前接收的一個或多個包被該端口自身根據(jù)該數(shù)據(jù)傳輸網(wǎng)絡(luò)所使用的協(xié)議所丟棄,而作為折扣提供給該端口的、中心隊列中的空間數(shù)量。
信號CQ_Grant_Credit、IP_Decr_Credit(0:3)、OP_Rebate_Credit(0:1)(0:1)和IP_Incr_Credit(0:3)被虛擬通道解碼器邏輯410傳遞給虛擬通道信用計算器420、421、422和423。具體地,虛擬通道解碼器邏輯410分別將由標號0、1、2和3標明的、信號IP_Decr_Credit(0:3)、IP_Incr_Credit(0:3)和OP_Rebate_Credit的組成部分傳遞給相關(guān)的虛擬通道信用計算器420、421、422和423。另一方面,信號CQ_Grant_Credit由多路分解器411經(jīng)由虛擬通道解碼器邏輯410傳遞給這些VL信用計算器中的一個,以響應(yīng)由判優(yōu)器邏輯430產(chǎn)生的信號Next_VL。而且,與每個虛擬通道相關(guān)的DesiredCredit信號組成部分被提供給相應(yīng)的VL信用計算器,且所有VL信用計算器接收由調(diào)整邏輯450產(chǎn)生的Allow_Credit信號。信號Allow_Credit是一背壓(backpressure)機制,其發(fā)送給所有虛擬通道計算器以阻止端口的FIFO寄存器溢出,這在下面將會詳細描述。
虛擬通道信用計算器420、421、422和423將信號NeedCredit(0)、NeedCredit(1)、NeedCredit(2)、NeedCredit(3)分別提供給判優(yōu)器邏輯430。NeedCredit信號指示該端口的虛擬通道的附加中心隊列空間需求。判優(yōu)器邏輯430將挑出具有對信用的最大需求的虛擬通道(即具有最大的NeedCredit值的虛擬通道)。這些虛擬通道信用計算器還產(chǎn)生CurrentCredit和CQ_CreditReturn信號。CurrentCredit表示當前分配給一虛擬通道的、中心隊列中可用的未使用空間的當前數(shù)量。CQ_CreditReturn表示一虛擬通道返還到未分配中心隊列空間的池中的空間數(shù)量。每當輸入端口在一指定虛擬通道上接收到包時,該虛擬通道的VL信用計算器將該虛擬通道的CurrentCredit計數(shù)減去由IP_Decr_Credit所指示的空間數(shù)量。用于每個虛擬通道的OP_Rebate_Credit和IP_Incr_Credit的值被引導(dǎo)到它們各自的信用計算器以確定是否允許增加用于一虛擬通道的CurrentCredit,或這些信用是否應(yīng)經(jīng)由CQ_CreditReturn環(huán)路上的Return_Credit_Out信號返還給中心隊列(圖1的152)。
加法器邏輯460將返還到中心隊列的未分配空間的池中的空間(CQ_CreditReturn)與其他端口返還的信用(Return_Credit_In)相加。其和(Return_Credit_Out)被放置在圖1的信用返還環(huán)路152上。用于每個虛擬通道的CurrentCredit信號被提供給該端口的接收器和鏈路協(xié)議引擎單元,例如圖1中輸入端口110的接收器和鏈路協(xié)議引擎單元112。此外,求和邏輯440為該端口計算所有虛擬通道的CurrentCredit的和,以產(chǎn)生TotalCurrentCredit信號,該信號被輸入到調(diào)整邏輯450。其他輸入到調(diào)整邏輯450的信號包括FifoRoom和CSF。FifoRoom信號表示該端口的輸入FIFO 114中未使用空間的數(shù)量。CSF(信用調(diào)整因子)信號引入調(diào)整以補償?shù)竭_該輸入端口的帶寬與輸入端口和中心隊列之間的帶寬的差。
調(diào)整邏輯450是對端口控制邏輯116的增強,其在輸入端口帶寬超過了輸入端口與中心隊列之間的帶寬的情況下提供背壓機制。在一個例子中,信用調(diào)整因子按下式計算CSF=BWRLPE/(BWRLPE-BWCQ)其中BWRLPE是到該輸入端口的帶寬,及BWCQ是從該輸入端口到中心隊列的帶寬。
調(diào)整邏輯只有在下面的公式滿足時才發(fā)出Allow_Credit信號(CSF)(FifoRoom)>TotalCurrentCredit其中FifoRoom是輸入端口的輸入FIFO中未使用的信用數(shù)。
當Allow_Credit未發(fā)出時,輸入端口將不會接受任何通過IP_Incr_Credit、OP_Rebate_Credit或CQ_Grant_Credit信號以CurrentCredit形式提供的信用,直到FifoRoom增加到足夠大(即輸入端口的輸入FIFO空出足夠多)以滿足上述條件時。如果這一條件不滿足,則信用將只被用于減少由DebtCredit(VL)指示的、所選擇的虛擬通道的空間債務(wù)。如果DebtCredit是0,同時Allow_Credit也是0(即未發(fā)出),且信用被返還給該端口,則該輸入端口將所返還的信用返還給中心隊列并允許它的DebtCredit變?yōu)樨撝?,從而實現(xiàn)對中心隊列的“借出”,直到該輸入端口的輸入FIFO可以空出為止。
下面參照圖5描述根據(jù)本發(fā)明的一方面、顯示于圖4的端口控制邏輯實施例中的虛擬通道信用計算器的一個實施例。在這一實施例中,虛擬通道信用計算器在收集高速緩存553中收集通過IP_Incr_Credit和OP_Rebate_Credit返回的信用,以及在收集高速緩存552中收集通過CQ_Grant_Credit返回的信用552。收集高速緩存552和553只是對在一小時間間隔內(nèi)返回的若干信用進行累加的加法器,其中該時間間隔等于VL信用計算器進行更新所花費的時間。在該更新間隔期間內(nèi)一特定VL的、來自IP_Incr_Credit和OP_Rebate_Credit的信用總和被高速緩存553存儲在OfferRC中,而在該更新間隔期間內(nèi)來自CQ_Grant_Credit的信用總和被存儲在高速緩存552中。信號OfferRC、OfferSC、Allow_Credit、DesiredCredit、CurrentCredit、NeedCredit、及DebtCredit都饋送給運算邏輯590,該運算邏輯計算在DebtCredit(dDebt)和CurrentCredit(dCurrent)中必要的變化數(shù)量。運算邏輯590還確定返還給中心隊列多少剩余的信用(如由CQ_CreditReturn信號指示的)。
加法器邏輯530和減法邏輯520按下述方式來計算DebtCredit的當前值。加法器邏輯530將VL的空間債務(wù)中的變化dDebt與DebtCredit的先前值相加。信號dDebt由運算邏輯590提供。然后,將從加法器邏輯530得出的該和作為輸入提供給減法邏輯520。減法邏輯520計算加法器530的輸出與信號dDebt之間的差,該信號dDebt是減法邏輯510的輸出且表示該虛擬通道在一管理更新間隔內(nèi)的目標空間水平的變化。減法邏輯520計算出的DebtCredit的值作為反饋輸入提供給運算邏輯590和加法器邏輯530。
按照下述方式來計算CurrentCredit的當前值,即在中心隊列中該虛擬通道的空間分配中當前可用的空間。運算邏輯590向加法器邏輯560提供作為輸入的dCurrent,這是指示自從上次管理更新以來在中心隊列中該VL的分配中可用空間的變化的信號。對加法器邏輯560的另一輸入是CurrentCredit的先前值。CurrentCredit的先前值是減法邏輯570的輸出,它是經(jīng)由寄存器反饋回來的。減法邏輯570將加法器邏輯560的輸出減去IP_Decr_Credit信號的值,以產(chǎn)生CurrentCredit信號。如前面所討論的,IP_Decr_Credit信號指示自從上次管理更新以來為了存儲所接收的包而消耗掉的該虛擬通道的中心隊列空間分配的數(shù)量。
虛擬通道信用計算器的這一實施例通過將輸入信號DesiredCredit和輸出信號CurrentCredit作為輸入提供給減法邏輯580,來計算輸出信號NeededCredit。減法邏輯580通過計算(DesiredCredit-CurrentCredit)的差來計算NeededCredit。輸出信號NeededCredit還作為反饋經(jīng)由寄存器提供給運算邏輯590。
在一個例子中,根據(jù)前面參照圖3A和3B所示出而在圖6中更詳細顯示的流程圖所描述的用于向一端口的虛擬通道分配空間的技術(shù),運算邏輯590計算信號dDebt、dCurrent和CQ_CreditReturn。圖6中描述的計算在硬件中執(zhí)行,在該硬件中所有四個虛擬通道信用值是并行處理的。
返回到圖5,信號dDesired表示一虛擬通道的DesiredCredit數(shù)量的變化。如果DesiredCredit增加(向一輸入端口的一VL分配更多中心隊列中的空間),則減法器520實現(xiàn)DebtCredit的立即減小。這使得該VL能夠從中心隊列中接受更多的保留空間。如果DesiredCredit減少(減少中心隊列中VL的空間分配),則減法器520實現(xiàn)DebtCredit的立即增加,且虛擬通道計算器將開始通過CQ_CreditReturn返還信用以試圖使該VL所使用的空間數(shù)量達到它的當前空間分配。
當DesiredCredit被設(shè)為0且該虛擬通道或端口禁用時,發(fā)出提供給高速緩存553的LinkState信號。它將使得等于CurrentCredit信號的值的信用的數(shù)量作為OfferRC和IP_Decr_Credit兩者被發(fā)出,從而使得信用計算器將CurrentCredit轉(zhuǎn)換為CQ_CreditReturn信用并有效地將該端口的這一虛擬通道的保留信用返還給中心隊列。
可以根據(jù)正由一個端口使用的VL的數(shù)量、該端口的最大傳輸單元(MTU)大小、及所需的性能水平來不同地設(shè)置對于每個虛擬通道的中心隊列中緩沖空間的期望數(shù)量。根據(jù)本發(fā)明的包流控制技術(shù)允許在端口處于操作中時動態(tài)改變所期望的信用數(shù)量。這樣,可以在通信流條件改變或在端口激活/去活時增加或降低輸入端口試圖為它的虛擬通道維護的緩沖空間的數(shù)量,而不必復(fù)位交換機。
圖6顯示了根據(jù)本發(fā)明一個方面的、圖5的運算邏輯590的一個實施例的流程圖。根據(jù)通過構(gòu)成運算邏輯590的判定邏輯所采取的路徑,向變量dDebt、dCurrent和CQ_CreditReturn指定值660。該處理以判斷Allow_Credit是否等于1(610)來開始。如果Allow_Credit不等于1,該處理前進到變量值的計算和指定660。如果Allow_Credit等于1,則將信號OfferRC與債務(wù)閾值D進行比較620,其中如果DebtCredit大于0則D等于DebtCredit,而如果DebtCredit小于或等于0則D具有0值。如果OfferRC大于或等于債務(wù)閾值D,則處理繼續(xù)將NeededCredit信號與值(OfferRC-D)進行比較630;相反,如果OfferRC小于D,則運算邏輯590的判定邏輯判斷OfferSC是否大于或等于NeedCredit650。指派給變量dDebt、dCurrent和CQ_CreditReturn的值660依賴于從OfferSC和NeedCredit的比較而產(chǎn)生的分支。
在運算邏輯590的處理的另一分支之后,如果NeedCredit小于或等于(OfferRC-D)630,則該處理被引導(dǎo)到變量值的計算和指定660,如圖6所示;否則,該處理繼續(xù),將輸入信號OfferSC與值(NeedCredit-(OfferRC-D))進行比較640。從OfferSC信號的這一比較640,處理根據(jù)從如圖6中所示的比較而采取的輸出分支,前進到變量值的計算和指派660。
本發(fā)明可包括在具有例如計算機可使用介質(zhì)的制造物品(例如,一個或多個計算機程序產(chǎn)品)中。該介質(zhì)具有在其中的提供或有助于本發(fā)明的能力的例如計算機可讀程序代碼手段或邏輯(例如,指令、代碼、命令等)。該制造物品可以作為一部分包括在計算機系統(tǒng)中或單獨銷售。
此外,可提供至少一個可由機器讀取的程序存儲設(shè)備,該設(shè)備包含了至少一個可由機器執(zhí)行以實現(xiàn)本發(fā)明的能力的指令程序。
這里表示的流程圖只是示例性的??纱嬖趯@些圖或這里描述的步驟(或操作)的許多改變,而不脫離本發(fā)明的精神。例如,可以以不同的順序執(zhí)行這些步驟,或者添加、刪除或更改這些步驟。所有這些變化都被認為是要求保護的本發(fā)明的一部分。
雖然這里詳細地表示和描述了優(yōu)選實施例,但對于相關(guān)領(lǐng)域的技術(shù)人員來說顯而易見地,可以作出各種修改、添加、替換等而不脫離本發(fā)明的精神,因此這些都被認為處于所附權(quán)利要求定義的本發(fā)明的范圍中。
權(quán)利要求
1.一種用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制方法,所述方法包括為數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的多個端口主動管理中心隊列中的空間分配;以及其中該主動管理基于中心隊列中可用的未使用空間的可變數(shù)量。
2.權(quán)利要求1的方法,其中中心隊列中可用的未使用空間包括中心隊列中可用的空出的已分配空間和未分配空間,且上述主動管理進一步包括分別跟蹤中心隊列中當前可用的空出的已分配空間和未分配空間。
3.權(quán)利要求1的方法,其中中心隊列中可用的未使用空間包括中心隊列中當前可用的未分配空間,其中上述主動管理進一步包括根據(jù)規(guī)定的分配規(guī)則向該多個端口提供一定數(shù)量的、中心隊列中當前可用的未分配空間。
4.權(quán)利要求1的方法,其中中心隊列中可用的未使用空間包括空出的已分配空間,且其中上述主動管理進一步包括將該空出的已分配空間提供給該空出的已分配空間當前被指派到的端口。
5.權(quán)利要求1的方法,其中上述主動管理進一步包括由端口信用管理器根據(jù)端口的至少一個虛擬通道的空間需求向該至少一個虛擬通道分配所提供的空間,該所提供的空間包括一定數(shù)量的、中心隊列中未使用的空間。
6.權(quán)利要求5的方法,其中上述一定數(shù)量的未使用空間包括空出的當前指派給該端口的已分配空間和一定數(shù)量的、中心隊列中可用的未分配空間中的至少一個。
7.權(quán)利要求5的方法,其中上述分配進一步包括根據(jù)該至少一個虛擬通道借出的中心隊列空間的數(shù)量判定空間需求,其中所借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的、中心隊列中的空間分配超過目標分配的空間數(shù)量。
8.權(quán)利要求5的方法,其中上述分配進一步包括根據(jù)中心隊列中分派給該至少一個虛擬通道的空間分配中剩余的未使用空間的數(shù)量來判定空間需求,其中該剩余的未使用空間的數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
9.權(quán)利要求5的方法,其中上述分配進一步包括(i)計算由該至少一個虛擬通道借出的中心隊列空間的數(shù)量,其中該借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的、中心隊列中的空間分配超過目標分配的空間數(shù)量;以及(ii)計算分派給該至少一個虛擬通道的、中心隊列空間分配中剩余的未使用空間的數(shù)量,其中該剩余的未使用空間的數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
10.權(quán)利要求9的方法,其中上述分配進一步包括減少所借出的中心隊列空間的數(shù)量,以及利用剩余的所提供空間,如果其存在的話,將分配給該至少一個虛擬通道的中心隊列空間分配中剩余的未使用空間數(shù)量增加到所期望數(shù)量,其中該剩余的所提供空間包括未由輸入端口信用管理器分派用于上述減少的所提供空間。
11.權(quán)利要求5的方法,其中上述主動管理進一步包括將未由上述分配所分派的所提供空間的余量返還給中心隊列。
12.權(quán)利要求11的方法,其中上述主動管理進一步包括將端口信用管理器返還的所提供空間的余量添加到中心隊列中可用的未分配空間。
13.一種用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制系統(tǒng),所述系統(tǒng)包括用于為數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的多個端口主動管理中心隊列中的空間分配的裝置;以及其中該主動管理基于中心隊列中可用的未使用空間的可變數(shù)量。
14.權(quán)利要求13的系統(tǒng),其中中心隊列中可用的未使用空間包括中心隊列中可用的空出的已分配空間和未分配空間,且上述用于主動管理的裝置進一步包括用于分別跟蹤中心隊列中當前可用的空出的已分配空間和未分配空間的裝置。
15.權(quán)利要求13的系統(tǒng),其中中心隊列中可用的未使用空間包括中心隊列中當前可用的未分配空間,其中上述用于主動管理的裝置進一步包括用于根據(jù)規(guī)定的分配規(guī)則向該多個端口提供一定數(shù)量的、中心隊列中當前可用的未分配空間的裝置。
16.權(quán)利要求13的系統(tǒng),其中中心隊列中可用的未使用空間包括空出的已分配空間,且其中上述用于主動管理的裝置進一步包括用于將該空出的已分配空間提供給該空出的已分配空間當前被指派到的端口的裝置。
17.權(quán)利要求13的系統(tǒng),其中上述用于主動管理的裝置進一步包括用于根據(jù)端口的至少一個虛擬通道的空間需求向該至少一個虛擬通道分配所提供的空間的裝置,該所提供的空間包括一定數(shù)量的、中心隊列中未使用的空間。
18.權(quán)利要求17的系統(tǒng),其中上述一定數(shù)量的未使用空間包括空出的當前指派給該端口的已分配空間和一定數(shù)量的、中心隊列中可用的未分配空間中的至少一個。
19.權(quán)利要求17的系統(tǒng),其中上述用于分配的裝置進一步包括用于根據(jù)該至少一個虛擬通道借出的中心隊列空間的數(shù)量判定空間需求的裝置,其中所借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的、中心隊列中的空間分配超過目標分配的空間數(shù)量。
20.權(quán)利要求17的系統(tǒng),其中上述用于分配的裝置進一步包括用于根據(jù)中心隊列中分派給該至少一個虛擬通道的空間分配中剩余的未使用空間數(shù)量來判定空間需求的裝置,其中該剩余的未使用空間數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
21.權(quán)利要求17的系統(tǒng),其中上述用于分配的裝置進一步包括(i)用于計算由該至少一個虛擬通道借出的中心隊列空間數(shù)量的裝置,其中該借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的中心隊列中的空間分配超過目標分配的空間數(shù)量;以及(ii)用于計算分派給該至少一個虛擬通道的中心隊列空間分配中剩余的未使用空間數(shù)量的裝置,其中該剩余的未使用空間的數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
22.權(quán)利要求21的系統(tǒng),其中上述用于分配的裝置進一步包括用于減少所借出的中心隊列空間的數(shù)量的裝置;以及用于利用剩余的所提供空間,如果其存在的話,將分配給該至少一個虛擬通道的中心隊列空間分配中剩余的未使用空間數(shù)量增加到所期望數(shù)量的裝置,其中該剩余的所提供空間包括未由上述用于減少的裝置分派以減少所借出的中心隊列空間數(shù)量的所提供空間。
23.權(quán)利要求17的系統(tǒng),其中上述用于主動管理的裝置進一步包括用于將未由用于分配的裝置分派的所提供空間的余量返還給中心隊列的裝置。
24.權(quán)利要求23的系統(tǒng),其中上述用于主動管理的裝置進一步包括用于將由用于返還的裝置返還的所提供空間的余量添加到中心隊列中可用的未分配空間的裝置。
25.一種用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的隊列管理器,所述隊列管理器包括用于交換節(jié)點的中心隊列控制邏輯,用于跟蹤該交換節(jié)點的中心隊列中未使用空間的可變數(shù)量,并向該交換節(jié)點的多個端口提供一定數(shù)量的未使用空間;以及端口信用管理器,用于將所提供的空間分配給上述多個端口中一個端口的至少一個虛擬通道,該所提供的空間包括由所述中心隊列控制邏輯提供的一定數(shù)量的中心隊列中未使用的空間。
26.權(quán)利要求25的隊列管理器,其中上述中心隊列中未使用的空間包括中心隊列中可用的空出的已分配空間和未分配空間;上述中心隊列控制邏輯分別跟蹤空出的已分配空間和未分配空間;以及端口信用管理器進一步包括多個虛擬通道信用計算器,每個虛擬通道計算器(i)計算由端口的虛擬通道借出的中心隊列空間的數(shù)量,其中該借出的中心隊列空間的數(shù)量包括分派給該虛擬通道的中心隊列中的空間分配超過目標分配的空間數(shù)量;以及(ii)計算分派給該虛擬通道的中心隊列空間分配中剩余的未使用空間的數(shù)量,其中該剩余的未使用空間的數(shù)量包括分派給該虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
27.權(quán)利要求26的隊列管理器,其中每個虛擬通道計算器判定從所提供的空間中返還給中心隊列中可用的未分配空間的多余空間數(shù)量。
28.一種用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點,所述交換節(jié)點包括多個數(shù)據(jù)端口;中心隊列,其用于緩沖由所述多個數(shù)據(jù)端口接收的數(shù)據(jù)包;以及包流控制器,其中所述包流控制器根據(jù)所述中心隊列中可用的未使用空間的可變數(shù)量為所述多個端口主動管理所述中心隊列中的空間分配。
29.至少一個可由機器讀取的程序存儲裝置,其包含至少一個可由該機器執(zhí)行以實現(xiàn)用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制方法的指令程序,所述方法包括為數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的多個端口主動管理中心隊列中的空間分配;以及其中該主動管理基于中心隊列中可用的未使用空間的可變數(shù)量。
30.權(quán)利要求29的至少一個程序存儲裝置,其中中心隊列中可用的未使用空間包括中心隊列中可用的空出的已分配空間和未分配空間,且上述主動管理進一步包括分別跟蹤中心隊列中當前可用的空出的已分配空間和未分配空間。
31.權(quán)利要求29的至少一個程序存儲裝置,其中中心隊列中可用的未使用空間包括中心隊列中當前可用的未分配空間,其中上述主動管理進一步包括根據(jù)規(guī)定的分配規(guī)則向該多個端口提供一定數(shù)量的中心隊列中當前可用的未分配空間。
32.權(quán)利要求29的至少一個程序存儲裝置,其中中心隊列中可用的未使用空間包括空出的已分配空間,且其中上述主動管理進一步包括將該空出的已分配空間提供給該空出的已分配空間當前被指派到的端口。
33.權(quán)利要求29的至少一個程序存儲裝置,其中上述主動管理進一步包括由端口信用管理器根據(jù)端口的至少一個虛擬通道的空間需求向該至少一個虛擬通道分配所提供的空間,該所提供的空間包括一定數(shù)量的中心隊列中未使用的空間。
34.權(quán)利要求33的至少一個程序存儲裝置,其中上述一定數(shù)量的未使用空間包括空出的當前指派給該端口的已分配空間和一定數(shù)量的中心隊列中可用的未分配空間中的至少一個。
35.權(quán)利要求33的至少一個程序存儲裝置,其中上述分配進一步包括根據(jù)該至少一個虛擬通道借出的中心隊列空間的數(shù)量判定空間需求,其中所借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的、中心隊列中的空間分配超過目標分配的空間數(shù)量。
36.權(quán)利要求33的至少一個程序存儲裝置,其中上述分配進一步包括根據(jù)中心隊列中分派給該至少一個虛擬通道的空間分配中剩余的未使用空間數(shù)量來判定空間需求,其中該剩余的未使用空間數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
37.權(quán)利要求33的至少一個程序存儲裝置,其中上述主動管理進一步包括將未由上述分配所分派的所提供空間的余量返還給中心隊列,且上述分配進一步包括(i)計算由該至少一個虛擬通道借出的中心隊列空間的數(shù)量,其中該借出的中心隊列空間的數(shù)量包括分派給該至少一個虛擬通道的、中心隊列中的空間分配超過目標分配的空間數(shù)量;以及(ii)計算分派給該至少一個虛擬通道的中心隊列空間分配中剩余的未使用空間的數(shù)量,其中該剩余的未使用空間的數(shù)量包括分派給該至少一個虛擬通道,但當前未用于存儲所接收數(shù)據(jù)包的數(shù)量。
全文摘要
本發(fā)明提供了一種用于數(shù)據(jù)傳輸網(wǎng)絡(luò)的交換節(jié)點的包流控制方法、系統(tǒng)和程序產(chǎn)品。該方法包括根據(jù)交換節(jié)點的中心隊列中當前可用的未使用空間的數(shù)量,主動管理該中心隊列中分派給該交換節(jié)點的端口的空間分配。在進一步的方面,該方法包括分別跟蹤未分配空間和空出的已分配空間,即已用于緩沖端口所接收的包,但自從上次管理更新以來由于從中心隊列中移除了一個包而空出的空間。向每個端口提供當前分配給該端口的空出的空間和中心隊列中一定數(shù)量的用來分配給該端口的一個或多個虛擬通道的當前未分配的空間。
文檔編號H04L12/28GK1681262SQ20051006331
公開日2005年10月12日 申請日期2005年4月6日 優(yōu)先權(quán)日2004年4月9日
發(fā)明者D·L·加麥爾, J·R·赫林, R·A·林頓, S·H·賴德 申請人:國際商業(yè)機器公司