專(zhuān)利名稱:在基于硬件的包交換中用于存儲(chǔ)器有效的快速vlan查找和插入的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明通常涉及數(shù)據(jù)處理領(lǐng)域,并且特別涉及在基于硬件的包交換中進(jìn)行存儲(chǔ)器有效的快速VLAN查找和插入。
背景技術(shù):
隨著計(jì)算裝置和網(wǎng)絡(luò)裝置變得越來(lái)越快,常規(guī)方法已經(jīng)不能夠滿足數(shù)據(jù)表格管理中的速度需求。例如,密鑰查找的速度已經(jīng)成為許多裝置和應(yīng)用中的關(guān)鍵點(diǎn),并且有時(shí)候成為瓶頸,其必須在表格中快速查找出與密鑰相關(guān)聯(lián)的數(shù)據(jù)。密鑰可以是用作索引或找到附加數(shù)據(jù)的查找標(biāo)準(zhǔn)的任何數(shù)據(jù)片段,但是在網(wǎng)絡(luò)語(yǔ)境中,密鑰通常為網(wǎng)際協(xié)議(IP)地址、媒體訪問(wèn)控制(MAC)地址、虛擬局域網(wǎng)(VLAN)標(biāo)志、和其它網(wǎng)絡(luò)標(biāo)識(shí)符。
提高密鑰查找速度的方案有時(shí)候取決于用來(lái)存儲(chǔ)所查找數(shù)據(jù)表格的存儲(chǔ)器的特征。隨機(jī)存取存儲(chǔ)器(RAM)在通過(guò)地址表示的特定位置存儲(chǔ)數(shù)據(jù)。當(dāng)將該地址提供給RAM,RAM就返回其中所存儲(chǔ)的數(shù)據(jù)。然而為了找到正確的地址,需要將所有密鑰的索引進(jìn)行排序并查找與該密鑰相關(guān)聯(lián)的地址,或者必須查找所有相關(guān)聯(lián)的數(shù)據(jù)條目,以找到該密鑰的表示及其相關(guān)聯(lián)的RAM地址?,F(xiàn)有許多查找算法,可以縮短查找與密鑰相關(guān)聯(lián)的地址的查找時(shí)間。
有一種類(lèi)型的硬件存儲(chǔ)器,按內(nèi)容存取存儲(chǔ)器(CAM)通過(guò)根據(jù)該數(shù)據(jù)內(nèi)容本身、而不是根據(jù)其在存儲(chǔ)器中的地址來(lái)檢索該數(shù)據(jù),可以提高查找所存儲(chǔ)的數(shù)據(jù)條目的速度。當(dāng)將數(shù)據(jù)提供給CAM,該CAM直接返回找到相關(guān)數(shù)據(jù)的地址。對(duì)于許多應(yīng)用,通過(guò)將所想要的信息同時(shí)與所存儲(chǔ)數(shù)據(jù)條目的整個(gè)列表比較,CAM比常規(guī)存儲(chǔ)器查找算法具有更好的性能。因此,在查找時(shí)間是重點(diǎn)并且查找時(shí)間被限制非常短的應(yīng)用中使用CAM。
不幸的是,離散硬件和集成電路CAM的實(shí)現(xiàn)在芯片區(qū)域要求和/或設(shè)計(jì)復(fù)雜性上都相對(duì)要昂貴。在某些應(yīng)用中,可以使用直接映射緩存來(lái)替代CAM,但是這樣就失去了CAM可以將數(shù)據(jù)條目放置在數(shù)據(jù)結(jié)構(gòu)中任意位置的特征,并且引入了諸如數(shù)據(jù)沖突和未使用存儲(chǔ)器區(qū)域的不期望的特征。
通過(guò)范例的方式、而不是通過(guò)限制的方式對(duì)本發(fā)明進(jìn)行說(shuō)明,在所列的附圖中類(lèi)似的附圖標(biāo)記表示相似的元件,其中圖1的方框圖是根據(jù)本發(fā)明網(wǎng)絡(luò)實(shí)施例的計(jì)算網(wǎng)絡(luò)系統(tǒng)的范例,其使用了表格管理引擎(TME)范例;圖2的方框圖為根據(jù)本發(fā)明一個(gè)實(shí)施例的TME范例;圖3的圖形表示為根據(jù)本發(fā)明的一個(gè)實(shí)施例、根據(jù)密鑰的內(nèi)容檢索和/或訪問(wèn)存儲(chǔ)器范例;圖4的方框圖為圖2的執(zhí)行表格引擎范例;圖5的圖形表示為根據(jù)本發(fā)明的數(shù)據(jù)插入實(shí)施例的、自由數(shù)據(jù)條目存儲(chǔ)器區(qū)域的鏈表范例;圖6的圖形表示為根據(jù)本發(fā)明的數(shù)據(jù)刪除實(shí)施例的、自由數(shù)據(jù)條目存儲(chǔ)器區(qū)域的鏈表范例;圖7的流程圖為根據(jù)本發(fā)明一個(gè)實(shí)施例的、數(shù)據(jù)條目檢索方法的范例;圖8的流程圖為根據(jù)本發(fā)明一個(gè)實(shí)施例的、密鑰插入方法的范例;圖9的流程圖為根據(jù)本發(fā)明一個(gè)實(shí)施例的、數(shù)據(jù)條目刪除方法的范例;和圖10的圖形表示為包括內(nèi)容的存儲(chǔ)器媒體范例,其中當(dāng)執(zhí)行這些內(nèi)容時(shí)會(huì)使得訪問(wèn)的機(jī)器實(shí)施TME的一個(gè)或多個(gè)實(shí)施例、方面、和/或方法。
具體實(shí)施例方式
本發(fā)明通常涉及在基于硬件的包交換中用于存儲(chǔ)器有效的快速VLAN查找和插入的方法和設(shè)備。
根據(jù)本發(fā)明教導(dǎo),引入表格管理引擎(TME)以提高數(shù)據(jù)表格查找和管理。因?yàn)橛蟹浅6嗟挠?jì)算和網(wǎng)絡(luò)裝置可以存儲(chǔ)和檢索數(shù)據(jù),TME可以改善許多類(lèi)型的表格、列表和數(shù)據(jù)庫(kù)的數(shù)據(jù)查找速度和管理性能。例如,在數(shù)據(jù)通信領(lǐng)域中,TME可以提高使用地址表、翻譯表、過(guò)濾表、和/或VLAN規(guī)則表的裝置和應(yīng)用的速度。
實(shí)施本發(fā)明各方面的范例環(huán)境圖1的方框圖為范例計(jì)算網(wǎng)絡(luò)100,其中TME 102、104和106可以提高數(shù)據(jù)包交換和路由的性能。所述的范例網(wǎng)絡(luò)100包括路由器112、兩個(gè)交換機(jī)108、110和六個(gè)如圖所示通信連接的計(jì)算主機(jī)120-130。該范例計(jì)算網(wǎng)絡(luò)110被邏輯地劃分為VLAN A 114、VLAN B 116和VLANC 118。范例的網(wǎng)絡(luò)裝置、諸如所示交換機(jī)108、110和路由器112典型的使用內(nèi)表以將所接收到的每一數(shù)據(jù)包的源地址與存儲(chǔ)在該表格中目的地信息關(guān)聯(lián)起來(lái)。
使用VLAN規(guī)則作為目的地信息的范例,每一VLAN規(guī)則可以是一個(gè)或多個(gè)端口和/或目的地地址和/或其它包導(dǎo)向信息。相應(yīng)的,按照特定的VLAN規(guī)則導(dǎo)向(根據(jù)該裝置)將每一數(shù)據(jù)包發(fā)送到適當(dāng)?shù)挠布刂泛?或IP地址。雖然所描述的計(jì)算網(wǎng)絡(luò)100是一個(gè)提供其中可以實(shí)施TME102、104和106的上下文的環(huán)境,也可以使用許多其它環(huán)境和應(yīng)用。
當(dāng)計(jì)算網(wǎng)絡(luò)100路由和導(dǎo)向數(shù)據(jù)包時(shí),一個(gè)或多個(gè)TME 102、104和106可以適用于各種參與網(wǎng)路的組件,諸如可以適用于所述的路由器112以及兩個(gè)交換機(jī)108和110。TME 102、104和106可以在主機(jī)120-130、以及客戶機(jī)中實(shí)施。實(shí)際上,可以在計(jì)算網(wǎng)絡(luò)100的任何部分中使用TME 102、104和106,其中出現(xiàn)有數(shù)據(jù)查找和/或保留信息表格。
TME 102、104和106可以增強(qiáng)計(jì)算網(wǎng)絡(luò)100中的IP地址、端口地址和硬件地址表格的性能和管理。當(dāng)裝置中接收到數(shù)據(jù)包的時(shí)候,其中該裝置使用數(shù)據(jù)包中的信息來(lái)決定對(duì)數(shù)據(jù)包的轉(zhuǎn)發(fā),TME(102、104、106)使用數(shù)據(jù)包的內(nèi)容來(lái)直接在表格中索引,該表格存儲(chǔ)有(或其可以存儲(chǔ))對(duì)應(yīng)于該數(shù)據(jù)包的數(shù)據(jù)條目。該數(shù)據(jù)條目用于具有相同內(nèi)容的、或可以被讀出和/或散列出以提供相同內(nèi)容的其他數(shù)據(jù)包。
該數(shù)據(jù)條目包含轉(zhuǎn)發(fā)信息。換言之,來(lái)自該數(shù)據(jù)包的內(nèi)容直接用作查找該密鑰所關(guān)聯(lián)的數(shù)據(jù)條目的存儲(chǔ)器地址,而不需要進(jìn)一步執(zhí)行對(duì)密鑰列表的遍歷,以找到該密鑰的存儲(chǔ)器地址。用最簡(jiǎn)單的話說(shuō),基本上該密鑰內(nèi)容就用作存儲(chǔ)器地址。TME 102、104和106執(zhí)行通過(guò)內(nèi)容對(duì)存儲(chǔ)器尋址的這一功能,而不需要附加的已知CAM的硬件元件。
在所述的計(jì)算網(wǎng)絡(luò)100中,在具有TME 104的第一交換機(jī)108中接收到VLAN A 114中第一主機(jī)120的數(shù)據(jù)包。該TME 104讀取和/或散列該數(shù)據(jù)包,以找到所需內(nèi)容,諸如VLAN A114的VLAN標(biāo)志。該內(nèi)容對(duì)應(yīng)于表格中的區(qū)域,其中該表格的建立使得表格區(qū)域?qū)?yīng)于可從數(shù)據(jù)包中獲得(可讀取和/或散列)的各種內(nèi)容。于是該內(nèi)容就直接提供用于到該表格中索引、并獲得該數(shù)據(jù)包的目標(biāo)信息(或者指向該目標(biāo)信息的指針)的地址,而不需要使用查找算法來(lái)查找對(duì)應(yīng)于該內(nèi)容的存儲(chǔ)器地址。該目標(biāo)信息可以是具有端口和地址信息的VLAN規(guī)則。不需要已知CAM硬件元件就可以通過(guò)內(nèi)容執(zhí)行對(duì)表格的尋址。使用該密鑰的數(shù)據(jù)條目中的目標(biāo)信息,將該數(shù)據(jù)包轉(zhuǎn)發(fā)給也具有TME 106的第二交換機(jī)110。如上所述,該TME 106也通過(guò)內(nèi)容對(duì)其數(shù)據(jù)條目表格進(jìn)行尋址,并將該數(shù)據(jù)包導(dǎo)向給路由器112。該路由器也具有TME 102,其功能如上所述。于是,該數(shù)據(jù)包被導(dǎo)向和路由通過(guò)各種網(wǎng)絡(luò)裝置,到達(dá)其最終目的地,VLAN A114中的第二主機(jī)122。TME 102、104和106比已知的非CAM方法提供更快的數(shù)據(jù)包導(dǎo)向,并且在所述的范例中,其在比已知方法更加有效的使用存儲(chǔ)器的同時(shí)還提供更快的VLAN查找,而已知方法需要檢索和/或查找算法來(lái)找到每一密鑰的存儲(chǔ)器地址。
范例結(jié)構(gòu)圖2的結(jié)構(gòu)圖為根據(jù)本發(fā)明一個(gè)實(shí)施例的、用于提高一個(gè)或多個(gè)存儲(chǔ)器中(在存儲(chǔ)器中)數(shù)據(jù)表格203、205性能的范例TME 200。提供了范例部件的概觀,以介紹范例結(jié)構(gòu)。在該實(shí)施例中,TME 200包括閱讀器/散列器(閱讀器)206、執(zhí)行表格引擎208、自由列表引擎210、自由區(qū)域頭指針寄存器212和控制元件214,其按照如圖所述通信耦合。TME200與存儲(chǔ)控制器215耦合,該存儲(chǔ)控制器與存儲(chǔ)器中的表格203、205耦合??梢允褂枚嘤谝粋€(gè)的存儲(chǔ)控制器215。在該實(shí)施方式中,第一表格203包含數(shù)據(jù)條目(“數(shù)據(jù)條目表格”203),第二表格205包含指針和有效位(“指針表格”205)。應(yīng)該注意到,包括在TME 200中的或被TME 200使用的表格203、205可以被正確的稱作為單表或多表,因?yàn)樗鼈兌际窍嚓P(guān)的,并且可以在不同的存儲(chǔ)器或存儲(chǔ)器部分中按照各種方式劃分。
為了解釋本發(fā)明的各個(gè)方面,第一表格203也可以稱為第一存儲(chǔ)器203和/或數(shù)據(jù)條目存儲(chǔ)器203。第二表格205也可以稱為第二存儲(chǔ)器205和/或指針存儲(chǔ)器205。相應(yīng)的,表格中的具體區(qū)域也可以稱為存儲(chǔ)器區(qū)域。本領(lǐng)域的熟練技術(shù)人員會(huì)理解,此處第一表格203和第二表格205以及具體區(qū)域的這些替換術(shù)語(yǔ)基本上相同,因?yàn)樵谟?jì)算和網(wǎng)絡(luò)裝置中使用的表格通常在存儲(chǔ)器中實(shí)現(xiàn)。表格和/或存儲(chǔ)器中的數(shù)據(jù)條目、指針和有效位也可以存儲(chǔ)在不同的裝置中。
按內(nèi)容的存儲(chǔ)器尋址能力范例TME 200接收到數(shù)據(jù),諸如密鑰216和/或數(shù)據(jù)條目290。如果該應(yīng)用是計(jì)算網(wǎng)絡(luò)100,密鑰216可以是包括在數(shù)據(jù)包/數(shù)據(jù)報(bào)的報(bào)頭中的硬件地址、軟件地址、和/或VLAN標(biāo)志,但是在其它非IP應(yīng)用中,密鑰216可以是任何數(shù)據(jù)。從該密鑰216中獲得的內(nèi)容用于在表格/存儲(chǔ)器區(qū)域中直接尋址和/或索引。這里使用的“直接”意思指不需要使用查找算法來(lái)對(duì)包含多個(gè)密鑰或其它數(shù)據(jù)條目的列表和/或索引文件進(jìn)行排序,以將存儲(chǔ)在列表/索引文件中的存儲(chǔ)器地址與該密鑰216關(guān)聯(lián)。例如,如圖3中所示,來(lái)自密鑰的范例302的內(nèi)容值“7”基本上就是該密鑰的存儲(chǔ)器區(qū)域304的地址和/或位置“7”,從而提供了對(duì)標(biāo)準(zhǔn)類(lèi)型的存儲(chǔ)器諸如RAM進(jìn)行對(duì)內(nèi)容的尋址能力,并且避免了對(duì)密鑰、內(nèi)容或記錄的列表的遍歷。
返回到圖2,閱讀器206使用密鑰216中的全部或部分?jǐn)?shù)據(jù)從密鑰216中獲得內(nèi)容。也就是,除了僅僅讀取密鑰216以獲得其內(nèi)容之外,閱讀器206也可以通過(guò)散列全部或部分密鑰216來(lái)獲得內(nèi)容。在這一點(diǎn)上,通過(guò)閱讀器206所確定的內(nèi)容并非必須是該密鑰中數(shù)據(jù)的一對(duì)一的文字翻譯。對(duì)該閱讀器206以及所獲得內(nèi)容的唯一要求就是,通??梢詮慕o定密鑰216中獲得相同的內(nèi)容。在網(wǎng)路環(huán)境中,這就意味著產(chǎn)生相同內(nèi)容的數(shù)據(jù)包會(huì)被導(dǎo)向到相同的目的地。除了直接讀取和/或散列密鑰216來(lái)獲得內(nèi)容之外,也可以用預(yù)定內(nèi)容代替由閱讀器206讀取的實(shí)際內(nèi)容來(lái)獲得內(nèi)容,也就是,通過(guò)位掩蔽、和/或通過(guò)其它可從給定密鑰216產(chǎn)生復(fù)制內(nèi)容的方法。
為了進(jìn)一步描述根據(jù)本發(fā)明一方面的內(nèi)容的尋址能力,如圖2所示,密鑰的指針224在第二表格205的第四(從零數(shù)起)位置246具有內(nèi)容“4”,密鑰的指針226在第二表格205的第六位置250具有內(nèi)容“6”,并且密鑰的指針228在第二表格205的第十二位置262具有內(nèi)容“12”。應(yīng)該注意到,不同于表格中或存儲(chǔ)器中指針的區(qū)域,指針的實(shí)際值(該指針?biāo)赶虻牡刂?并不對(duì)應(yīng)于其相關(guān)聯(lián)的密鑰的內(nèi)容,除非巧合。相反,指針的地址值通常指向第一表格203中某個(gè)位置的數(shù)據(jù)條目位置。
圖4所示為圖2的范例執(zhí)行表格引擎的結(jié)構(gòu)圖。密鑰分度器402、指針引擎404、數(shù)據(jù)條目檢索器406以及數(shù)據(jù)條目插入器/刪除器408的耦合如圖所示。密鑰分度器402從閱讀器406接收到密鑰216的內(nèi)容,并使用該內(nèi)容在第二存儲(chǔ)器205中索引。在對(duì)應(yīng)于密鑰216的內(nèi)容的存儲(chǔ)器區(qū)域246,密鑰分度器讀取存儲(chǔ)在其中的有效位,以確定是否有與密鑰216相關(guān)聯(lián)的有效數(shù)據(jù)條目。該密鑰分度器402使用密鑰216的內(nèi)容直接尋址第二存儲(chǔ)器205,因?yàn)槊荑€216的內(nèi)容基本上就是所需要的存儲(chǔ)器地址。
使用密鑰內(nèi)容“4”作為范例,指針引擎404在存儲(chǔ)器區(qū)域272處新插入的數(shù)據(jù)條目與第二存儲(chǔ)器205中對(duì)應(yīng)于密鑰216的內(nèi)容“4”的存儲(chǔ)器區(qū)域246之間建立指針224。通過(guò)指針引擎404建立的指針246是存儲(chǔ)器區(qū)域272的地址,該存儲(chǔ)器區(qū)域包含第一存儲(chǔ)器203中的數(shù)據(jù)條目。在密鑰刪除操作中,指針引擎304也刪除該指針224,并將相關(guān)聯(lián)的有效位設(shè)置為零。
在某些實(shí)施例中,當(dāng)進(jìn)行指針操作的時(shí)候,指針引擎404也執(zhí)行設(shè)置有效位的功能,也就是設(shè)置有效位來(lái)指示指針是否存在,并且從而指示與密鑰216相關(guān)聯(lián)的數(shù)據(jù)條目。
數(shù)據(jù)條目檢索器406讀取密鑰分度器402提供的、存儲(chǔ)在存儲(chǔ)器區(qū)域246處的指針224,并將指針224指向第一存儲(chǔ)器203中的存儲(chǔ)器區(qū)域272,返回所存儲(chǔ)的數(shù)據(jù)條目。
當(dāng)數(shù)據(jù)條目插入器/刪除器408插入或刪除存儲(chǔ)在第一存儲(chǔ)器203的存儲(chǔ)器區(qū)域中的數(shù)據(jù)條目,其提示指針引擎404從第二存儲(chǔ)器205分別添加或刪除指針224,并分配存儲(chǔ)器區(qū)域246處的有效位來(lái)分別反映所添加或刪除的數(shù)據(jù)條目是否存在。
VLAN實(shí)施例在用于IP數(shù)據(jù)通信的表格內(nèi)容中,來(lái)自數(shù)據(jù)包/數(shù)據(jù)報(bào)(“數(shù)據(jù)包”)的報(bào)頭的IP地址通常用作密鑰216,以查找關(guān)于該數(shù)據(jù)包的相關(guān)聯(lián)的信息,諸如目的地端口號(hào)、發(fā)送者的訪問(wèn)權(quán)限以及在網(wǎng)絡(luò)中的位置、或者可以應(yīng)用的VLAN規(guī)則。在一個(gè)范例實(shí)施例中,范例TME 200用作VLAN規(guī)則表,或用于管理VLAN規(guī)則表。
例如在以太網(wǎng)交換機(jī)中,需要存儲(chǔ)VLAN規(guī)則,并使用進(jìn)入數(shù)據(jù)包的VLAN標(biāo)志查找該VLAN規(guī)則。需要為進(jìn)入的數(shù)據(jù)包存儲(chǔ)和查找一定數(shù)目的VLAN規(guī)則條目,例如1K條目。
TME 200可以利用VLAN標(biāo)志為12位寬這一實(shí)事,以提供在傳統(tǒng)CAM芯片中實(shí)現(xiàn)VLAN規(guī)則和/或地址空間所具有的功能,但是沒(méi)有對(duì)CAM硬件的芯片區(qū)域要求和/或設(shè)計(jì)復(fù)雜性。類(lèi)似于CAM,TME 200可以利用所選擇RAM中的全部存儲(chǔ)器區(qū)域,防止包沖突和仿效CAM的內(nèi)容的尋址能力。
盡管在RAM中實(shí)現(xiàn)VLAN規(guī)則表時(shí)會(huì)有額外的存儲(chǔ)器開(kāi)銷(xiāo),諸如1K的RAM,但是使用TME 200作為VLAN規(guī)則表和/或VLAN規(guī)則表管理器來(lái)進(jìn)行VLAN規(guī)則查找要比使用固定大小的散列結(jié)構(gòu)和/或緩存更好,因?yàn)樵揟ME 200具有CAM功能,從而通過(guò)防止包沖突而保證地址空間(例如1K)。后一特征對(duì)于使用TME 200的芯片廠家來(lái)說(shuō)至關(guān)重要,其必須保證可以存儲(chǔ)一定數(shù)目的條目。
參照?qǐng)D2,當(dāng)使用TME 200實(shí)現(xiàn)VLAN規(guī)則表的時(shí)候,對(duì)于第一存儲(chǔ)器203和第二存儲(chǔ)器205可以選擇各種大小的RAM。對(duì)于第一存儲(chǔ)器203,可以使用1K的RAM(或者按照所想要大的存儲(chǔ)容量)來(lái)存儲(chǔ)范例1K的VLAN規(guī)則條目。對(duì)于第二存儲(chǔ)器205,由于4K通常是VLAN規(guī)則表中所需要的最大數(shù)目的VLAN規(guī)則條目,所以可以使用完整4K的RAM來(lái)存儲(chǔ)最大4K的指針以及相關(guān)聯(lián)的有效位。
對(duì)于存儲(chǔ)在第二存儲(chǔ)器205中的存儲(chǔ)位置中的指針和有效位,11位的寬度足以用于具有1K深度的VLAN規(guī)則表。指針表格205中的每一存儲(chǔ)器區(qū)域可以有1位分配給有效位,10位分配給指針。在范例中使用10位指針224、226和228,因?yàn)榫哂?0位的二進(jìn)制數(shù)可以表示數(shù)據(jù)條目表格202中用于VLAN規(guī)則條目的理想1K(1024位)存儲(chǔ)器區(qū)域。通過(guò)選擇足夠?qū)挼拇鎯?chǔ)器,VLAN規(guī)則條目的長(zhǎng)度可以變化和調(diào)節(jié),例如200位寬的存儲(chǔ)器用于相應(yīng)寬的規(guī)則條目。于是,TME 200提供方便、高速和有效存儲(chǔ)的VLAN規(guī)則表格,其具有CAM芯片所具有的所有優(yōu)點(diǎn),而不需要使用CAM芯片。
自由列表引擎仍然參照?qǐng)D2,在某些實(shí)施例中TME 200可以包括自由列表引擎210。自由列表引擎210管理和維護(hù)第一存儲(chǔ)器203中的有效(“自由”)存儲(chǔ)器區(qū)域(例如275-276)的列表。在一個(gè)實(shí)施例中,自由列表引擎210中包括自由區(qū)域頭指針寄存器212,以指向自由存儲(chǔ)器區(qū)域275-276的列表中第一有效自由存儲(chǔ)器區(qū)域275。第一有效自由存儲(chǔ)器區(qū)域275分配給下一個(gè)要插入的數(shù)據(jù)條目,除非某些其它被占據(jù)的數(shù)據(jù)條目區(qū)域272-274首先成為自由。
在一個(gè)實(shí)施例中,自由存儲(chǔ)器區(qū)域275-276的鏈表用于存儲(chǔ)與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目。為了描述維護(hù)鏈表的范例操作,根據(jù)本發(fā)明的數(shù)據(jù)插入方面,圖5的圖形表示為自由存儲(chǔ)器區(qū)域的鏈表范例。用于存儲(chǔ)與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目的第一存儲(chǔ)器203、自由列表引擎210和自由區(qū)域頭指針寄存器212都是參與維護(hù)該鏈表的范例組件。
在范例數(shù)據(jù)條目插入中,將密鑰“13”的數(shù)據(jù)條目502插入到第一有效存儲(chǔ)器區(qū)域275中。下一個(gè)自由存儲(chǔ)器區(qū)域276的地址被傳送到自由區(qū)域頭指針寄存器212,以更新頭指針504,使得其不再指向現(xiàn)在所占據(jù)的存儲(chǔ)器區(qū)域275,而是指向506該鏈表中的下一個(gè)自由存儲(chǔ)器區(qū)域276。該下一個(gè)自由存儲(chǔ)器區(qū)域276現(xiàn)在成為第一有效自由存儲(chǔ)器區(qū)域。
類(lèi)似于前圖,根據(jù)本發(fā)明的數(shù)據(jù)刪除方面,圖6的圖形表示為自由存儲(chǔ)器區(qū)域的范例鏈表。第一存儲(chǔ)器203用于存儲(chǔ)與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目,自由列表引擎210具有自由區(qū)域頭指針寄存器212,它們都是參與操作的范例組件。
為了描述在數(shù)據(jù)條目刪除期間維護(hù)自由存儲(chǔ)器區(qū)域的鏈表的范例動(dòng)態(tài),考慮在數(shù)據(jù)條目刪除之前自由區(qū)域頭指針寄存器212和自由存儲(chǔ)器區(qū)域的鏈表的狀態(tài)。自由區(qū)域頭指針寄存器212包含第一有效自由存儲(chǔ)器區(qū)域276的地址,用指針604表示。然后開(kāi)始數(shù)據(jù)條目刪除從其存儲(chǔ)器區(qū)域274中刪除密鑰“12”的數(shù)據(jù)條目602。將第一有效自由存儲(chǔ)器區(qū)域276的地址從自由區(qū)域頭指針寄存器212中拷貝到新空出的存儲(chǔ)器區(qū)域274,建立指針603,其從新空出的存儲(chǔ)器區(qū)域274指向(前者)第一有效自由存儲(chǔ)器區(qū)域276。將新空出的存儲(chǔ)器區(qū)域274的地址拷貝到自由區(qū)域頭指針寄存器212中。于是,新空出的存儲(chǔ)器區(qū)域274成為位于自由存儲(chǔ)器區(qū)域的鏈表表頭的新的第一有效自由存儲(chǔ)器區(qū)域。在該實(shí)施例中,從其中刪除數(shù)據(jù)條目的存儲(chǔ)器區(qū)域總是成為位于自由存儲(chǔ)器區(qū)域的鏈表表頭的第一有效自由存儲(chǔ)器區(qū)域。
已經(jīng)描述了TME 200可以進(jìn)行的操作,本領(lǐng)域的普通技術(shù)人員會(huì)理解的是,各種結(jié)構(gòu)的TME 200都是允許的。所使用的存儲(chǔ)控制器215和存儲(chǔ)器203、205的數(shù)目可以變化。存儲(chǔ)控制的功能也可以集成到控制元件214中,取代使用單獨(dú)的存儲(chǔ)控制器215。在某些實(shí)施例中,第一存儲(chǔ)器203和/或第二存儲(chǔ)器205可以完全或部分的與TME 200集成起來(lái),但是在其它實(shí)施例中,第一存儲(chǔ)器203和第二存儲(chǔ)器205可以與TME 200分開(kāi),例如當(dāng)在已經(jīng)具有TME 200可使用的存儲(chǔ)器的裝置或設(shè)計(jì)中可再生的實(shí)現(xiàn)TME 200的時(shí)候。
為了便于描述,盡管已經(jīng)根據(jù)部件、模塊和引擎描述了設(shè)備實(shí)施例,但是一個(gè)或多個(gè)程序、子程序、組件、子組件、寄存器、處理器、電路、軟件子程序和/或軟件對(duì)象、或其中的任何組合可以替代一個(gè)或幾個(gè)部件、模塊和/或引擎。
方法一旦閱讀器206從密鑰216獲取內(nèi)容,TME 200就可以使用該內(nèi)容執(zhí)行各種功能,例如TME 200可以進(jìn)行密鑰216的存在查詢、使用該密鑰進(jìn)行數(shù)據(jù)條目檢索、密鑰216(及其相關(guān)聯(lián)數(shù)據(jù)條目)的插入、和密鑰216(及其相關(guān)聯(lián)數(shù)據(jù)條目)的刪除。下面將描述前述四個(gè)操作中的每一個(gè)。
執(zhí)行密鑰查找/數(shù)據(jù)條目檢索根據(jù)檢索的密鑰216執(zhí)行密鑰216查找和執(zhí)行數(shù)據(jù)條目檢索是相同的。為了便于描述,假定在表格203、205中已經(jīng)存在某些數(shù)據(jù)條目(在位置272、273、274中)和某些相關(guān)的指針224、226、228,但是在開(kāi)始,在任何數(shù)據(jù)插入之前,第二表格205中應(yīng)該沒(méi)有指針并且所有的有效位都設(shè)為“零”。同樣的,在起始狀態(tài)中,第一表格203也會(huì)釋放其全部存儲(chǔ)器區(qū)域,并且在一個(gè)實(shí)施例中,將存儲(chǔ)器區(qū)域在鏈表中鏈接在一起。
圖7為根據(jù)本發(fā)明一方面的范例數(shù)據(jù)檢索方法的流程圖。首先讀取和/或散列密鑰得到內(nèi)容,700。使用該內(nèi)容尋址對(duì)應(yīng)于該內(nèi)容的指針存儲(chǔ)器區(qū)域,702。讀取指針存儲(chǔ)器區(qū)域中的有效位,以確定與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目是否存在于第一存儲(chǔ)器的第一區(qū)域中,704、706。如果有效位指示該密鑰的數(shù)據(jù)條目不存在,就結(jié)束該數(shù)據(jù)條目檢索,708。如果有效位指示該密鑰的數(shù)據(jù)條目存在,然后就使用存儲(chǔ)在指針存儲(chǔ)器區(qū)域中的指針來(lái)查找第一區(qū)域中的數(shù)據(jù)條目,710。該方法特別適用于管理VLAN規(guī)則表,其中密鑰為VLAN標(biāo)志,并且每一數(shù)據(jù)條目為VLAN規(guī)則。
TME 200可以用于執(zhí)行上述方法。
根據(jù)本發(fā)明的一方面,當(dāng)TME 200接收到密鑰216的時(shí)候,設(shè)置和/或選擇第二存儲(chǔ)器205,使得每一存儲(chǔ)器區(qū)域238-262的邏輯和/或物理位置對(duì)應(yīng)于該密鑰216的內(nèi)容。第二存儲(chǔ)器205中的每一物理和/或邏輯位置(例如238-262)中存儲(chǔ)與可以接收到的可能密鑰216的內(nèi)容相對(duì)應(yīng)的指針和有效位。該密鑰的內(nèi)容描述或表示在表格/存儲(chǔ)器中的物理和/或邏輯位置。于是在通過(guò)閱讀器206讀取和/或散列密鑰216之后,執(zhí)行表格引擎可以使用密鑰的內(nèi)容作為地址直接進(jìn)行到第二存儲(chǔ)器205中的適當(dāng)位置。
對(duì)于密鑰查找和數(shù)據(jù)條目檢索操作二者,執(zhí)行表格引擎208進(jìn)行到通過(guò)密鑰216的內(nèi)容表示的第二存儲(chǔ)器205中的位置,并讀取存儲(chǔ)在該給定位置處的有效位,以確定其中是否存儲(chǔ)有指向密鑰216的數(shù)據(jù)條目的指針。如果只是執(zhí)行了密鑰查找,并且有效位為“真”,也就是有效位指示密鑰216的有效數(shù)據(jù)條目存在,那么就完成了密鑰查找操作,并且不需要進(jìn)一步操作。換言之,對(duì)于密鑰查找,只是檢測(cè)密鑰216的存在,或密鑰的表示,該操作并不需要進(jìn)行到比讀取有效位更進(jìn)一步的操作。然而數(shù)據(jù)條目檢索操作需要另外的操作。
對(duì)于數(shù)據(jù)條目檢索操作,一旦對(duì)應(yīng)于密鑰216的內(nèi)容的位置中的有效位指示密鑰216的指針存在,那么該指針就指向第一存儲(chǔ)器203的數(shù)據(jù)條目區(qū)域中密匙的數(shù)據(jù)條目。例如,如果密鑰216的內(nèi)容為“4”,執(zhí)行表格引擎208進(jìn)行到第二存儲(chǔ)器205的存儲(chǔ)器區(qū)域“4”246,并讀取存儲(chǔ)在存儲(chǔ)器區(qū)域“4”246的有效位,其在所描述的范例中被設(shè)為真(“1”),表示密鑰216的有效指針224存在。指針224將執(zhí)行表格引擎208引導(dǎo)到存儲(chǔ)在第一存儲(chǔ)器203的存儲(chǔ)器區(qū)域272的數(shù)據(jù)條目。該執(zhí)行表格引擎208然后可以檢索該數(shù)據(jù)條目。
盡管在該實(shí)施例中,有效位的值“1”表示在第一存儲(chǔ)器203中存在密鑰216的數(shù)據(jù)條目,并且“0”表示不存在數(shù)據(jù)條目,但是在其它實(shí)施例中相反情況可以是真,其中“0”用來(lái)表示有效,而“1”用來(lái)表示無(wú)效。
執(zhí)行密鑰插入或刪除除了上述密鑰查找和數(shù)據(jù)條目檢索操作之外,TME 200可以進(jìn)行數(shù)據(jù)條目290插入或數(shù)據(jù)條目290刪除操作。盡管TME 200可以使用數(shù)據(jù)條目的靜態(tài)表格,但是在需要?jiǎng)討B(tài)改變數(shù)據(jù)條目的表格、而不僅是具有固定數(shù)目數(shù)據(jù)條目的靜態(tài)表格的許多類(lèi)型的應(yīng)用中,可以使用插入和刪除操作。
圖8的流程圖為根據(jù)本發(fā)明一方面的、執(zhí)行“密鑰插入”的范例方法,也就是插入密鑰的數(shù)據(jù)條目和設(shè)置指針指向存儲(chǔ)器區(qū)域中表示該密鑰的數(shù)據(jù)條目。于是,該密鑰插入方法是用于建立數(shù)據(jù)表格的方法。將與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目插入到第一存儲(chǔ)器的第一區(qū)域,以開(kāi)始建立數(shù)據(jù)條目的表格,800。可以通過(guò)TME 200的執(zhí)行表格引擎208插入該數(shù)據(jù)條目。具體的,TME 200的數(shù)據(jù)條目插入器/刪除器可以用來(lái)進(jìn)行該插入。將指向數(shù)據(jù)條目的指針插入到第二存儲(chǔ)器中的第二區(qū)域,開(kāi)始建立指針表格,802。選擇第二區(qū)域,使得密鑰的內(nèi)容就直接給出了第二區(qū)域的地址和/或位置,而不需要查找整個(gè)密鑰或其它條目的列表。因此,第二區(qū)域的地址和/或位置表示該密鑰的內(nèi)容。執(zhí)行表格引擎208的指針引擎404組件可以用來(lái)執(zhí)行指針插入。設(shè)置在第二區(qū)域中的有效位,以指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目,804。指針引擎404可以用來(lái)設(shè)置有效位。
使用具有內(nèi)容“4”的密鑰作為數(shù)據(jù)條目290的插入范例,TME 200首先執(zhí)行上述密鑰216的查找操作,并讀取存儲(chǔ)器區(qū)域246中表示密鑰216的有效位,以確定當(dāng)前是否存儲(chǔ)有密鑰216的數(shù)據(jù)條目。一旦確定還沒(méi)有存儲(chǔ)密鑰216的數(shù)據(jù)條目,TME 200接收所要插入的數(shù)據(jù)條目290,并且執(zhí)行表格引擎208將數(shù)據(jù)條目290存儲(chǔ)在第一存儲(chǔ)器203的第一有效自由存儲(chǔ)器區(qū)域272中。如果保留有數(shù)據(jù)條目的自由存儲(chǔ)器區(qū)域的列表,那么從該列表中刪除被所插入數(shù)據(jù)條目使用的存儲(chǔ)器區(qū)域,并且自由列表引擎210重新建立新的第一有效自由位置。執(zhí)行表格引擎208然后將指向所存儲(chǔ)的數(shù)據(jù)條目的指針224放入第二存儲(chǔ)器205的存儲(chǔ)器區(qū)域246中;存儲(chǔ)器區(qū)域246對(duì)應(yīng)于密鑰216的內(nèi)容“4”。由于接收數(shù)據(jù)條目290的存儲(chǔ)器區(qū)域272的地址為“0000000000”,指針224就由地址“0000000000”組成。最后,執(zhí)行表格引擎208為存儲(chǔ)器區(qū)域246設(shè)置有效位,其中新指針為“有效”,指示已經(jīng)為密鑰216放入具有內(nèi)容“4”的有效數(shù)據(jù)條目。
在該實(shí)施例中,在操作中出現(xiàn)錯(cuò)誤的情況下,最后設(shè)置有效位,從而使得有效位的值盡可能準(zhǔn)確的給出對(duì)給定密鑰的數(shù)據(jù)條目是否存在的指示。錯(cuò)誤會(huì)導(dǎo)致有效位保持在“無(wú)效”狀態(tài),指示沒(méi)有密鑰216的數(shù)據(jù)條目。
在一個(gè)實(shí)施例中,數(shù)據(jù)條目刪除操作遵從的順序與插入順序相似,不同之處在于是移走而不是插入數(shù)據(jù)條目和指針。
圖9的流程圖為根據(jù)本發(fā)明一方面的數(shù)據(jù)刪除方法范例。從第一存儲(chǔ)器中的數(shù)據(jù)條目區(qū)域中刪除與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目,900。調(diào)節(jié)自由數(shù)據(jù)條目區(qū)域的鏈表中的指針,以包括通過(guò)刪除數(shù)據(jù)條目所釋放的數(shù)據(jù)條目區(qū)域,902。從第二存儲(chǔ)器中的指針區(qū)域刪除剛剛移走的指向該數(shù)據(jù)條目的指針,其中該指針區(qū)域表示密鑰的內(nèi)容,904。然后設(shè)置指針區(qū)域中的有效位,以指示與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目不存在,906。
可以使用TME 200執(zhí)行刪除數(shù)據(jù)條目的方法。使用具有內(nèi)容“4”的密鑰216作為范例,通過(guò)執(zhí)行表格引擎208刪除存儲(chǔ)器區(qū)域272中的數(shù)據(jù)條目。也從第二存儲(chǔ)器205中的存儲(chǔ)器區(qū)域246移走指針224。第一存儲(chǔ)器203中新釋放的存儲(chǔ)器區(qū)域272恢復(fù)到自由數(shù)據(jù)條目存儲(chǔ)器區(qū)域(例如表格203中的存儲(chǔ)器區(qū)域275-276以及其它空的存儲(chǔ)器區(qū)域)的列表中。最后,設(shè)置存儲(chǔ)器區(qū)域246的有效位,以指示特定密鑰216的數(shù)據(jù)條目不存在。將釋放的存儲(chǔ)器區(qū)域272恢復(fù)到自由數(shù)據(jù)條目存儲(chǔ)器區(qū)域275-276的列表中,在其時(shí)序上可以相對(duì)于數(shù)據(jù)條目和指針的刪除而改變。然而,在該實(shí)施例中,將釋放的存儲(chǔ)器空間(272,如果該數(shù)據(jù)條目被刪除)恢復(fù)到自由數(shù)據(jù)條目存儲(chǔ)器區(qū)域275-276的列表中,當(dāng)重新整理被刪除的、指向或源自該數(shù)據(jù)條目的指針的時(shí)候,動(dòng)態(tài)的進(jìn)行該恢復(fù)操作,并且其是通過(guò)自由列表引擎210來(lái)進(jìn)行的。
替換實(shí)施例圖10為制造產(chǎn)品的圖形表示,其包括具有內(nèi)容1002的機(jī)器可讀媒體1000,該內(nèi)容使得主機(jī)裝置實(shí)現(xiàn)本發(fā)明的表格管理引擎的一個(gè)或多個(gè)實(shí)施例、方面、和/或方法。該內(nèi)容可以是指令,諸如計(jì)算機(jī)指令,或者可以是能夠?qū)嵤┑脑O(shè)計(jì)信息。該內(nèi)容使得機(jī)器實(shí)現(xiàn)本發(fā)明的方法和/或裝置,包括在第一存儲(chǔ)器203的數(shù)據(jù)條目區(qū)域272中插入與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目、在第二存儲(chǔ)器205中的指針區(qū)域插入指向數(shù)據(jù)條目的指針224,其中指針區(qū)域246的地址和/或位置表示該密鑰的內(nèi)容,并且設(shè)置指針區(qū)域246中的有效位,以指示與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目存在于數(shù)據(jù)條目區(qū)域272中。
主機(jī)接收到的密鑰可以是12位的VLAN標(biāo)志。該主機(jī)可以實(shí)現(xiàn)具有1K VLAN規(guī)則RAM的VLAN規(guī)則表,其中每一VLAN規(guī)則是密鑰的數(shù)據(jù)條目。當(dāng)在1K的規(guī)則RAM中存儲(chǔ)VLAN規(guī)則時(shí),在第二RAM中放置指向VLAN規(guī)則的指針,具體而言就是4K的指針RAM,在表示密鑰的內(nèi)容的4K指針RAM中的區(qū)域。為了利用全部的1K VLAN規(guī)則RAM,指針的長(zhǎng)度為10位。有效位也存儲(chǔ)在4K指針RAM中的指針區(qū)域,以指示對(duì)于給定的密鑰內(nèi)容是否存在有效的VLAN規(guī)則。于是,通過(guò)機(jī)器實(shí)施的TME使用接收到的VLAN標(biāo)志的內(nèi)容,快速地尋址4K指針RAM,并且僅僅通過(guò)讀取有效位快速地評(píng)估是否存在該密鑰的有效VLAN規(guī)則。不需要特殊的硬件和/或CAM芯片的復(fù)雜設(shè)計(jì)就可以實(shí)現(xiàn)通過(guò)機(jī)器實(shí)施的TME的很高的速度。
本發(fā)明的方法和設(shè)備可以部分的作為可以包括機(jī)器可讀媒體的計(jì)算機(jī)程序產(chǎn)品提供。該機(jī)器可讀媒體可以包括,但不僅限于軟盤(pán)、光盤(pán)、CD-ROM、磁光盤(pán)、ROM、RAM、EPROM、EEPROM、磁性或光學(xué)卡、閃存、或適合于存儲(chǔ)電子指令的其它類(lèi)型的媒體。而且,部件也可以作為計(jì)算機(jī)程序產(chǎn)品下載,其中該程序可以通過(guò)通信鏈路(例如調(diào)制解調(diào)器或網(wǎng)絡(luò)連接)、通過(guò)載波或其它傳播媒體中的數(shù)據(jù)信號(hào)的形式、從遠(yuǎn)程計(jì)算機(jī)傳送到請(qǐng)求計(jì)算機(jī)。關(guān)于這一點(diǎn),該制造產(chǎn)品也可以包括這種載波或其它傳播媒體。
雖然已經(jīng)根據(jù)幾個(gè)實(shí)施例描述了本發(fā)明,但是本領(lǐng)域的技術(shù)人員會(huì)認(rèn)識(shí)到本發(fā)明并不限于所描述的實(shí)施例,而是可以在所附權(quán)利要求書(shū)的精神和范圍中有所修改和替換的實(shí)施。該說(shuō)明因此應(yīng)該作為說(shuō)明性的,而不是限制性的。
權(quán)利要求
1.一種設(shè)備,包括閱讀器,讀取和/或散列密鑰以確定密鑰的內(nèi)容;和執(zhí)行表格引擎,用于從閱讀器接收該密鑰的內(nèi)容;在存儲(chǔ)器的數(shù)據(jù)條目區(qū)域中存儲(chǔ)和該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目;在存儲(chǔ)器中的指針區(qū)域中分配指針,其中該指針區(qū)域的地址是密鑰的內(nèi)容,并且該指針指向該數(shù)據(jù)條目;和分配指針區(qū)域中的有效位,以指示該數(shù)據(jù)條目存在于該數(shù)據(jù)條目區(qū)域中。
2.權(quán)利要求1的設(shè)備,其中執(zhí)行表格引擎從數(shù)據(jù)條目區(qū)域中刪除該數(shù)據(jù)條目,從指針區(qū)域中刪除該指針,并分配有效位以指示該數(shù)據(jù)條目不存在。
3.權(quán)利要求1的設(shè)備,進(jìn)一步包括自由列表引擎,以管理數(shù)據(jù)條目可用的自由存儲(chǔ)器區(qū)域的列表,和頭指針寄存器,以在自由存儲(chǔ)器區(qū)域的鏈表中維護(hù)自由存儲(chǔ)器區(qū)域指針。
4.權(quán)利要求1的設(shè)備,該執(zhí)行表格引擎進(jìn)一步包括密鑰分度器,以使用該密鑰內(nèi)容查找指針區(qū)域,并讀取該指針區(qū)域中的有效位;數(shù)據(jù)條目檢索器,用于在該有效位指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目時(shí),檢索該數(shù)據(jù)條目;數(shù)據(jù)條目插入器/刪除器,以在數(shù)據(jù)區(qū)域中插入和/或刪除數(shù)據(jù)條目;和指針引擎,以插入和/或刪除指針,并分配與該指針區(qū)域相關(guān)聯(lián)的有效位。
5.一種方法,包括在第一存儲(chǔ)器的數(shù)據(jù)條目區(qū)域中插入與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目;在第二存儲(chǔ)器的指針區(qū)域中插入指向該數(shù)據(jù)條目的指針,其中指針區(qū)域的地址和/或位置表示該密鑰的內(nèi)容;和設(shè)置指針區(qū)域中的有效位,以指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目。
6.權(quán)利要求5的方法,其中第一存儲(chǔ)器的深度是基于第二存儲(chǔ)器中所使用的指針長(zhǎng)度而定的。
7.權(quán)利要求5的方法,其中在自由數(shù)據(jù)條目區(qū)域的列表中,第一存儲(chǔ)器中的空數(shù)據(jù)條目區(qū)域鏈接在一起。
8.權(quán)利要求7的方法,進(jìn)一步包括使用頭指針寄存器,指向自由數(shù)據(jù)條目區(qū)域的列表中的第一有效自由數(shù)據(jù)條目區(qū)域。
9.權(quán)利要求8的方法,其中通過(guò)更新頭指針,使其指向下一個(gè)有效自由數(shù)據(jù)條目區(qū)域,用于插入數(shù)據(jù)條目的第一有效自由數(shù)據(jù)條目區(qū)域脫離自由數(shù)據(jù)條目區(qū)域的列表。
10,權(quán)利要求5的方法,其中在第二存儲(chǔ)器中使用10位長(zhǎng)度的指針,并且在第一存儲(chǔ)器中使用1024個(gè)存儲(chǔ)器區(qū)域。
11.權(quán)利要求10的方法,其中密鑰是虛擬局域網(wǎng)(VLAN)標(biāo)志,其具有的內(nèi)容用第二存儲(chǔ)器中的存儲(chǔ)器區(qū)域表示,并且該數(shù)據(jù)條目是VLAN規(guī)則。
12.一種方法,包括讀取和/或散列密鑰,以得到內(nèi)容;讀取存儲(chǔ)器的指針區(qū)域中的有效位,以確定在存儲(chǔ)器的數(shù)據(jù)條目區(qū)域中是否存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目,其中該指針區(qū)域表示該密鑰的內(nèi)容;和如果有效位指示存儲(chǔ)器中存在該數(shù)據(jù)條目,將指針區(qū)域中的指針指向數(shù)據(jù)條目區(qū)域中的數(shù)據(jù)條目。
13.權(quán)利要求12的方法,其中該密鑰是VLAN標(biāo)志,并且該數(shù)據(jù)條目是VLAN規(guī)則。
14.一種方法,包括將與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目插入到數(shù)據(jù)條目存儲(chǔ)器中的自由數(shù)據(jù)條目區(qū)域中;調(diào)節(jié)一個(gè)或多個(gè)指針,以從自由數(shù)據(jù)條目區(qū)域的鏈表中排除自由數(shù)據(jù)條目區(qū)域;將指針插入到存儲(chǔ)器的指針區(qū)域,其中該指針指向該數(shù)據(jù)條目,并且存儲(chǔ)器中指針區(qū)域的地址和/或位置表示該密鑰的內(nèi)容;和設(shè)置指針區(qū)域中的有效位,以指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目。
15.權(quán)利要求14的方法,其中該密鑰是VLAN標(biāo)志,并且該數(shù)據(jù)條目是VLAN規(guī)則。
16.一種方法,包括從數(shù)據(jù)條目存儲(chǔ)器中的數(shù)據(jù)條目區(qū)域刪除與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目調(diào)節(jié)一個(gè)或多個(gè)自由存儲(chǔ)器區(qū)域指針,以在自由數(shù)據(jù)條目區(qū)域的鏈表中包括數(shù)據(jù)條目區(qū)域;從存儲(chǔ)器中的數(shù)據(jù)條目指針區(qū)域刪除數(shù)據(jù)條目指針,其中該數(shù)據(jù)條目指針指向該數(shù)據(jù)條目區(qū)域,并且存儲(chǔ)器中數(shù)據(jù)條目指針區(qū)域的地址和/或位置表示該密鑰的內(nèi)容;和設(shè)置數(shù)據(jù)條目指針區(qū)域中的有效位,以指示不存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目。
17.權(quán)利要求16的方法,其中該密鑰是VLAN標(biāo)志,并且該數(shù)據(jù)條目是VLAN規(guī)則。
18.一種制造產(chǎn)品,包括包含內(nèi)容的機(jī)器可讀媒體,當(dāng)執(zhí)行該內(nèi)容時(shí),使得該訪問(wèn)機(jī)器執(zhí)行讀取和/或散列密鑰,以確定密鑰內(nèi)容;在第一存儲(chǔ)器的數(shù)據(jù)區(qū)域中存儲(chǔ)與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目;在第二存儲(chǔ)器的指針區(qū)域中存儲(chǔ)指針和有效位,其中該指針區(qū)域表示該密鑰的內(nèi)容,并且該有效位指示該指針區(qū)域中指針的存在;和根據(jù)該密鑰內(nèi)容分配和/或刪除該指針,并且管理該有效位,以指示該指針區(qū)域中該指針的存在和/或不存在。
19.權(quán)利要求18的制造產(chǎn)品,其中該內(nèi)容使得該訪問(wèn)機(jī)器讀取表示該密鑰的指針區(qū)域中的有效位,并且如果該有效位指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目,就檢索該數(shù)據(jù)條目。
20.權(quán)利要求18的制造產(chǎn)品,其中該內(nèi)容使得該訪問(wèn)機(jī)器管理該第一存儲(chǔ)器中數(shù)據(jù)條目可用的自由區(qū)域,并維護(hù)自由區(qū)域的鏈表中的指針。
21.一種計(jì)算機(jī)系統(tǒng),包括表格管理引擎,用于在第一存儲(chǔ)器的數(shù)據(jù)條目區(qū)域中存儲(chǔ)與密鑰相關(guān)聯(lián)的數(shù)據(jù)條目;分配指針到存儲(chǔ)器中的指針區(qū)域,其中該指針區(qū)域的地址對(duì)應(yīng)于來(lái)自該密鑰的內(nèi)容,并且該指針指向該數(shù)據(jù)條目;分配該指針區(qū)域中的有效位,以指示該數(shù)據(jù)條目區(qū)域中該數(shù)據(jù)條目的存在;和至少一個(gè)存儲(chǔ)器,以存儲(chǔ)該數(shù)據(jù)條目、指針、和有效位。
22.權(quán)利要求21的計(jì)算機(jī)系統(tǒng),進(jìn)一步包括閱讀器,以讀取和/或散列該密鑰,確定內(nèi)容;密鑰分度器,以根據(jù)該內(nèi)容查找指針區(qū)域,并讀取該指針區(qū)域中的有效位數(shù)據(jù)條目檢索器,在該有效位指示存在與該密鑰相關(guān)聯(lián)的數(shù)據(jù)條目時(shí),檢索該數(shù)據(jù)條目;數(shù)據(jù)條目插入器/刪除器,以在數(shù)據(jù)區(qū)域中插入和/或刪除數(shù)據(jù)條目;和指針引擎,以插入和/或刪除指針,并分配與該指針區(qū)域相關(guān)聯(lián)的有效位。
23.權(quán)利要求21的計(jì)算機(jī)系統(tǒng),進(jìn)一步包括自由列表引擎,以管理數(shù)據(jù)條目可用的自由存儲(chǔ)器區(qū)域的列表,包括頭指針寄存器,以維護(hù)自由存儲(chǔ)器區(qū)域的列表中的自由存儲(chǔ)器區(qū)域指針。
全文摘要
這里描述了一種在基于硬件的包交換中用于存儲(chǔ)器有效的快速VLAN查找和插入的方法和設(shè)備。交換機(jī)中引入表格管理引擎(TME),以提高數(shù)據(jù)查找和管理。該TME管理被劃分成兩個(gè)表格的存儲(chǔ)器,一個(gè)包含數(shù)據(jù)條目(“數(shù)據(jù)條目表格”203),一個(gè)包含指針和有效位(“指針表格”205)。該TME包括閱讀器/散列器(206)、執(zhí)行表格引擎(208)、自由列表引擎(210)和控制元件(214)。閱讀器/散列器從密鑰獲得內(nèi)容,該密鑰可以是VLAN規(guī)則。執(zhí)行表格引擎使用密鑰內(nèi)容尋址存儲(chǔ)器中的指針區(qū)域,以檢索數(shù)據(jù)。執(zhí)行表格引擎也負(fù)責(zé)寫(xiě)入/刪除存儲(chǔ)器中的數(shù)據(jù),并用于指針管理。
文檔編號(hào)H04L12/46GK1653763SQ03811375
公開(kāi)日2005年8月10日 申請(qǐng)日期2003年3月4日 優(yōu)先權(quán)日2002年3月20日
發(fā)明者M·納瓦達(dá), S·庫(kù)魯帕蒂 申請(qǐng)人:英特爾公司