專利名稱:利用動(dòng)態(tài)資源分配進(jìn)行的大規(guī)模排隊(duì)的可擴(kuò)展方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及網(wǎng)絡(luò)管理,具體涉及控制網(wǎng)絡(luò)設(shè)備中的流量流動(dòng)。
背景技術(shù):
在數(shù)字通信系統(tǒng)中,數(shù)據(jù)通過(guò)網(wǎng)絡(luò)在處理設(shè)備之間傳輸。在這種網(wǎng)絡(luò)中,數(shù)據(jù)一般經(jīng)由網(wǎng)絡(luò)設(shè)備從一個(gè)計(jì)算機(jī)發(fā)送到另一個(gè)計(jì)算機(jī),網(wǎng)絡(luò)設(shè)備例如是由數(shù)據(jù)鏈路互連的集線器、路由器、網(wǎng)橋和/或交換機(jī)。
網(wǎng)絡(luò)設(shè)備具有向數(shù)據(jù)鏈路發(fā)送數(shù)據(jù)、命令等(下文中稱為“數(shù)據(jù)”)并從數(shù)據(jù)鏈路接收數(shù)據(jù)的端口。盡管本公開(kāi)文件將主要涉及以分組形式發(fā)送的數(shù)據(jù),但是本發(fā)明適用于任何可尋址的實(shí)體,包括但不限于數(shù)據(jù)報(bào)、信元等。因此,術(shù)語(yǔ)“分組”、“幀”、“信元”在這里被同義使用。
在單個(gè)網(wǎng)絡(luò)設(shè)備內(nèi),分組在入口端口處被接受,傳送過(guò)網(wǎng)絡(luò)設(shè)備內(nèi)的交換架構(gòu),并在出口端口處被接收,以傳輸?shù)较乱欢螖?shù)據(jù)鏈路上。如果每個(gè)輸入端口維護(hù)單個(gè)先進(jìn)先出(“FIFO”)緩沖器或“隊(duì)列”,則可能出現(xiàn)各種問(wèn)題。
圖1圖示了一個(gè)這樣的問(wèn)題,被稱為線頭(head of line,“HOL”)阻塞。在該HOL阻塞的示例中,多于一個(gè)入口端口在其隊(duì)列頭部有同時(shí)去往相同的出口端口的分組。入口端口105有單個(gè)隊(duì)列106,其中進(jìn)入分組被存儲(chǔ),直到它們被路由到合適的出口端口。類似地,入口端口110和115有相應(yīng)的隊(duì)列111和116。
假設(shè)端口125不在接受分組,而端口120和130是自由的。隊(duì)列116有要去往端口130和端口120的分組,因此這些分組可以被順序發(fā)送。然而,隊(duì)列106和111在線頭都有需要被路由到出口端口125的分組。隊(duì)列106中的第二分組需要到出口端口120,隊(duì)列111中的第二分組需要到出口端口130。即使端口120和130是自由的,但是隊(duì)列106和111中的第二分組也會(huì)被阻塞,這是因?yàn)槊總€(gè)隊(duì)列中的HOL分組無(wú)法發(fā)送。即使端口125正在接受外出分組,在發(fā)送其分組到端口125的隊(duì)列106和111之間也會(huì)有爭(zhēng)用。這種爭(zhēng)用需要在下一個(gè)分組可被發(fā)送之前解決。
為了消除HOL阻塞,提出了虛擬輸出隊(duì)列(VOQ)。在VOQ實(shí)現(xiàn)方式中,入口端口有隊(duì)列庫(kù),其中每個(gè)類別一個(gè)隊(duì)列。類別例如可以包括源、目的地和優(yōu)先級(jí)。分組被存儲(chǔ)在與入口端口相關(guān)聯(lián)的隨機(jī)訪問(wèn)緩沖器中。然而,只有指向數(shù)據(jù)的指針需要被存儲(chǔ)在各個(gè)VOQ中;載荷可以存儲(chǔ)在其他地方(例如,在片外隨機(jī)訪問(wèn)存儲(chǔ)器中)。
在傳統(tǒng)的VOQ實(shí)現(xiàn)方式中,必需的隊(duì)列數(shù)目需要至少等于可能類別的總數(shù)。然而,隨著類別數(shù)的增加,這種實(shí)現(xiàn)方式不再實(shí)用。例如,假設(shè)交換機(jī)有1024個(gè)端口,并且每個(gè)入口端口有包括源、目的地和優(yōu)先級(jí)的類別的VOQ。如果每個(gè)分組可以有1024個(gè)目的地、1024個(gè)源和4個(gè)優(yōu)先級(jí)級(jí)別中的任何一個(gè),則為了路由交換機(jī)內(nèi)的分組將需要超過(guò)4百萬(wàn)個(gè)隊(duì)列。如果隊(duì)列被實(shí)現(xiàn)為芯片上的物理存儲(chǔ)器,則將需要超過(guò)4百萬(wàn)個(gè)物理存儲(chǔ)器。
在考慮到近來(lái)開(kāi)發(fā)的網(wǎng)絡(luò)設(shè)備的高數(shù)據(jù)傳輸速率時(shí),該問(wèn)題惡化加劇了。如果交換機(jī)例如有1000個(gè)以2G/s傳輸分組的入口/出口端口,則有1000個(gè)2G/s數(shù)據(jù)流要管理。如果要管理的數(shù)據(jù)結(jié)構(gòu)有超過(guò)4百萬(wàn)實(shí)體要以皮秒時(shí)間幀進(jìn)行管理,則這對(duì)于在可預(yù)見(jiàn)的將來(lái)可用的硬件來(lái)說(shuō)是不可能的管理問(wèn)題。因此,希望獲得在網(wǎng)絡(luò)設(shè)備內(nèi)交換分組的改進(jìn)方法。
發(fā)明內(nèi)容
提供了用于高效分配和刪除虛擬輸出隊(duì)列的方法和設(shè)備。根據(jù)某些實(shí)現(xiàn)方式,進(jìn)入分組根據(jù)該分組(或分組的分類信息)將要根據(jù)例如“Q”值被存儲(chǔ)在其中的隊(duì)列而被分類。例如,Q值可以是被定義為{出口端口號(hào)||優(yōu)先級(jí)號(hào)||入口端口號(hào)}的Q號(hào)。對(duì)于每個(gè)分類只分配單個(gè)物理隊(duì)列。當(dāng)物理隊(duì)列為空時(shí),該物理隊(duì)列優(yōu)選地被回收,并被加到可用物理隊(duì)列的“自由列表”中。因此,被分配物理隊(duì)列的總數(shù)優(yōu)選地不超過(guò)被分類分組的總數(shù)。
本發(fā)明的某些實(shí)現(xiàn)方式根據(jù)對(duì)具體入口端口可以接收的分組數(shù)目的限制,對(duì)被分配物理隊(duì)列的數(shù)目作出了限制。由于光纖信道(“FC”)和其他協(xié)議的流控制機(jī)制(例如,輸入緩沖需求)對(duì)進(jìn)入分組的數(shù)目給出了限制,所以本發(fā)明的動(dòng)態(tài)分配方法導(dǎo)致物理隊(duì)列的稀疏分配。
根據(jù)本發(fā)明的某些實(shí)現(xiàn)方式,提供了一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法。該方法包括以下步驟對(duì)進(jìn)入分組進(jìn)行分類;確定隊(duì)列是否已被分配給分類;和在隊(duì)列還未被分配給分類時(shí)分配隊(duì)列。隊(duì)列可以與網(wǎng)絡(luò)設(shè)備的入口端口相關(guān)聯(lián)。隊(duì)列可以是虛擬輸出隊(duì)列。
該方法還可以包括檢測(cè)何時(shí)隊(duì)列為空和回收空隊(duì)列的步驟。該方法還可以包括在隊(duì)列被回收時(shí)更新存儲(chǔ)器的步驟,其中存儲(chǔ)器指示分類是否已被分配隊(duì)列。網(wǎng)絡(luò)設(shè)備可以包括指示可用于分配的隊(duì)列的自由列表,其中該方法還包括在隊(duì)列被回收時(shí)更新自由列表。
分類可以是基于分組源、分組目的地或分組優(yōu)先級(jí)的。分類可以包括Q號(hào)。確定步驟可以包括尋址指示分類是否已被分配隊(duì)列的存儲(chǔ)器。
本發(fā)明的某些實(shí)施例提供了一種網(wǎng)絡(luò)設(shè)備,其包括用于對(duì)進(jìn)入分組進(jìn)行分類的分類器;用于確定隊(duì)列是否已被分配給分類的確定器;和用于在隊(duì)列還未被分配給分類時(shí)分配隊(duì)列的分配器。隊(duì)列可以與網(wǎng)絡(luò)設(shè)備的入口端口相關(guān)聯(lián)。隊(duì)列可以是虛擬輸出隊(duì)列。
該網(wǎng)絡(luò)設(shè)備還可以包括用于檢測(cè)何時(shí)隊(duì)列為空的檢測(cè)器和用于回收空隊(duì)列的回收器。
分類可以是基于分組源、分組目的地或分組優(yōu)先級(jí)的。分類可以包括Q號(hào)。
在某些實(shí)施例中,確定器尋址指示分類是否已被分配隊(duì)列的存儲(chǔ)器。網(wǎng)絡(luò)設(shè)備還可以包括用于在隊(duì)列被回收時(shí)更新存儲(chǔ)器的工具,其中存儲(chǔ)器指示分類是否已被分配隊(duì)列。網(wǎng)絡(luò)設(shè)備可以包括指示可用于分配的隊(duì)列的自由列表以及用于在隊(duì)列被回收時(shí)更新自由列表的工具。
本發(fā)明的其他實(shí)現(xiàn)方式提供了一種實(shí)現(xiàn)在機(jī)器可讀介質(zhì)中的計(jì)算機(jī)程序。該計(jì)算機(jī)程序被配置來(lái)控制網(wǎng)絡(luò)設(shè)備執(zhí)行以下步驟對(duì)進(jìn)入分組進(jìn)行分類;確定隊(duì)列是否已被分配給分類;和在隊(duì)列還未被分配給分類時(shí)分配隊(duì)列。
本發(fā)明的其他實(shí)施例提供了一種網(wǎng)絡(luò)設(shè)備。該網(wǎng)絡(luò)設(shè)備包括以下組件被配置來(lái)接收進(jìn)入分組的多個(gè)端口;用于對(duì)進(jìn)入分組進(jìn)行分類的分類引擎;指示隊(duì)列是否已被分配給分類的存儲(chǔ)器;和用于在存儲(chǔ)器指示隊(duì)列還未被分配給分類時(shí)分配隊(duì)列的處理器。存儲(chǔ)器可以例如是內(nèi)容可尋址存儲(chǔ)器或隨機(jī)訪問(wèn)存儲(chǔ)器。
本發(fā)明的其他方面提供了一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法。該方法包括以下步驟在第一時(shí)刻沒(méi)有分配隊(duì)列;接收第一分組;對(duì)第一分組進(jìn)行第一分類;將第一隊(duì)列分配給第一分類;接收第二分組;對(duì)第二分組進(jìn)行第二分類;和確定第一分類是否與第二分類相同。
該方法還可以包括在第一分類不同于第二分類時(shí)分配第二隊(duì)列的步驟。該方法還可以包括在第一分類不同于第二分類時(shí)將第二分組分派給第一隊(duì)列的步驟。
本發(fā)明的其他方面提供了一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法。該方法包括以下步驟確定網(wǎng)絡(luò)設(shè)備的入口端口可以接收的分組的第一數(shù)目;和給入口端口分配第二數(shù)目的物理隊(duì)列,其中第二數(shù)目小于或等于第一數(shù)目。根據(jù)本發(fā)明的某些這樣的方面,網(wǎng)絡(luò)設(shè)備根據(jù)光纖信道協(xié)議進(jìn)行操作,并且確定步驟是基于入口端口保證的緩沖器到緩沖器限額的數(shù)目進(jìn)行的。
該方法還可以包括以下步驟識(shí)別到達(dá)入口端口的每個(gè)分組的類別;將類別相關(guān)到現(xiàn)有的物理隊(duì)列;和在物理隊(duì)列中存儲(chǔ)分組信息。分組信息可以是控制信息,如目的地信息、源信息、優(yōu)先級(jí)信息、載荷類型信息和/或載荷大小信息。該方法可以包括這些附加步驟識(shí)別到達(dá)入口端口的每個(gè)分組的類別;和將類別分派給物理隊(duì)列,其中網(wǎng)絡(luò)設(shè)備只有在對(duì)該類別沒(méi)有現(xiàn)有物理隊(duì)列時(shí)才分配新的物理隊(duì)列。
本發(fā)明的這些和其他的特征將在下面參考附圖進(jìn)行描述。
圖1的框示了線頭阻塞問(wèn)題。
圖2是網(wǎng)絡(luò)設(shè)備的框圖。
圖3圖示了片上VOQ的一種實(shí)現(xiàn)方式的一部分。
圖4的流程圖概述了本發(fā)明的某些方面。
圖5的流程圖概述了本發(fā)明的其他方面。
圖6的框示了用于執(zhí)行本發(fā)明某些方面的網(wǎng)絡(luò)設(shè)備的示例性組件。
圖7的框示了用于執(zhí)行本發(fā)明某些方面的網(wǎng)絡(luò)設(shè)備的示例性組件。
具體實(shí)施例方式
圖2圖示了到達(dá)設(shè)備200的一連串分組,在該示例中設(shè)備200是網(wǎng)絡(luò)設(shè)備。在分組到達(dá)端口201后,它們被分類引擎220分類,分類引擎220可以以軟件、硬件或固件實(shí)現(xiàn)。例如,每個(gè)分組可以根據(jù)控制信息,如其目的地、其源、其優(yōu)先級(jí)、載荷類型等被歸類。
在分類步驟后,每個(gè)分組的控制信息被分派給數(shù)組240中不同的一個(gè)隊(duì)列。數(shù)組240中的每個(gè)隊(duì)列可以例如是微處理器(如ASIC)的先進(jìn)先出(“FIFO”)緩沖器。在該示例中,分組205的控制信息206存儲(chǔ)在隊(duì)列255的頭部。分組215的控制信息216也存儲(chǔ)在隊(duì)列255中。分組210的控制信息211存儲(chǔ)在隊(duì)列250的頭部。
然而,可能需要明顯更多的存儲(chǔ)器的其他分組信息(如載荷)可以存儲(chǔ)在數(shù)據(jù)存儲(chǔ)器230中。數(shù)據(jù)存儲(chǔ)器230例如可以駐留在芯片外存儲(chǔ)器(如SRAM、DRAM等)中。指向存儲(chǔ)器230中存儲(chǔ)的分組信息的指針存儲(chǔ)在數(shù)組240中或與數(shù)組240相關(guān)聯(lián)的存儲(chǔ)器中。下面參考圖3描述這樣一種實(shí)現(xiàn)方式。這樣,減少了對(duì)數(shù)組240中緩沖器的存儲(chǔ)需求。
在VOQ內(nèi),分組通常以到達(dá)順序接受服務(wù)。在VOQ之間,分組的流動(dòng)由“仲裁器”控制,仲裁器使用一種或多種仲裁算法來(lái)調(diào)度入口端口和出口端口之間的分組。這種仲裁是必要的,例如用來(lái)匹配可用的目的地(即,可以接受分組的目的地)與請(qǐng)求源(包含至少一個(gè)分組的隊(duì)列)。仲裁算法將從匹配實(shí)體內(nèi)選擇(例如,以輪詢或加權(quán)優(yōu)先級(jí)方式),以確定接下來(lái)服務(wù)哪一個(gè)分組。
因此,在分類步驟之后是仲裁步驟,其中仲裁器277確定每個(gè)隊(duì)列的內(nèi)容將發(fā)生什么變化。仲裁器277可以根據(jù)本領(lǐng)域技術(shù)人員已知的任何適用的仲裁算法來(lái)進(jìn)行操作。仲裁器277可以以軟件、硬件或固件實(shí)現(xiàn)。
圖3圖示了用于維護(hù)隊(duì)列數(shù)組(如圖2的數(shù)組240)的片上VOQ的一種實(shí)現(xiàn)方式的一部分。根據(jù)某些實(shí)現(xiàn)方式,在隊(duì)列255中,控制信息的每一項(xiàng)具有關(guān)聯(lián)的描述符字段和指示下一控制信息的位置的“下一指針”。描述符字段既包括進(jìn)行分類所基于的控制信息,又包括關(guān)聯(lián)的數(shù)據(jù)分組的載荷的位置。
然而,在其他實(shí)現(xiàn)方式中,進(jìn)行分類所基于的控制信息被“Q”存儲(chǔ)器上的位置所隱含,如下所述。通常,關(guān)聯(lián)載荷的位置也可以被“P”存儲(chǔ)器(如存儲(chǔ)器255)所推斷。因此,在這種實(shí)現(xiàn)方式中,只有下一個(gè)指針是必需的信息。
隊(duì)列255中的第一描述符是用于控制信息206的。因此,該描述符將包括相關(guān)的控制信息(如源、目的地或優(yōu)先級(jí))和分組205的載荷在數(shù)據(jù)存儲(chǔ)器230(見(jiàn)圖2)內(nèi)的位置。在該示例中,數(shù)據(jù)存儲(chǔ)器230是片外隨機(jī)訪問(wèn)存儲(chǔ)器,如SRAM或DRAM。關(guān)聯(lián)的下一個(gè)指針指示控制信息216(隊(duì)列255中的下一個(gè)控制信息)的位置。與控制信息216相關(guān)聯(lián)的“下一個(gè)指針”字段是空值,這是因?yàn)榇藭r(shí)控制信息216是隊(duì)列255中的控制信息的最后一項(xiàng)。
存儲(chǔ)器300包括頭部指針字段305和尾部指針字段310。每個(gè)頭部指針指示在隊(duì)列頭部的控制信息的位置,每個(gè)尾部指針指示在相同隊(duì)列尾部的控制信息的位置。在該示例中,頭部指針315指向隊(duì)列255內(nèi)控制信息206的位置,尾部指針指向控制信息216的位置。存儲(chǔ)器300有深度Q,Q是所有可能分類的數(shù)目。存儲(chǔ)器300的總大小是Q*([HPTR字段305的大小]+[TPTR字段310的大小])。
緩沖器255的大小P取決于輸入緩沖的限制和希望在系統(tǒng)中存儲(chǔ)的分組的相應(yīng)數(shù)目。例如,在光纖信道(“FC”)系統(tǒng)中,希望存儲(chǔ)的每個(gè)源的分組數(shù)目等于鏈路提供的緩沖器到緩沖器限額(credit)的數(shù)目。在FC協(xié)議中,必須向?qū)?yīng)于該限額數(shù)目的多個(gè)分組提供存儲(chǔ)。因此,需要存儲(chǔ)在數(shù)組240中的分組的總數(shù)目就是鏈路的總數(shù)目乘上每個(gè)鏈路的限額數(shù)目所得的值。一般來(lái)說(shuō),在FC交換機(jī)的輸入緩沖器中可以存儲(chǔ)每鏈路16個(gè)分組,但是在某些當(dāng)前的實(shí)現(xiàn)方式中,可以存儲(chǔ)每鏈路256個(gè)分組。如本領(lǐng)域技術(shù)人員所知的,類似的輸入緩沖限制適用于其他協(xié)議和其他類型的網(wǎng)絡(luò)設(shè)備。
圖4的流程圖提供了根據(jù)本發(fā)明某些實(shí)現(xiàn)方式的隊(duì)列的動(dòng)態(tài)、稀疏分配的高級(jí)概圖。步驟405代表在沒(méi)有分組到達(dá)網(wǎng)絡(luò)設(shè)備的入口端口時(shí)的初始時(shí)刻(t=0)。因此,根據(jù)本發(fā)明的某些優(yōu)選實(shí)現(xiàn)方式,還未分配物理隊(duì)列。第一分組到達(dá)(步驟410),并且分組被分類(步驟415)。分組可以根據(jù)任何適當(dāng)?shù)臉?biāo)準(zhǔn),如源、目的地和/或優(yōu)先級(jí)被分類。分類可以例如通過(guò)對(duì)第一分組的字段應(yīng)用散列函數(shù)來(lái)執(zhí)行。
物理隊(duì)列在步驟420被分配,并且第一分組被分派給第一隊(duì)列(步驟425)。物理隊(duì)列可以例如是以上參考圖2和3所述類型的隊(duì)列。在優(yōu)選實(shí)現(xiàn)方式中,將第一分組“分派”給第一隊(duì)列包括在第一自由隊(duì)列中存儲(chǔ)第一分組的分類信息和指針信息。在可替換實(shí)現(xiàn)方式中,將第一分組分派給第一隊(duì)列包括在第一隊(duì)列中存儲(chǔ)第一分組。
在步驟430,下一個(gè)分組到達(dá)端口。分組在步驟432被分類。然后,確定是否存在用于新分組的分類的現(xiàn)有隊(duì)列(步驟435)。該確定可以以任何適當(dāng)?shù)姆绞竭M(jìn)行,例如通過(guò)參考在隨機(jī)訪問(wèn)存儲(chǔ)器中存儲(chǔ)并更新的每隊(duì)列空位來(lái)進(jìn)行。確定步驟的一種優(yōu)選實(shí)現(xiàn)方式將在下面參考圖6描述。
如果對(duì)于新分組的分類已經(jīng)分配了物理隊(duì)列,則分組被分派到現(xiàn)有的物理隊(duì)列。然而,如果對(duì)于新分組的分類還未分配物理隊(duì)列,則在步驟445物理分組被分配,并且在步驟450分組被分派到新的物理隊(duì)列。然后,下一個(gè)分組到達(dá)并被分類,依此類推。
圖4和前述內(nèi)容假設(shè)第二分組(和后續(xù)分組)在第一分組仍然在隊(duì)列中的同時(shí)到達(dá)。如果在下一個(gè)分組到達(dá)之前第一分組應(yīng)當(dāng)離開(kāi),則第一隊(duì)列將被回收。第二分組將重復(fù)應(yīng)用初始分組的所有步驟。根據(jù)上述實(shí)現(xiàn)方式,第二分組將被分配到與分配給第一分組不同的虛擬隊(duì)列中。然而,在可替換實(shí)現(xiàn)方式中,第二分組可以被分配到與分配給第一分組相同的虛擬隊(duì)列中。
優(yōu)選地,物理隊(duì)列在為空并且可用于新分類時(shí)也被動(dòng)態(tài)回收。圖5的流程圖表示了該處理的概圖。在步驟505,選中被分配的物理隊(duì)列,并且確定其是否為空(步驟510)。在某些實(shí)現(xiàn)方式中,步驟505和510在單個(gè)操作中執(zhí)行。如果沒(méi)有空隊(duì)列,則在隨后某個(gè)時(shí)間再次評(píng)估隊(duì)列。例如,可以在下一個(gè)時(shí)鐘周期期間,在經(jīng)過(guò)預(yù)定數(shù)目的時(shí)鐘周期后等等再次評(píng)估隊(duì)列。
在每次傳輸傳輸分組隊(duì)列上傳輸?shù)姆纸M后,就發(fā)生隊(duì)列檢查。當(dāng)分組被傳輸時(shí),隊(duì)列狀態(tài)(空)被更新并被檢查。因此,隊(duì)列分配和回收是事件驅(qū)動(dòng)的。
如果一個(gè)或多個(gè)隊(duì)列被確定為空,則在步驟515隊(duì)列被回收,并且可用于新的分類(步驟520)。優(yōu)選地,與回收隊(duì)列相關(guān)聯(lián)的所有存儲(chǔ)器在此時(shí)被更新,以指示回收隊(duì)列不再與老的分類相關(guān)聯(lián)。
圖6的框示了以上參考圖4和5所述方法的一種優(yōu)選實(shí)現(xiàn)方式。這里,隊(duì)列選擇是通過(guò)將分組分類為值Q來(lái)進(jìn)行的。分類機(jī)制例如可以通過(guò)散列分組字段、通過(guò)查找表等等來(lái)進(jìn)行。所得到的Q值(這里是一個(gè)數(shù))指示將存儲(chǔ)分組的控制信息的隊(duì)列。
將Q號(hào)與以硬件實(shí)現(xiàn)的物理隊(duì)列P的存儲(chǔ)器620的內(nèi)容相比較,從而使有足夠的狀態(tài)存儲(chǔ)介質(zhì)以允許對(duì)系統(tǒng)可存儲(chǔ)的每一個(gè)分組都有單獨(dú)的隊(duì)列。存儲(chǔ)器620優(yōu)選地是內(nèi)容可尋址存儲(chǔ)器(“CAM”),但是也可以是任何其他合適的存儲(chǔ)器,如SRAM。在圖6所示的實(shí)現(xiàn)方式中,存儲(chǔ)器620是具有Q號(hào)字段625和有效位字段630的CAM。并且CAM的每行包括隊(duì)列號(hào)和關(guān)于隊(duì)列是否已被分派的指示。使用CAM作為存儲(chǔ)器620的一個(gè)優(yōu)點(diǎn)是其整個(gè)內(nèi)容可以在一個(gè)周期內(nèi)搜索到。
如果存儲(chǔ)器620是SRAM,則Q號(hào)可以被輸入到SRAM的地址線。從存儲(chǔ)器620輸出的數(shù)據(jù)可以是P值和“命中”指示。
通過(guò)尋址存儲(chǔ)器620,確定出進(jìn)入分組的Q號(hào)是否有分配的物理隊(duì)列P。例如,如果存儲(chǔ)器620是CAM,則存儲(chǔ)器620尋找進(jìn)入分組的Q號(hào)和字段625中的Q號(hào)之間的匹配,并確定字段625中的Q號(hào)在字段630中是否有有效位。如果是的話,則存在“命中”,并且該物理隊(duì)列可以被提供給對(duì)應(yīng)于命中數(shù)的控制信息。如果否的話,則不命中檢測(cè)器635從“自由隊(duì)列”的自由列表640中取得隊(duì)列,自由隊(duì)列是芯片上的自由資源。
自由列表640可以例如是最初具有等于其內(nèi)容的地址的RAM。在一個(gè)示例中,當(dāng)?shù)谝环纸M到達(dá)時(shí)(t=0),沒(méi)有已分配的隊(duì)列。因此,在t=0時(shí),自由列表640將列出所有的隊(duì)列,Q0、Q1等,直到QP。當(dāng)?shù)谝环纸M到達(dá)時(shí),存在不命中,并且第一分組將被分派以從自由列表640中取得的Q0。然后,存儲(chǔ)器620將被告知該分配,并且將對(duì)應(yīng)于Q0的字段630中的位更新為有效位。
在分組被分派到隊(duì)列后,VOQ系統(tǒng)650以本領(lǐng)域技術(shù)人員所知的與傳統(tǒng)VOQ系統(tǒng)類似的方式使用分組和隊(duì)列。然而,在本發(fā)明的VOQ系統(tǒng)和現(xiàn)有技術(shù)的VOQ系統(tǒng)之間存在區(qū)別。例如,VOQ系統(tǒng)650只需要處理P數(shù)據(jù)結(jié)構(gòu),P是比用于相同網(wǎng)絡(luò)設(shè)備傳統(tǒng)VOQ系統(tǒng)使用的隊(duì)列數(shù)少得多的隊(duì)列數(shù)。
另一個(gè)與現(xiàn)有技術(shù)VOQ系統(tǒng)的差別涉及空檢測(cè)器660的使用,空檢測(cè)器660監(jiān)視VOQ系統(tǒng)650并確定何時(shí)隊(duì)列為空。然后,空檢測(cè)器660向自由列表640返回相應(yīng)的Q號(hào),并通知存儲(chǔ)器620,存儲(chǔ)器620將字段630中的相應(yīng)值變?yōu)闊o(wú)效位。
現(xiàn)在參考圖7,適合于實(shí)現(xiàn)本發(fā)明的技術(shù)的網(wǎng)絡(luò)設(shè)備760包括主中央處理單元(CPU)762、接口768和總線767(如PCI總線)。當(dāng)在合適的軟件或固件的控制下動(dòng)作時(shí),CPU 762可負(fù)責(zé)實(shí)現(xiàn)與所期望網(wǎng)絡(luò)設(shè)備的功能相關(guān)聯(lián)的特定功能。例如,當(dāng)被配置為中間路由器時(shí),CPU 762可負(fù)責(zé)分析分組、封裝分組、并轉(zhuǎn)發(fā)分組以傳輸?shù)綑C(jī)頂盒。CPU 762優(yōu)選地在軟件控制下實(shí)現(xiàn)所有這些功能,軟件包括操作系統(tǒng)(如Windows NT)和任何合適的應(yīng)用軟件。
CPU 762可以包括一個(gè)或多個(gè)處理器763,例如來(lái)自Motorola微處理器家族或MIPS微處理器家族的處理器。在可替換實(shí)施例中,處理器763是特殊設(shè)計(jì)的硬件,用于控制網(wǎng)絡(luò)設(shè)備760的操作。在特定實(shí)施例中,存儲(chǔ)器761(如非易失性RAM和/或ROM)也形成CPU 762的一部分。然而,存儲(chǔ)器可以以許多不同的方式耦合到系統(tǒng)。存儲(chǔ)器塊761可用于各種目的,例如緩存和/或存儲(chǔ)數(shù)據(jù)、編程指令等。
接口768一般提供為接口卡(有時(shí)稱為“線路卡”)。通常,其控制通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)分組,有時(shí)還支持與網(wǎng)絡(luò)設(shè)備760一同使用的其他外設(shè)??商峁┑慕涌谟幸蕴W(wǎng)接口、幀中繼接口、線纜接口、DSL接口、令牌環(huán)接口等等。另外,可以提供各種甚高速接口,如快速以太網(wǎng)接口、吉比特以太網(wǎng)接口、ATM接口、HSSI接口、POS接口、FDDI接口、ASI接口、DHEI接口等等。通常,這些接口可以包括適合于與合適媒體通信的端口。在某些情況下,其也可以包括獨(dú)立處理器,有時(shí)還可以包括易失性RAM。獨(dú)立處理器可以控制諸如分組交換、媒體控制和管理之類的通信密集型任務(wù)。通過(guò)提供分離處理器用于通信密集型任務(wù),這些接口允許主微處理器762高效地執(zhí)行路由計(jì)算、網(wǎng)絡(luò)診斷、安全功能等任務(wù)。
盡管圖7所示的系統(tǒng)圖示了本發(fā)明的一個(gè)特定網(wǎng)絡(luò)設(shè)備,但是這并不是可在其上實(shí)現(xiàn)本發(fā)明的唯一網(wǎng)絡(luò)設(shè)備體系結(jié)構(gòu)。例如,經(jīng)常使用具有單個(gè)處理器的體系結(jié)構(gòu)來(lái)處理通信以及路由計(jì)算等。另外,其他類型的接口和媒體也可以與網(wǎng)絡(luò)設(shè)備一同使用。
不考慮網(wǎng)絡(luò)設(shè)備的配置,其可以采用一個(gè)或多個(gè)存儲(chǔ)器或存儲(chǔ)器模塊(例如存儲(chǔ)器塊765),這些存儲(chǔ)器或存儲(chǔ)器模塊被配置用來(lái)存儲(chǔ)用于通用網(wǎng)絡(luò)操作的程序指令和數(shù)據(jù)、以及/或者與上述技術(shù)的功能有關(guān)的其他信息。程序指令例如可以控制操作系統(tǒng)和/或一個(gè)或多個(gè)應(yīng)用程序的操作。
由于可以采用這種信息和程序指令來(lái)實(shí)現(xiàn)這里所述的系統(tǒng)/方法,因此本發(fā)明涉及機(jī)器可讀介質(zhì),其包括用于執(zhí)行這里所述的各種操作的程序指令、狀態(tài)信息等。機(jī)器可讀介質(zhì)的示例包括但不限于諸如硬盤(pán)、軟盤(pán)和磁帶之類的磁介質(zhì);諸如CD-ROM盤(pán)之類的光介質(zhì);磁光介質(zhì);和被特殊配置來(lái)存儲(chǔ)并執(zhí)行程序指令的硬件設(shè)備,如只讀存儲(chǔ)器設(shè)備(ROM)和隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)。本發(fā)明也可以實(shí)現(xiàn)在在合適介質(zhì)上傳播的載波中,如電波、光線、電線等。程序指令的示例既包括諸如由編譯器產(chǎn)生的機(jī)器碼,又包括包含較高級(jí)代碼的文件,這種較高級(jí)代碼可由計(jì)算機(jī)利用解釋器執(zhí)行。
盡管已經(jīng)參考特定實(shí)施例圖示并描述了本發(fā)明,但是本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,可以在不脫離本發(fā)明精神或范圍的前提下對(duì)所公開(kāi)的實(shí)施例作出形式和細(xì)節(jié)上的改變。例如,應(yīng)當(dāng)意識(shí)到,上述功能的至少一部分可以由一個(gè)或多個(gè)設(shè)備(例如微處理器、微處理器集群等)執(zhí)行。本發(fā)明優(yōu)選地實(shí)現(xiàn)在FC交換機(jī)的入口端口處,但是也可以用在以太網(wǎng)交換機(jī)或其他網(wǎng)絡(luò)設(shè)備中。
而且,本發(fā)明可以用在需要對(duì)具有大量類別數(shù)目的信息、對(duì)象等和可以在任何給定時(shí)刻歸類的較少數(shù)目的單元排隊(duì)的任何系統(tǒng)中。例如,本發(fā)明適用于對(duì)具有大量可能特性(如大小、形狀、顏色或其他屬性)的對(duì)象分類并且在任何給定時(shí)刻有較少數(shù)目的可能分類操作的分類機(jī)。例如,本發(fā)明可以實(shí)現(xiàn)在對(duì)具有大量可能顏色(如1000種顏色)的對(duì)象分類并且在任何給定時(shí)刻只能對(duì)較少數(shù)目的對(duì)象(如10個(gè)目標(biāo))進(jìn)行分類的機(jī)器中。考慮到這些和其他的變化,本發(fā)明的范圍應(yīng)當(dāng)參考所附權(quán)利要求確定。
權(quán)利要求
1.一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法,所述方法包括對(duì)進(jìn)入分組進(jìn)行分類;確定隊(duì)列是否已被分配給所述分類;和在所述隊(duì)列還未被分配給所述分類時(shí)分配所述隊(duì)列。
2.如權(quán)利要求1所述的方法,其中所述隊(duì)列與所述網(wǎng)絡(luò)設(shè)備的入口端口相關(guān)聯(lián)。
3.如權(quán)利要求1所述的方法,其中所述隊(duì)列是虛擬輸出隊(duì)列。
4.如權(quán)利要求1所述的方法,還包括檢測(cè)何時(shí)隊(duì)列為空;和回收所述空隊(duì)列。
5.如權(quán)利要求1所述的方法,其中所述隊(duì)列與入口端口相關(guān)聯(lián)。
6.如權(quán)利要求1所述的方法,其中所述分類是基于分組源、分組目的地或分組優(yōu)先級(jí)的。
7.如權(quán)利要求1所述的方法,其中所述分類包括Q號(hào)。
8.如權(quán)利要求1所述的方法,其中所述確定步驟包括尋址指示所述分類是否已被分配隊(duì)列的存儲(chǔ)器。
9.如權(quán)利要求4所述的方法,還包括在隊(duì)列被回收時(shí)更新存儲(chǔ)器,其中所述存儲(chǔ)器指示所述分類是否已被分配隊(duì)列。
10.如權(quán)利要求4所述的方法,其中所述網(wǎng)絡(luò)設(shè)備還包括指示可用于分配的隊(duì)列的自由列表,并且所述方法還包括在隊(duì)列被回收時(shí)更新所述自由列表。
11.一種網(wǎng)絡(luò)設(shè)備,包括用于對(duì)進(jìn)入分組進(jìn)行分類的裝置;用于確定隊(duì)列是否已被分配給所述分類的裝置;和用于在所述隊(duì)列還未被分配給所述分類時(shí)分配所述隊(duì)列的裝置。
12.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述隊(duì)列與所述網(wǎng)絡(luò)設(shè)備的入口端口相關(guān)聯(lián)。
13.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述隊(duì)列是虛擬輸出隊(duì)列。
14.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,還包括用于檢測(cè)何時(shí)隊(duì)列為空的裝置;和用于回收所述空隊(duì)列的裝置。
15.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述隊(duì)列與入口端口相關(guān)聯(lián)。
16.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述分類是基于分組源、分組目的地或分組優(yōu)先級(jí)的。
17.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述分類包括Q號(hào)。
18.如權(quán)利要求11所述的網(wǎng)絡(luò)設(shè)備,其中所述確定裝置包括用于尋址指示所述分類是否已被分配隊(duì)列的存儲(chǔ)器的裝置。
19.如權(quán)利要求14所述的網(wǎng)絡(luò)設(shè)備,還包括用于在隊(duì)列被回收時(shí)更新存儲(chǔ)器的裝置,其中所述存儲(chǔ)器指示所述分類是否已被分配隊(duì)列。
20.如權(quán)利要求14所述的網(wǎng)絡(luò)設(shè)備,其中所述網(wǎng)絡(luò)設(shè)備還包括指示可用于分配的隊(duì)列的自由列表。
21.如權(quán)利要求20所述的網(wǎng)絡(luò)設(shè)備,還包括用于在隊(duì)列被回收時(shí)更新所述自由列表的裝置。
22.一種實(shí)現(xiàn)在機(jī)器可讀介質(zhì)中的計(jì)算機(jī)程序,所述計(jì)算機(jī)程序被配置來(lái)控制網(wǎng)絡(luò)設(shè)備執(zhí)行以下步驟對(duì)進(jìn)入分組進(jìn)行分類;確定隊(duì)列是否已被分配給所述分類;和在所述隊(duì)列還未被分配給所述分類時(shí)分配所述隊(duì)列。
23.一種網(wǎng)絡(luò)設(shè)備,包括被配置來(lái)接收進(jìn)入分組的多個(gè)端口;用于對(duì)進(jìn)入分組進(jìn)行分類的分類引擎;指示隊(duì)列是否已被分配給分類的存儲(chǔ)器;和用于在所述存儲(chǔ)器指示隊(duì)列還未被分配給所述分類時(shí)分配所述隊(duì)列的處理器。
24.如權(quán)利要求23所述的網(wǎng)絡(luò)設(shè)備,其中所述存儲(chǔ)器是內(nèi)容可尋址存儲(chǔ)器。
25.如權(quán)利要求23所述的網(wǎng)絡(luò)設(shè)備,其中所述存儲(chǔ)器是隨機(jī)訪問(wèn)存儲(chǔ)器。
26.一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法,所述方法包括在第一時(shí)刻沒(méi)有分配隊(duì)列;接收第一分組;對(duì)所述第一分組進(jìn)行第一分類;將第一隊(duì)列分配給所述第一分類;接收第二分組;對(duì)所述第二分組進(jìn)行第二分類;和確定所述第一分類是否與所述第二分類相同。
27.如權(quán)利要求26所述的方法,還包括在所述第一分類不同于所述第二分類時(shí)分配第二隊(duì)列的步驟。
28.如權(quán)利要求26所述的方法,還包括在所述第一分類不同于所述第二分類時(shí)將所述第二分組分派給所述第一隊(duì)列的步驟。
29.一種在網(wǎng)絡(luò)設(shè)備中分配隊(duì)列的方法,所述方法包括確定所述網(wǎng)絡(luò)設(shè)備的入口端口可以接收的分組的第一數(shù)目;和給所述入口端口分配第二數(shù)目的物理隊(duì)列,其中所述第二數(shù)目小于或等于所述第一數(shù)目。
30.如權(quán)利要求29所述的方法,其中所述網(wǎng)絡(luò)設(shè)備根據(jù)光纖信道協(xié)議進(jìn)行操作,并且所述確定步驟是基于所述入口端口保證的緩沖器到緩沖器限額的數(shù)目進(jìn)行的。
31.如權(quán)利要求29所述的方法,還包括識(shí)別到達(dá)所述入口端口的每個(gè)分組的類別;將所述類別相關(guān)到現(xiàn)有的物理隊(duì)列;和在所述物理隊(duì)列中存儲(chǔ)分組信息。
32.如權(quán)利要求29所述的方法,還包括識(shí)別到達(dá)所述入口端口的每個(gè)分組的類別;和將所述類別分派給物理隊(duì)列,其中所述網(wǎng)絡(luò)設(shè)備只有在沒(méi)有用于所述類別的現(xiàn)有物理隊(duì)列時(shí)才分配新的物理隊(duì)列。
33.如權(quán)利要求31所述的方法,其中所述分組信息包括選自以下列表的控制信息,所述列表由目的地信息、源信息、優(yōu)先級(jí)信息、載荷類型信息和載荷大小信息組成。
全文摘要
本發(fā)明提供了用于高效分配和刪除虛擬輸出隊(duì)列的方法和設(shè)備。根據(jù)某些實(shí)現(xiàn)方式,進(jìn)入分組根據(jù)該分組(或分組的分類信息)將要根據(jù)例如“Q”值被存儲(chǔ)在其中的隊(duì)列而被分類。例如,Q值可以是被定義為{出口端口號(hào)||優(yōu)先級(jí)號(hào)||入口端口號(hào)}的Q號(hào)。對(duì)于每個(gè)分類只分配單個(gè)物理隊(duì)列。當(dāng)物理隊(duì)列為空時(shí),物理隊(duì)列優(yōu)選地被回收,并被加到可用物理隊(duì)列的“自由列表”中。因此,被分配物理隊(duì)列的總數(shù)優(yōu)選地不超過(guò)被分類的分組的總數(shù)。由于光纖信道(“FC”)和其他協(xié)議的輸入緩沖需求對(duì)進(jìn)入分組的數(shù)目給出了限制,所以本發(fā)明的動(dòng)態(tài)分配方法導(dǎo)致物理隊(duì)列的稀疏分配。
文檔編號(hào)H04L12/56GK1826768SQ200480020777
公開(kāi)日2006年8月30日 申請(qǐng)日期2004年8月3日 優(yōu)先權(quán)日2003年8月25日
發(fā)明者羅伯特·霍夫曼, 雷蒙德·J·克洛特, 艾勒山多·弗里 申請(qǐng)人:思科技術(shù)公司