專利名稱:減少共享存儲器交換機中的存儲池不足的方法和裝置的制作方法
背景技術(shù):
網(wǎng)絡交換機在入口端口接收數(shù)據(jù)分組并將數(shù)據(jù)分組轉(zhuǎn)發(fā)到一個或多個出口端口。交換機根據(jù)包含在數(shù)據(jù)分組中的目的地址來確定數(shù)據(jù)分組要轉(zhuǎn)發(fā)到的出口端口或端口。在將從入口端口接收的數(shù)據(jù)分組轉(zhuǎn)發(fā)之前,將所述數(shù)據(jù)分組存儲在交換機的存儲器中。
交換機中的存儲器可以是存儲在轉(zhuǎn)發(fā)數(shù)據(jù)分組之前的所有接收的數(shù)據(jù)分組的共享存儲器。當接收的數(shù)據(jù)存儲在共享存儲器中時,數(shù)據(jù)分組指針,即,指示接收的數(shù)據(jù)在共享存儲器中的位置的指針,被存儲在一個或多個隊列中。可以按照接收數(shù)據(jù)分組指針的入口端口或傳輸所述指針的出口端口來排列數(shù)據(jù)分組指針。輸出緩沖交換機按照傳輸數(shù)據(jù)分組指針的出口端口排列數(shù)據(jù)分組指針。
共享存儲器由所有的出口端口共享,以及隨機給出口端口分配位置,以存儲要被轉(zhuǎn)發(fā)到出口端口的接收的數(shù)據(jù)分組。通過各個出口端口傳輸?shù)姆纸M的數(shù)量可以急劇地變化,致使在特定出口端口出現(xiàn)暫時的阻塞。如果通過同一個出口端口轉(zhuǎn)發(fā)從多個入口端口接收的數(shù)據(jù)分組或者入口端口與出口端口之間的速度不匹配,例如,入口端口以每秒1千兆位的速度接收數(shù)據(jù)而出口端口以每秒100千兆位的速度傳輸數(shù)據(jù),則暫時阻塞可能會在出口端口產(chǎn)生。
根據(jù)本發(fā)明,提出一種包括共享存儲器中的緩沖區(qū)的預留存儲池的共享存儲器交換機。預留緩沖器的預留存儲池以供出口端口使用。該交換機包括存儲池選擇邏輯,所述存儲池選擇邏輯從預留存儲池選擇出空閑的緩沖區(qū),以存儲從入口端口接收的、要被轉(zhuǎn)發(fā)到出口端口的數(shù)據(jù)。
共享存儲器也包括緩沖區(qū)的共享存儲池。緩沖區(qū)的共享存儲池由多個出口端口共享。當檢測到預留存儲池中不存在空閑緩沖區(qū)時,存儲池選擇邏輯在共享存儲池中選擇出空閑的緩沖區(qū)。
共享存儲器還包括緩沖區(qū)的組播存儲池。該緩沖區(qū)的組播存儲池由多個出口端口共享。當檢測到從入口端口接收到的IP組播數(shù)據(jù)分組時,存儲池選擇邏輯選擇組播存儲池中的空閑緩沖區(qū)。
圖1是共享存儲器交換機的方框圖;圖2是描述預留存儲池、共享存儲池和組播存儲池的圖1所示的共享存儲器的方框圖;圖3是圖1所示的分組存儲管理器中的存儲池選擇邏輯的方框圖;圖4是圖3所示的存儲池計數(shù)器的方框圖;圖5是描述用于選擇圖3所示的存儲池計數(shù)器邏輯實現(xiàn)的存儲池的步驟的流程圖;圖6是描述用于將緩沖區(qū)返給圖3所示的存儲池計數(shù)器邏輯實現(xiàn)的存儲池的步驟的流程圖。
圖1是共享存儲器交換機100。在將在入口端口102接收的所有數(shù)據(jù)轉(zhuǎn)發(fā)到一個或多個出口端口1120-n之前,將所述數(shù)據(jù)存儲在共享存儲器108中。分組存儲管理器106控制對共享存儲器108進行的寫和讀存取。分組存儲管理器106包括存儲池選擇邏輯124。存儲池選擇邏輯124將共享存儲器108邏輯上分區(qū)為如圖2所示的共享存儲池、組播存儲池和多個預留存儲池。在共享存儲器108中沒有實際的物理分區(qū)。
存儲池選擇邏輯124通過選擇存儲池來管理各個存儲池中的緩沖區(qū),其中從所述存儲池中分配緩沖區(qū)。如果分配的用于出口端口112的緩沖區(qū)的數(shù)量小于預留閾值數(shù),從出口端口的預留存儲池中分配緩沖區(qū)。隨后結(jié)合圖2描述存儲池選擇邏輯124。在1999年8月31日David A.Brown申請的申請序列號為09/386,589、名稱為“用于交叉存取的非阻塞分組緩沖區(qū)的方法和裝置(Method and Apparatus for an Interleaved Non-Blocking Packet Buffer)”的未授權(quán)美國專利申請中描述了對共享存儲器108進行的讀和寫存取,這里引入它的全文以作為參考。
交換機100包括入口端口引擎104和出口端口引擎110。在入口端口102順序地接收數(shù)據(jù)分組。入口端口引擎104檢測并處理接收的數(shù)據(jù)分組中的報頭,根據(jù)檢測的報頭來確定將數(shù)據(jù)分組轉(zhuǎn)發(fā)到哪個出口端口1120- n,并且為數(shù)據(jù)分組產(chǎn)生轉(zhuǎn)發(fā)向量114。轉(zhuǎn)發(fā)向量114是具有對應于多個出口端口1120-n的各個端口位映射,表示是否將數(shù)據(jù)分組轉(zhuǎn)發(fā)到那個出口端口1120-n。在1999年12月1日David A.Brown申請的申請序列號為09/453,344、名稱為“用于線速IP組播轉(zhuǎn)發(fā)的方法和裝置(Method andApparatus for Wire-Speed IP Multicast Forwarding)”的未授權(quán)美國專利申請中描述了用來產(chǎn)生轉(zhuǎn)發(fā)向量114的方法和裝置,在這里引入上述示教性的整體以作為參考。轉(zhuǎn)發(fā)向量114被轉(zhuǎn)發(fā)到分組存儲管理器106。
分組存儲管理器106提供對共享存儲器108進行讀和寫操作所用的共享存儲器地址122,并在共享存儲器108中存儲各個數(shù)據(jù)分組的位置,所述數(shù)據(jù)分組存儲在一個或多個出口端口隊列(未示出)中。在2000年4月27日Richard M.Wyatt申請的申請序列號為09/559,190的、名稱為“端口分組排隊(Port Packet Queuing)”的未授權(quán)美國專利申請中描述了用于提供出口端口隊列的方法和裝置,在此引入上述的全部以作為參考。輸出引擎110通過選擇120選擇出要傳輸數(shù)據(jù)分組的多個出口端口1120-n之一,并向選擇的出口端口1120-n提供存儲的數(shù)據(jù)分組。
共享存儲器108存儲從任意一個入口端口102接收的、用于傳輸?shù)饺我庖粋€出口端口1120-n的數(shù)據(jù)分組。交換機100提供由入口端口引擎104對在入口端口102接收的數(shù)據(jù)分組進行處理和由用于在出口端口1120-n上進行轉(zhuǎn)發(fā)的出口端口引擎110對存儲的數(shù)據(jù)分組進行處理的并行處理。
當在一個入口端口102上連續(xù)地接收數(shù)據(jù)分組時,該連續(xù)數(shù)據(jù)可能被分組為數(shù)據(jù)段。各個數(shù)據(jù)段存儲在共享存儲器103的緩沖區(qū)中。因此,緩沖區(qū)的大小取決于數(shù)據(jù)段的大小。數(shù)據(jù)段的大小取決于交換機100所支持的網(wǎng)絡協(xié)議。例如,對于以太網(wǎng)協(xié)議,為數(shù)據(jù)段選擇的大小是64字節(jié),因為對于以太網(wǎng)數(shù)據(jù)分組來說最小的數(shù)據(jù)分組的大小是64字節(jié)。
如果數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,入口端口引擎104也依據(jù)包含在接收的數(shù)據(jù)分組中的報頭進行判斷。交換機100向IP組播組的每個成員轉(zhuǎn)發(fā)IP組播數(shù)據(jù)分組的拷貝。數(shù)據(jù)分組的單個拷貝被存儲在具有組播轉(zhuǎn)發(fā)索引(“MFI”)的共享存儲器108中,正如作為參考而整體引入的1999年12月1日David A.Brown申請的申請序列號為09/453,344、名稱為“用于線速IP組播轉(zhuǎn)發(fā)的方法和裝置(Method and Apparatus for Wire-Speed IP Multicast Forwarding)”的未授權(quán)美國專利申請中所述。IP組播組的成員可以與同一個出口端口112連接,或者與一個以上的出口端口112連接。IP組播數(shù)據(jù)分組的多份拷貝被轉(zhuǎn)發(fā)到出口端口112,每一份拷貝用于和出口端口112連接的IP組播組的成員。如果接收的數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,則入口端口引擎104轉(zhuǎn)發(fā)組播標簽126和轉(zhuǎn)發(fā)向量114,以表示接收的數(shù)據(jù)分組是IP組播數(shù)據(jù)分組。組播標簽126表示接收的數(shù)據(jù)分組是否是IP組播數(shù)據(jù)。如果接收的數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,則可以將一位設置為‘1’來實現(xiàn)組播標簽126。
圖2是圖1所示的、邏輯分區(qū)為共享存儲池200、組播存儲池204和多個預留存儲池2020-202n的共享存儲器108的方框圖。預留存儲池2020-202n是為各個出口端口1120-n設置的。緩沖區(qū)的預留閾值數(shù)值被分配給各個預留存儲池2020-202n。緩沖區(qū)的預留閾值數(shù)值可能僅僅分配給各個出口端口112,以用來存儲存儲數(shù)據(jù)分組。使用共享存儲池200以用于存儲被轉(zhuǎn)發(fā)到任一個出口端口1120-n的數(shù)據(jù)分組。使用組播存儲池204以用于存儲被轉(zhuǎn)發(fā)到任一個出口端口1120-n的IP組播數(shù)據(jù)分組。
當分配的緩沖區(qū)的數(shù)值低于閾值數(shù)值時,從出口端口預留存儲池2020-n中分配緩沖區(qū)。如果預留的可分配緩沖區(qū)的數(shù)值已經(jīng)超過了閾值數(shù)值時,從共享存儲池200中分配緩沖區(qū)。僅能夠從和出口端口1120-n相關的各個預留存儲池2020-202n中為數(shù)據(jù)分組分配緩沖區(qū)。因此,即使共享存儲池200內(nèi)的所有緩沖區(qū)被分配給一個阻塞的出口端口1120-n,用于從非阻塞端口的各個預留存儲池2020-202n給非阻塞的端口分配的緩沖區(qū)是可以利用的。
如果數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,數(shù)據(jù)分組被存儲在共享存儲器108中,以及存儲的數(shù)據(jù)分組的拷貝被轉(zhuǎn)發(fā)到IP組播組的成員。IP組播數(shù)據(jù)分組被存儲在共享存儲器108中,直到已經(jīng)將IP組播數(shù)據(jù)分組轉(zhuǎn)發(fā)到IP組播組的各個成員。
由于可以將存儲的組播數(shù)據(jù)分組轉(zhuǎn)發(fā)到一個以上的出口端口112,所以很難選擇出這種端口預留存儲池202從該預留存儲池202可以分配用于存儲IP組播數(shù)據(jù)分組的緩沖區(qū)。而且,如果沒有保留用于IP組播數(shù)據(jù)分組的獨立的數(shù)值,當從隊列中除去IP多址數(shù)據(jù)分組時,就不能判斷該分組來自預留存儲池202還是共享存儲池200,因為在預留存儲池中可能并沒有為最后IP組播數(shù)據(jù)分組轉(zhuǎn)發(fā)到的出口端口分配緩沖區(qū)。使用用于存儲IP組播數(shù)據(jù)分組的獨立存儲池使得交換機100可以限制用于存儲IP組播數(shù)據(jù)分組所消耗的緩沖區(qū)資源的數(shù)量。因此,使用組播存儲池204以便存儲組播數(shù)據(jù)分組。
圖3是圖1所示的分組存儲管理器106中的存儲池選擇邏輯124的方框圖。存儲池選擇邏輯124包括存儲池計數(shù)器300和存儲池計數(shù)器邏輯302。存儲池計數(shù)器300包括用于共享存儲器108的每個存儲池200、2020-202n、204的計數(shù)器。計數(shù)器狀態(tài)304被轉(zhuǎn)發(fā)到存儲池計數(shù)器邏輯302。
存儲池計數(shù)器邏輯302選擇出存儲池200、2020-202n或204,并根據(jù)計數(shù)器狀態(tài)304,和用于存儲在共享存儲器108的接收的數(shù)據(jù)分組的轉(zhuǎn)發(fā)向量114和組播標簽126從所述存儲池200、2020-202n或204中分配緩沖區(qū)。在選擇了存儲池200、2020-202n或204之后,存儲池計數(shù)器邏輯302產(chǎn)生計數(shù)器遞增-遞減306,以增加或減少存儲池計數(shù)器300的各個計數(shù)器。存儲池計數(shù)器邏輯302也產(chǎn)生緩沖區(qū)可用(buffer available)308。緩沖區(qū)可用308的狀態(tài)表示在共享存儲器108中用于存儲接收的非組播數(shù)據(jù)分組的緩沖區(qū)是否可用。如果在共享存儲池200或在端口預留存儲池202中沒有非組播數(shù)據(jù)分組可用的緩沖區(qū),或者在組播存儲池204中沒有組播數(shù)據(jù)分組可用的緩沖區(qū),則丟棄接收的數(shù)據(jù)分組。
如果存儲了要被轉(zhuǎn)發(fā)到出口端口的接收數(shù)據(jù)的緩沖區(qū)是可用的,則從共享存儲器108的緩沖區(qū)空閑表中分配緩沖區(qū),這正如作為參考而整體引入的1999年8月31日David A.Brown申請的申請序列號為09/386,589、名稱為“用于交叉存取的非阻塞分組緩沖區(qū)的方法和裝置(Method andApparatus for an Interleaved Non-Blocking Packet Buffer”的未授權(quán)美國專利申請中所述。
圖4是圖3所示的存儲池計數(shù)器300的方框圖。存儲池計數(shù)器300包括用于交換機100各個出口端口1120-n的共享空閑計數(shù)器400,總空閑計數(shù)器402,組播空閑計數(shù)器416,預留空閑計數(shù)器428,隊列預留閾值寄存器412端口預留存儲池計數(shù)器4140-n。
總空閑計數(shù)器402存儲共享存儲器108中空閑緩沖區(qū)的總數(shù)。使用共享存儲池200、端口預留存儲池2020-202n和組播存儲池204的緩沖區(qū)的總數(shù)量來預設置總空閑計數(shù)器402。每當從任一個存儲池中分配存儲數(shù)據(jù)分組的緩沖區(qū)時,將總空閑計數(shù)器402減“1”。如果這些存儲池的分配如下預留=500;共享=2000;組播=500,則緩沖區(qū)的總和是3000,它等于可用緩沖區(qū)的總數(shù)。一旦在組播存儲池204中使用了500個數(shù)據(jù)分組,即使在共享存儲池200中存在可以使用的緩沖區(qū),也要丟棄IP組播數(shù)據(jù)分組。
在交換機內(nèi)需要一定數(shù)量的“調(diào)整”。所述調(diào)整包括判斷如何劃分共享存儲器108,以降低在阻塞期間丟棄數(shù)據(jù)分組的概率。當在出口端口突發(fā)沖突的數(shù)據(jù)時,會產(chǎn)生大量的阻塞。根據(jù)突發(fā)長度等因素,丟棄的概率根據(jù)共享存儲器108中的存儲池的超量使用的比率而變化。因此,按照所期望的負載條件,可以修改用于共享存儲器108的存儲池的閾值。
在可選實施例中,超量使用了存儲池200、2020-202n和204。使用共享存儲器108中的物理緩沖區(qū)的總數(shù)值來初始化總空閑計數(shù)器402。共享存儲池200、端口預留存儲池2020-202n和組播存儲池204的緩沖區(qū)的總數(shù)量要比存儲在總空閑計數(shù)器402中的數(shù)值大得多。這樣可以更好地利用共享存儲器108中的緩沖區(qū),但是卻減少了在端口預留存儲池202中可以利用的緩沖區(qū)的這種保證。
例如,如果這些存儲池的分配如下預留存儲池=1000;共享存儲池=2000;組播存儲池=1000,則緩沖區(qū)的總和是4000,但是在共享存儲器108中可用的緩沖區(qū)的總數(shù)值為3000;即,可用緩沖區(qū)的總數(shù)值小于在這些存儲池中的緩沖區(qū)的總和。這樣如果通過交換機100的組播數(shù)據(jù)通信量比單播和廣播數(shù)據(jù)通信量大時,可以更好地利用共享存儲器108中的緩沖區(qū),因為可以將可用緩沖區(qū)總數(shù)量的三分之一分配為用于存儲IP多址數(shù)據(jù)分組。
如果沒有超量使用組播204,當組播存儲池204存滿時,丟棄組播數(shù)據(jù)分組,即使共享存儲器108中存在可用的緩沖區(qū)。因此,隨著超量使用,當共享存儲器108中存在可用緩沖區(qū)時,不太可能丟棄數(shù)據(jù)分組。但是不利之處在于用于非阻塞端口的預留存儲池中的緩沖區(qū)可能是不可用的,即使各個端口預留存儲池202低于它的預留閾值。
共享空閑計數(shù)器400將可用或空閑緩沖區(qū)的數(shù)值存儲在共享存儲池200。共享存儲器108的共享存儲池200中的緩沖區(qū)可以存儲用于任一個出口端口1120-n的數(shù)據(jù)分組。每當從共享存儲池200中分配緩沖區(qū)時,共享空閑計數(shù)器400減“1”。共享存儲池計數(shù)器430表示共享存儲池200中是否還有空閑緩沖區(qū)。共享存儲池計數(shù)器430被傳送到存儲池計數(shù)器邏輯302。
組播空閑計數(shù)器416將可用緩沖區(qū)的數(shù)值存儲在組播存儲池204。端口預留存儲池計數(shù)器4140-n存儲從各個端口預留存儲池2020-202n和共享存儲池200中分配給各個出口端口112的緩沖區(qū)的數(shù)值。隊列預留閾值寄存器412存儲用于分配給端口預留存儲池2020-202n而預留的緩沖區(qū)的數(shù)值。在可選實施例中,各個端口預留存儲池2020-202n可以具有為分配而預留的不同的緩沖區(qū)的數(shù)值,并且因此各個端口預留存儲池計數(shù)器4140-n需要隊列預留閾值寄存器412。
將預留空閑計數(shù)器428預置為為各個出口端口112預留的緩沖區(qū)的總數(shù)量的數(shù)值或預置為小于所述總數(shù)量的數(shù)值。如果將預留空閑計數(shù)器預置為小于總數(shù)的數(shù)值,則向每個出口端口提供更多的預留存儲區(qū),但是出口端口不可能分配在它的各個預留存儲池中的所有緩沖區(qū)。例如,如果有四個預留端口存儲池,各具有100個預留緩沖區(qū),則預留緩沖區(qū)的總量達到400。當接收到轉(zhuǎn)發(fā)至出口端口的數(shù)據(jù)分組時,如果共享存儲池中沒有空閑緩沖區(qū),并且出口端口在它的各個預留端口存儲池中也沒有空閑緩沖區(qū),則丟棄分組,即使在預留存儲池中存在空閑緩沖區(qū)。如果過度使用的各個預留端口存儲池達到150,各個出口端口可以使用預留存儲池中的400個緩沖區(qū)中的最多150個緩沖區(qū)。因此,對于阻塞的端口來說還有更多可用的緩沖區(qū)。然而,由于過度使用,不能保證出口端口分配它的預留存儲池的緩沖區(qū)。例如,在具有四個端口、一個阻塞端口使用了150個緩沖區(qū)的交換機和過度使用的各個預留端口存儲池的數(shù)值達到150的情況下,存在250個可用的緩沖區(qū),用于分配給其它三個端口。
每個計數(shù)器400、402、4140-n、416和428具有由存儲池計數(shù)器邏輯302產(chǎn)生、并附在計數(shù)器遞增-遞減306(圖3)上傳送的遞增-遞減信號422、404、4260-n、410和436。每當從各個存儲池中分配緩沖區(qū)或釋放緩沖區(qū)時,計數(shù)器400、402、4140-n、416和428增加或減少“1”。例如,每當從共享存儲池200中分配緩沖區(qū)時共享空閑計數(shù)器400減“1”,以及每當將緩沖區(qū)釋放回共享存儲池200時增“1”。每當從任一個存儲池中分配緩沖區(qū)時,總空閑計數(shù)器402減“1”,以及每當將緩沖區(qū)釋放回任一個存儲池中時增“1”。
圖5是描述用于選擇共享存儲器108中的存儲池200、2020-202n、204的步驟的流程圖,其中從所述存儲池中分配如圖3所示的存儲池計數(shù)器邏輯302所實現(xiàn)的緩沖區(qū)。結(jié)合圖3和圖4描述圖5。
在步驟500,存儲池計數(shù)器邏輯302等待關于要被存儲在共享存儲器108的接收的數(shù)據(jù)分組的通知。接收的數(shù)據(jù)分組的通知包括由出口端口引擎104轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)向量114和組播標簽126。轉(zhuǎn)發(fā)向量114表示接收的數(shù)據(jù)分組要被轉(zhuǎn)發(fā)的出口端口1120-n。組播標簽126表示數(shù)據(jù)分組是否是IP組播數(shù)據(jù)分組。如果接收到數(shù)據(jù)分組,處理進行步驟502。如果沒有接收到數(shù)據(jù)分組,處理進行步驟500。
在步驟502,存儲池計數(shù)器邏輯302判斷共享存儲器108中是否有用于存儲接收的數(shù)據(jù)分組的可用的緩沖區(qū)。如果總空閑408大于零,則共享存儲器108中的緩沖區(qū)可用??偪臻e408是存儲在總空閑計數(shù)器402中的數(shù)值(圖4)。如果緩沖區(qū)可用,處理進行步驟504。如果緩沖區(qū)不可用,處理進行步驟518。
在步驟504,存儲池計數(shù)器邏輯302判斷接收的數(shù)據(jù)分組是否是IP組播數(shù)據(jù)分組。組播標簽126的狀態(tài)表示數(shù)據(jù)分組是否是IP組播數(shù)據(jù)分組。如果數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,立刻將該數(shù)據(jù)分組存儲在共享存儲器108,以及將存儲的數(shù)據(jù)分組的拷貝轉(zhuǎn)發(fā)到IP組播組的各個成員。可以向一個或多個出口端口1120-n多次轉(zhuǎn)發(fā)該數(shù)據(jù)分組。如果接收的數(shù)據(jù)分組是IP組播數(shù)據(jù)分組,處理進行步驟520。如果接收的數(shù)據(jù)分組不是IP組播數(shù)據(jù)分組,處理進行步驟505。
在步驟505,接收的數(shù)據(jù)分組不是IP組播數(shù)據(jù)分組。因此,必須從共享存儲池200或端口預留存儲池2020-202n中分配緩沖區(qū)。存儲池計數(shù)器邏輯302判斷在任何一個端口預留存儲池2020-202n中是否有可用緩沖區(qū)。如果預留存儲池數(shù)值432大于零,則緩沖區(qū)可用。檢查預留存儲池數(shù)值432,因為可能會過度地使用預留存儲池202。因此,即使與接收的數(shù)據(jù)分組要被轉(zhuǎn)發(fā)的出口端口1120-n相關的隊列數(shù)4340-n比預留閾值418小,也可能在預留存儲池202中沒有可用緩沖區(qū)。如果存在可用緩沖區(qū),則處理進行步驟506。如果不存在可用緩沖區(qū),則處理進行步驟508。
在步驟506,存儲池計數(shù)器邏輯302判斷在各個端口預留存儲池2020-202n中是否有可用緩沖區(qū)。如果與接收的數(shù)據(jù)分組要被轉(zhuǎn)發(fā)的出口端口1120-n相關的隊列數(shù)4340-n比預留閾值418小,則緩沖區(qū)可用。如果緩沖區(qū)可用,則處理進行步驟512。如果緩沖區(qū)不可用,則處理進行步驟508。
在步驟508,共享存儲器108的各個端口預留存儲池2020-202n的緩沖區(qū)不可用。存儲池計數(shù)器邏輯302判斷共享存儲池200中是否有可用緩沖區(qū)。如果共享存儲池數(shù)430比零大,則緩沖區(qū)可用。如果有可用緩沖區(qū),則處理進行步驟510。如果沒有可用緩沖區(qū),則處理進行步驟518。
在步驟510,從共享存儲池200中分配緩沖區(qū)。存儲池計數(shù)器邏輯302通過使用共享的遞增-遞減422來遞減共享空閑計數(shù)器400,以更新共享存儲池200中可用的緩沖區(qū)的數(shù)量。處理進行步驟514。
在步驟512,存儲池計數(shù)器邏輯302通過使用預留的遞增-遞減436來遞減預留空閑計數(shù)器428,以更新端口預留存儲池202中可用的緩沖區(qū)的數(shù)量。處理進行步驟514。
在步驟514,存儲池計數(shù)器邏輯302通過使用遞增-遞減隊列426來遞增端口預留存儲池計數(shù)器414,以更新由出口端口使用的緩沖區(qū)的數(shù)量。按照在轉(zhuǎn)發(fā)向量114中選出的出口端口112來選擇各個端口預留存儲池計數(shù)器414。可以從共享存儲池200或各個端口預留存儲池202中分配用于各個出口端口的緩沖區(qū)。因此,各個預留隊列數(shù)值434可能比預留閾值418大得多。處理進行步驟516。
在步驟516,存儲池計數(shù)器邏輯302通過使用遞增-遞減總量404來遞減總空閑計數(shù)器402,以更新共享存儲器108中空閑緩沖區(qū)的總數(shù)。
在步驟518,共享存儲器108中沒有可用緩沖區(qū)。出口端口112已經(jīng)使用了各個端口預留存儲池202的所有緩沖區(qū)以及使用了共享存儲池200中的所有緩沖區(qū)。丟棄接收的數(shù)據(jù)分組。處理完成。
在步驟520,接收的數(shù)據(jù)分組是IP組播數(shù)據(jù)分組。因此,必須從組播存儲池204中分配緩沖區(qū)。存儲池計數(shù)器邏輯302判斷組播存儲池204中是否存在可用緩沖區(qū)。如果組播存儲池數(shù)420比零大,則緩沖區(qū)可用。如果存在可用緩沖區(qū),則處理進行步驟522。如果不存在可用緩沖區(qū),則處理進行步驟518。
在步驟522,存儲池計數(shù)器邏輯302通過使用遞增-遞減組播410來遞減組播空閑計數(shù)器416,以更新組播存儲池204中的可用緩沖區(qū)的數(shù)量。處理進行步驟524。
在步驟524,存儲池計數(shù)器邏輯302設置組播標簽310,以表示該緩沖區(qū)是為IP組播數(shù)據(jù)分組分配的。組播標簽310和指向共享存儲器108中分配的緩沖區(qū)的指針存儲在一起,其中所述指針存儲在與IP組播數(shù)據(jù)分組要被轉(zhuǎn)發(fā)的各個出口端口112相關的出口端口隊列(未示出)中。處理進行步驟526。
在步驟526,緩沖區(qū)可用于分配。存儲池計數(shù)器邏輯302表示通過baffer available308,緩沖區(qū)可用于存儲接收的數(shù)據(jù)分組。處理完成。
圖6是示出將緩沖區(qū)釋放回圖3所示的存儲池計數(shù)器邏輯302中使用的存儲池的步驟的流程圖。
在步驟600,存儲池計數(shù)器邏輯302等待關于從出口端口引擎110將緩沖區(qū)釋放回共享存儲器108的通知。出口端口引擎110通過轉(zhuǎn)發(fā)到分組存儲管理器106的選擇120來調(diào)度存儲的數(shù)據(jù)分組向出口端口112的轉(zhuǎn)發(fā)。出口端口引擎110包括用于各個出口端口112的出口端口隊列(未示出)。出口端口隊列存儲指向共享存儲器108的分配的緩沖區(qū)的指針。在出口端口引擎110已經(jīng)轉(zhuǎn)發(fā)了數(shù)據(jù)分組之后,可以釋放緩沖區(qū)。如果要釋放緩沖區(qū),則處理進行步驟602。如果未釋放緩沖區(qū),則進行步驟602。
在步驟602,和要釋放的緩沖區(qū)的指針存儲在一起的組播標簽126表示該緩沖區(qū)是否是從組播存儲池204中分配的。如果該緩沖區(qū)是從組播存儲池中分配的,則處理進行步驟605。如果該緩沖區(qū)不是從組播存儲池中分配的,則處理進行步驟604。
在步驟604,存儲池計數(shù)器邏輯302判斷是將該緩沖區(qū)釋放回共享存儲池200還是端口預留存儲池202。存儲池計數(shù)器邏輯302對和數(shù)據(jù)分組將要被轉(zhuǎn)發(fā)的出口端口112相關的預留隊列數(shù)434進行檢查。如果各個預留隊列數(shù)434比預留閾值418大,則該緩沖區(qū)被釋放回共享存儲池200,并進行步驟610。如果各個預留隊列數(shù)434比預留閾值418小,則該緩沖區(qū)被釋放回各個端口預留存儲池202,并進行步驟608。
在步驟605,存儲池計數(shù)器邏輯302判斷是否已經(jīng)將IP組播分組的拷貝轉(zhuǎn)發(fā)到IP組播組的所有成員。在入口端口102(圖1)接收的IP組播數(shù)據(jù)分組被存儲在共享存儲器108中(圖1),直到已經(jīng)將IP組播數(shù)據(jù)分組轉(zhuǎn)發(fā)到IP組播組的所有成員。在已經(jīng)轉(zhuǎn)發(fā)了最后IP組播數(shù)據(jù)分組之后,共享存儲器106中存儲IP組播數(shù)據(jù)分組的緩沖區(qū)被釋放回IP組播存儲池204。
為了確定是否已經(jīng)將IP組播分組的拷貝轉(zhuǎn)發(fā)到IP組播組的所有成員,在端口隊列計數(shù)寄存器(未示出)中存儲已經(jīng)排列的IP組播數(shù)據(jù)分組的端口隊列(未示出)數(shù)量。每當向出口端口110(圖1)轉(zhuǎn)發(fā)IP組播數(shù)據(jù)分組的拷貝時,計數(shù)寄存器減“1”。按照轉(zhuǎn)發(fā)向量114來確定端口隊列的數(shù)量。
如果已經(jīng)將IP組播分組的拷貝轉(zhuǎn)發(fā)到IP組播組的所有成員,則處理進行步驟606。如果未將IP組播分組的拷貝轉(zhuǎn)發(fā)到IP組播組的所有成員,則處理進行步驟600。
在步驟606,存儲池計數(shù)器邏輯302通過使用遞增-遞減組播410來遞增組播空閑計數(shù)器416,以更新組播存儲池204中的可用緩沖區(qū)的數(shù)量。處理進行步驟614。
在步驟608,存儲池計數(shù)器邏輯302通過使用遞增-遞減預留436來遞增預留空閑計數(shù)器428,以更新端口預留存儲池202中使用的緩沖區(qū)的數(shù)量。處理進行步驟612。
在步驟610,存儲池計數(shù)器邏輯302通過使用遞增-遞減422來遞增共享空閑計數(shù)器400,以更新端口共享存儲池200中可用的緩沖區(qū)的數(shù)量。處理進行步驟612。
在步驟612,存儲池計數(shù)器邏輯302通過使用共享的遞增-遞減隊列426來遞減各個端口預留存儲池計數(shù)器414,以更新由出口端口使用的緩沖區(qū)的數(shù)量。處理進行步驟614。
在步驟614,存儲池計數(shù)器邏輯302通過使用遞增-遞減總量404來遞增總空閑計數(shù)器402,以更新共享存儲器108中可用的緩沖區(qū)的總數(shù)量。處理進行步驟616。
在步驟616,通過將指向緩沖區(qū)的指針添加到空閑列表,釋放該緩沖區(qū)。處理完成。
雖然參考優(yōu)選實施例已經(jīng)特別地示出并描述了本發(fā)明,本領域的普通技術(shù)人員應該明白本發(fā)明會有不偏離本發(fā)明所附的權(quán)利要求范圍的各種形式上和細節(jié)上的修改。
權(quán)利要求
1.一種交換機,包括共享存儲器中的緩沖區(qū)的預留存儲池,所述緩沖區(qū)的預留存儲池為出口端口所預留;共享存儲器中的緩沖區(qū)的共享存儲池,所述緩沖區(qū)的共享存儲池由多個出口端口共享;和存儲池選擇邏輯,選擇從預留存儲池中分配的空閑緩沖區(qū),以存儲從入口端口接收的、要被轉(zhuǎn)發(fā)到出口端口的數(shù)據(jù),并在將數(shù)據(jù)轉(zhuǎn)發(fā)到出口端口之后,釋放所選的緩沖區(qū)。
2.如權(quán)利要求1所述的交換機,其特征在于當檢測到預留存儲池中沒有空閑緩沖區(qū)時,存儲池選擇邏輯在共享存儲池中選擇出空閑緩沖區(qū)。
3.如權(quán)利要求1所述的交換機,其特征在于還包括在共享存儲器中的、由多個出口端口共享的緩沖區(qū)的組播存儲池。
4.如權(quán)利要求3所述的交換機,其特征在于當檢測到從入口端口接收的IP組播數(shù)據(jù)分組時,存儲池選擇邏輯從組播存儲池中選出空閑緩沖區(qū)。
5.如權(quán)利要求3所述的交換機,其特征在于還包括存儲共享存儲器中的空閑緩沖區(qū)數(shù)量的總空閑計數(shù)器,總空閑計數(shù)器被預設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總和比共享存儲器中的緩沖區(qū)的總數(shù)量多。
6.如權(quán)利要求3所述的交換機,其特征在于還包括存儲共享存儲器中空閑緩沖區(qū)的數(shù)量的總空閑計數(shù)器,總空閑計數(shù)器被預設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總和等于共享存儲器中的緩沖區(qū)的總數(shù)量。
7.如權(quán)利要求5所述的交換機,其特征在于所述存儲池選擇邏輯根據(jù)存儲在總空閑計數(shù)器的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器中可用的空閑緩沖區(qū)。
8.如權(quán)利要求6所述的交換機,其特征在于所述存儲池選擇邏輯根據(jù)存儲在總空閑計數(shù)器的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器中可用的空閑緩沖區(qū)。
9.一種交換機,包括共享存儲器中的緩沖區(qū)的預留存儲池,所述緩沖區(qū)的預留存儲池為出口端口所預留;共享存儲器中的緩沖區(qū)的共享存儲池,所述緩沖區(qū)的共享存儲池由多個出口端口共享;裝置,用于選擇從預留存儲池中分配的空閑緩沖區(qū),所述預留存儲池用于存儲從入口端口接收的、要被轉(zhuǎn)發(fā)到出口端口的數(shù)據(jù);和裝置,用于在轉(zhuǎn)發(fā)完數(shù)據(jù)之后,釋放所選的緩沖區(qū)。
10.如權(quán)利要求9所述的交換機,其特征在于當檢測到預留存儲池中不存在空閑緩沖區(qū)時,用于選擇的裝置在共享存儲池中選出空閑緩沖區(qū)。
11.如權(quán)利要求9所述的交換機,其特征在于還包括在共享存儲器中的、由多個出口端口共享的緩沖區(qū)的組播存儲池。
12.如權(quán)利要求11所述的交換機,其特征在于當檢測到從出口端口接收的IP組播數(shù)據(jù)分組時,用于選擇的裝置從組播存儲池中選出空閑緩沖區(qū)。
13.如權(quán)利要求12所述的交換機,其特征在于還包括用于計數(shù)共享存儲器中的空閑緩沖區(qū)數(shù)量的裝置,所述用于計數(shù)的裝置被預設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總和比共享存儲器中的緩沖區(qū)的總數(shù)量多。
14.如權(quán)利要求12所述的交換機,其特征在于還包括用于計算共享存儲器中的空閑緩沖區(qū)數(shù)量的裝置,所述用于計數(shù)的裝置被預設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總和等于共享存儲器中的緩沖區(qū)的總數(shù)量。
15.如權(quán)利要求13所述的交換機,其特征在于用于選擇空閑緩沖區(qū)的裝置根據(jù)存儲在用于計數(shù)的裝置中的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器中的可用的空閑緩沖區(qū)。
16.如權(quán)利要求14所述的交換機,其特征在于用于選擇空閑緩沖區(qū)的裝置根據(jù)存儲在用于計數(shù)的裝置中的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器中的可用的空閑緩沖區(qū)。
17.一種用于管理交換機的共享存儲器的方法,包括以下步驟提供共享存儲器中的緩沖區(qū)的預留存儲池,所述緩沖區(qū)的預留存儲池為出口端口所預留;提供共享存儲器中的緩沖區(qū)的共享存儲池,所述緩沖區(qū)的共享存儲池由多個出口端口共享;選擇從預留存儲池中分配的空閑緩沖區(qū),用于存儲從入口端口接收的、要被轉(zhuǎn)發(fā)到出口端口的數(shù)據(jù);和在將數(shù)據(jù)轉(zhuǎn)發(fā)到出口端口之后,釋放所選的緩沖區(qū)。
18.如權(quán)利要求17所述的方法,其特征在于當檢測到預留存儲池中不存在空閑緩沖區(qū)時,所述的選擇步驟在共享存儲池中選擇出空閑緩沖區(qū)。
19.如權(quán)利要求17所述的方法,其特征在于還包括步驟提供共享存儲器中的、由多個出口端口共享的緩沖區(qū)的組播存儲池。
20.如權(quán)利要求19所述的方法,其特征在于當檢測到從出口端口接收的IP組播數(shù)據(jù)分組時,所述選擇步驟從組播存儲池中選擇出空閑緩沖區(qū)。
21.如權(quán)利要求20所述的交換機,其特征在于還包括提供用于計數(shù)共享存儲器中的空閑緩沖區(qū)的數(shù)量的總空閑計數(shù)器,所述總空閑計數(shù)器被預設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總數(shù)量比共享存儲器中的緩沖區(qū)的總數(shù)量多。
22.如權(quán)利要求20所述的交換機,其特征在于還包括提供用于計數(shù)共享存儲器中的空閑緩沖區(qū)的數(shù)量的總空閑計數(shù)器,所述總空閑計數(shù)器被設置為共享存儲器中的緩沖區(qū)的總數(shù)量,其中組播存儲池、預留存儲池和共享存儲池的緩沖區(qū)的總數(shù)量等于共享存儲器中的緩沖區(qū)的總數(shù)量。
23.如權(quán)利要求21所述的交換機,其特征在于還包括步驟根據(jù)存儲在總空閑計數(shù)器中的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器的可用的空閑緩沖區(qū)。
24.如權(quán)利要求22所述的交換機,其特征在于還包括步驟根據(jù)存儲在總空閑計數(shù)器中的共享存儲器的空閑緩沖區(qū)的數(shù)量來確定共享存儲器的可用的空閑緩沖區(qū)。
全文摘要
一種包括共享存儲器中的緩沖區(qū)的預留存儲池的交換機。該預留存儲池預留為出口端口專用。所述交換機包括存儲池選擇邏輯,從預留存儲池中選擇用于存儲從入口端口接收的、被轉(zhuǎn)發(fā)到出口端口的數(shù)據(jù)的空閑緩沖區(qū)。共享存儲器也包括緩沖區(qū)的共享存儲池。該緩沖區(qū)的共享存儲池由多個出口端口共享。當檢測到預留存儲池中不存在空閑緩沖區(qū)時,存儲池選擇邏輯在共享存儲池中選出空閑緩沖區(qū)。該共享存儲器也可以包括緩沖區(qū)的組播存儲池。緩沖區(qū)的組播存儲池由多個出口端口共享。當檢測到從入口端口接收的IP組播數(shù)據(jù)分組時,存儲池選擇邏輯在組播存儲池中選出空閑緩沖區(qū)。
文檔編號H04L12/56GK1444812SQ01813306
公開日2003年9月24日 申請日期2001年7月20日 優(yōu)先權(quán)日2000年7月24日
發(fā)明者戴維·A·布朗 申請人:睦塞德技術(shù)公司