用于在存儲(chǔ)器中存儲(chǔ)整數(shù)范圍的系統(tǒng)和方法
【專利摘要】本發(fā)明公開了涉及在存儲(chǔ)器中存儲(chǔ)整數(shù)范圍的系統(tǒng)和方法。在存儲(chǔ)器中存儲(chǔ)整數(shù)值范圍包括:確定該范圍中的子范圍,使得在來自分別是子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值都等于第二多個(gè)比特子序列中的相應(yīng)比特子序列或者值為0,并且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值。在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍進(jìn)一步包括基于第一和第二多個(gè)比特子序列的值形成第一比特串,并且在存儲(chǔ)器中存儲(chǔ)第一比特串。
【專利說明】用于在存儲(chǔ)器中存儲(chǔ)整數(shù)范圍的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明的實(shí)施方式涉及在存儲(chǔ)器中存儲(chǔ)值。
【背景技術(shù)】
[0002]諸如路由器、交換機(jī)、網(wǎng)橋等的包(packet)處理裝置需要適應(yīng)逐漸增大的帶寬和處理需求。例如,帶寬的增大要求以接近網(wǎng)速在包處理裝置中處理每個(gè)包,同時(shí),進(jìn)入包處理裝置的包數(shù)量變大。此外,復(fù)雜的包處理可能要求包處理裝置將包報(bào)頭中的較大字段組與預(yù)配置的值相比較。
[0003]在許多包處理裝置中,將包標(biāo)題字段與三態(tài)內(nèi)容訪問存儲(chǔ)器(TCAM)中的條目(entry)相比較。TCAM是其中可使用二進(jìn)制(例如I和O)比特和通配符比特來存儲(chǔ)值的條目表。“通配符”表示對(duì)應(yīng)的比特可以是I或O。在現(xiàn)有技術(shù)中已知一些存儲(chǔ)1、0、和通配符的具體技術(shù),并且可能依賴于實(shí)施方案。TCAM中的每個(gè)條目都可以對(duì)應(yīng)于一個(gè)或多個(gè)字段??梢詫⑷胝景⑿械嘏cTCAM中的所有條目相比較。在基于入站包字段執(zhí)行查找時(shí),也可以使用其他存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)。
[0004]檢查的包標(biāo)題字段可以包括互聯(lián)網(wǎng)協(xié)議(IP)地址、端口值、協(xié)議值、虛擬局域網(wǎng)標(biāo)識(shí)符(VLANID)和其他頭字段。將部分頭字段與具體值相比較??梢詫⑵渌^字段與值的范圍相比較。常常使用共同前綴來表示IP地址的范圍。“前綴”是在值的二進(jìn)制表示的開頭開始的一個(gè)或多個(gè)比特的序列。如這里所使用的,如果兩個(gè)或更多值中的每個(gè)的二進(jìn)制表示具有從彼此共同的從第一比特開始的一個(gè)或多個(gè)比特的序列,則該兩個(gè)或多個(gè)值被認(rèn)為是具有共同前綴。然而,使用前綴可能不能有效地表示整數(shù)值的范圍(例如用于在包報(bào)頭中表示端口值、協(xié)議標(biāo)識(shí)符等的那些)。例如,對(duì)值的范圍進(jìn)行存儲(chǔ)可能需要相對(duì)大量的前綴,并且每個(gè)前綴可能需要TCAM中的多個(gè)條目。例如,范圍的每個(gè)前綴可能需要TCAM中的多個(gè)條目,以在其他字段的組合中進(jìn)行比較。
[0005]因此,在TCAM和存儲(chǔ)器中的其他查找結(jié)構(gòu)中所需的存儲(chǔ)值的范圍的條目數(shù)可能過大。由于其速度和靈活性,TCAM經(jīng)常用于查找操作。然而,由于TCAM的相對(duì)高功耗和成本,需要減小TCAM的大小。其他存儲(chǔ)器也可以用于查找,并且可以因?yàn)樵诓檎冶碇芯哂休^少的條目而帶來好處。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施方式涉及在TCAM或其他存儲(chǔ)器中有效地存儲(chǔ)值范圍的方法、系統(tǒng)和計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)。在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍包括確定該范圍中的子范圍,使得在來自分別是子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列(bitsubsequence)中,第一多個(gè)比特子序列中的除了至多一個(gè)比特子序列以外的所有比特子序列的值要么等于第二多個(gè)中的對(duì)應(yīng)比特子序列要么值為O且第二多個(gè)比特子序列中的對(duì)應(yīng)比特子序列具有最大值。在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍進(jìn)一步包括基于第一和第二多個(gè)比特子序列的值形成第一比特串(bit string),并且在存儲(chǔ)器中存儲(chǔ)第一比特串。[0007]本發(fā)明的一個(gè)方面涉及一種用于在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍的方法,包括:確定所述范圍中的子范圍,使得在來自分別是所述子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,在第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值等于第二多個(gè)比特子序列中的相應(yīng)比特子序列的值或者值為O且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值;基于所述第一和第二多個(gè)比特子序列的值形成第一比特串;以及在所述存儲(chǔ)器中存儲(chǔ)所述第一比特串。
[0008]在上述方法中,優(yōu)選所述存儲(chǔ)包括在三態(tài)內(nèi)容尋址存儲(chǔ)器(TCAM)中存儲(chǔ)所述第一比特串。
[0009]在上述方法中,優(yōu)選所述形成包括:生成與來自所述第一多個(gè)比特子序列的比特子序列與來自所述第二多個(gè)比特子序列的相應(yīng)比特子序列的各個(gè)配對(duì)相應(yīng)的各自的比特子串;以及連接(concatenate)所生成的比特子串以產(chǎn)生所述比特串。
[0010]在上述方法中,優(yōu)選各個(gè)所述各自的比特子串的長(zhǎng)度至少等于來自所述第一多個(gè)比特子序列的比特子序列的最大值。
[0011]在上述方法中,優(yōu)選生成各自的比特子串包括:確定與所述各個(gè)配對(duì)相應(yīng)的有效值的范圍;以及基于所確定的有效值的范圍來設(shè)置所述比特子串中的比特值,其中,所述比特子串中的各自的比特位置與所確定的有效值的范圍中的值相關(guān)聯(lián)。
[0012]在上述方法中,優(yōu)選在所述比特子串中設(shè)置比特值包括:將所述比特子串的前m個(gè)比特設(shè)置為1,其中,m是來自所述第一多個(gè)比特子序列的比特子序列的有效值;以及將所述前m個(gè)比特后的η個(gè)比特設(shè)置為通配符,其中,η是來自所述第一多個(gè)比特子序列的比特子序列和來自所述第二多個(gè)比特子序列的比特子序列之間的差。
[0013]在上述方法中,優(yōu)選還包括:從數(shù)據(jù)包的字段值的二進(jìn)制表示確定第三多個(gè)比特子序列;基于所述第三多個(gè)比特子序列的值形成第二比特串;將所述第二比特串與所存儲(chǔ)的第一比特串相比較;以及基于所述比較來處理所述數(shù)據(jù)包。
[0014]在上述方法中,優(yōu)選根據(jù)預(yù)定的比特子序列長(zhǎng)度來確定所述第一、第二和第三多個(gè)比特子序列。
[0015]在上述方法中,優(yōu)選所述第一、第二和第三多個(gè)比特子序列中的比特子序列數(shù)量(a number of)相等。
[0016]在上述方法中,優(yōu)選所述形成第二比特串包括:生成與來自所述第三多個(gè)比特子序列的各個(gè)比特子序列相對(duì)應(yīng)的各自的第二比特子串;以及連接所述第二比特子串以產(chǎn)生所述第二比特串。
[0017]在上述方法中,優(yōu)選生成第二比特子串包括:確定來自所述第三多個(gè)比特子序列的相應(yīng)比特子序列的值;以及基于所確定的值來設(shè)置所述第二比特子串中的比特值,其中,所述第二比特子串中的各個(gè)比特位置與各自的確定值相關(guān)聯(lián)。
[0018]在上述方法中,優(yōu)選設(shè)置所述第二比特子串中的比特值包括:將所述第二比特子串的前m個(gè)比特設(shè)置為I,其中,m是來自所述第三多個(gè)比特子序列的比特子序列的值。
[0019]在上述方法中,優(yōu)選還包括:基于存儲(chǔ)器特性,配置所述第一和第二多個(gè)比特子序列的比特子序列的長(zhǎng)度或者應(yīng)用于所述第一比特子串的比特子串的長(zhǎng)度中的一個(gè)或多個(gè)。
[0020]在上述方法中,優(yōu)選還包括:基于比特串的預(yù)定長(zhǎng)度,配置所述第一和第二多個(gè)比特子序列的比特子序列的長(zhǎng)度,其中,所述預(yù)定長(zhǎng)度被應(yīng)用于所述第一比特串。[0021]在上述方法中,優(yōu)選還包括:基于所述范圍的大小,配置所述第一和第二多個(gè)比特子序列的比特子序列的長(zhǎng)度。
[0022]本發(fā)明的又一個(gè)方面涉及一種系統(tǒng),包括:處理器;耦接至所述處理器的至少一個(gè)存儲(chǔ)器;存儲(chǔ)器存儲(chǔ)模塊,被配置為:確定范圍中的子范圍,使得在來自分別是所述子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,在第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值等于第二多個(gè)比特子序列中的相應(yīng)比特子序列的值或者值為O且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值;基于第一和第二比特子序列的值形成第一比特串;以及在所述至少一個(gè)存儲(chǔ)器中存儲(chǔ)所述第一比特串。
[0023]在上述系統(tǒng)中,優(yōu)選所述至少一個(gè)存儲(chǔ)器包括三態(tài)內(nèi)容尋址存儲(chǔ)器(TCAM)。
[0024]還包括:包字段比較模塊,被配置為:從數(shù)據(jù)包的字段值的二進(jìn)制表示確定第三多個(gè)比特子序列;基于所述第三多個(gè)比特子序列的值形成第二比特串;將所述第二比特串與存儲(chǔ)的第一比特串相比較。
[0025]還包括:包處理模塊,被配置為基于所述比較來處理所述數(shù)據(jù)包。
[0026]本發(fā)明的又一方面涉及一種記錄了指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),當(dāng)處理器執(zhí)行指令時(shí),使得處理器執(zhí)行用于在存儲(chǔ)器中存儲(chǔ)比較值的范圍的方法,包括:確定所述范圍中的子范圍,使得在來自分別是所述子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,在第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值等于第二多個(gè)比特子序列中的相應(yīng)比特子序列的值或者值為O且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值;基于所述第一和第二多個(gè)比特子序列的值形成第一比特串;以及在所述存儲(chǔ)器中存儲(chǔ)所述第一比特串。
[0027]以下結(jié)合附圖詳細(xì)描述了本公開的其他特征和優(yōu)點(diǎn)以及本公開的各實(shí)施方式的結(jié)構(gòu)和操作。值得注意的是,本公開不限于這里描述的【具體實(shí)施方式】。這里給出了這種實(shí)施方式僅用于說明目的?;诒疚陌慕虒?dǎo),對(duì)于本領(lǐng)域普通技術(shù)人員來說,其他實(shí)施方式將是顯而易見的。
【專利附圖】
【附圖說明】
[0028]將描述本公開的實(shí)施方式,在附圖中示出了其多個(gè)例子。這些附圖是說明性而非限制性的。雖然在這些實(shí)施方式的上下文中概括地描述了本公開,但是應(yīng)當(dāng)理解,這并非旨在將本公開的范圍限制到這些特定實(shí)施方式。
[0029]圖1A示出了在存儲(chǔ)器中存儲(chǔ)整數(shù)值范圍的示例性傳統(tǒng)方法。
[0030]圖1B示出了示例性包格式。
[0031]圖2A和圖2B示出了根據(jù)本公開實(shí)施方式的表示范圍的存儲(chǔ)器中的示例性范圍和條目。
[0032]圖3示出了根據(jù)本公開實(shí)施方式的用于在存儲(chǔ)器中存儲(chǔ)整數(shù)值范圍的示例性系統(tǒng)。
[0033]圖4示出了根據(jù)本公開實(shí)施方式的用于在存儲(chǔ)器中存儲(chǔ)整數(shù)值范圍的方法的流程圖。
[0034]圖5示出了根據(jù)本公開實(shí)施方式的用于將輸入字段和整數(shù)值的范圍相比較的方法的流程圖。
[0035]圖6示出了根據(jù)實(shí)施方式的用于確定范圍中的子范圍的方法的流程圖。
[0036]圖7示出了根據(jù)實(shí)施方式的用于對(duì)子范圍編碼的方法的流程圖。
【具體實(shí)施方式】
[0037]雖然這里參照用于特定應(yīng)用的說明性實(shí)施方式描述了本公開,但是應(yīng)當(dāng)理解,本公開不限于此。本領(lǐng)域普通技術(shù)人員根據(jù)本文的教導(dǎo)將認(rèn)識(shí)到在其范圍內(nèi)的其他修改、應(yīng)用和實(shí)施方式以及本公開將具有顯著實(shí)用性的其他領(lǐng)域。
[0038]本說明書中公開的實(shí)施方式提供了在TCAM和其他存儲(chǔ)器結(jié)構(gòu)中對(duì)整數(shù)范圍的更有效的存儲(chǔ)。例如,實(shí)施方式使得能夠使用比傳統(tǒng)技術(shù)所需的顯著減少的條目在TCAM中存儲(chǔ)整數(shù)范圍。使用較少的條目來存儲(chǔ)范圍可以使得用于條目表的TCAM或其他存儲(chǔ)器的成本較低、查找效率提高以及能夠比較更多字段。
[0039]圖1A示出了在諸如TCAM或其他存儲(chǔ)器的存儲(chǔ)器中存儲(chǔ)整數(shù)值范圍的示例性傳統(tǒng)方法。如圖1A所示,當(dāng)使用存儲(chǔ)基于前綴的范圍的傳統(tǒng)方法時(shí),必須使用至少六個(gè)前綴來覆蓋整數(shù)1- 24的范圍。如101項(xiàng)所示,范圍1- 24中的各個(gè)值以二進(jìn)制示出?;跀?shù)字的二進(jìn)制表示中的共同前綴,可以確定六個(gè)子范圍。這六個(gè)子范圍是1、2 - 3、4 - 7、8 - 15、16 - 23和24。105項(xiàng)示出了可以用于表示TCAM條目中的范圍的基于前綴的字段值的最小組。如圖所示,六個(gè)單獨(dú)前綴需要表示范圍I — 24,即,“00001”、“0001”、“001”、“OI”、“10”和 “11000”。
[0040]圖1B示出了可以在包處理裝置中處理的數(shù)據(jù)包110的示例性格式。數(shù)據(jù)包110可以包括頭字段(header field)部分112和數(shù)據(jù)部分114。頭字段112包括諸如源地址、目的地址、源端口、目的端口、協(xié)議類型116、以及虛擬局域網(wǎng)絡(luò)標(biāo)識(shí)符(VLAND,未示出)的一個(gè)或多個(gè)子段。數(shù)據(jù)部分114可以包括實(shí)際數(shù)據(jù)有效負(fù)載,或者實(shí)際數(shù)據(jù)有效負(fù)載封裝在一個(gè)或多個(gè)其他協(xié)議包格式中??梢愿鶕?jù)一個(gè)或多個(gè)通信協(xié)議來將包格式化,通信協(xié)議例如但是不限于互聯(lián)網(wǎng)協(xié)議(IP)、傳輸控制協(xié)議(TCP)、用戶數(shù)據(jù)報(bào)協(xié)議(UDP)、以太網(wǎng)等。在示出的例子中,源地址和目的地址可以是IP地址。至少部分地由于IP地址的層次結(jié)構(gòu),IP地址的范圍可以有效地以前綴的形式來表示。整數(shù)值范圍,諸如源端口、目的端口、和協(xié)議類型116字段可以與其比較的那些整數(shù)值范圍,也可以表示為如圖1A所示的基于前綴的字段。然而,如結(jié)合圖1A所描述的,整數(shù)值的基于前綴的表示可能需要非常多的TCAM條目,浪費(fèi)存儲(chǔ)器空間和功率。這尤其如此是因?yàn)槊總€(gè)前綴都可以與其他待比較的字段組合來組合。在本說明書中公開的實(shí)施方式使得能夠存儲(chǔ)整數(shù)值,諸如但是不限于用于比較數(shù)據(jù)包110中的端口和協(xié)議類型116字段的值的范圍。
[0041]圖2A和圖2B示出了根據(jù)本公開實(shí)施方式的表示范圍的TCAM或其他存儲(chǔ)器中的示例性范圍和條目。
[0042]圖2A示出了根據(jù)實(shí)施方式在TCAM中存儲(chǔ)整數(shù)11 - 54的范圍。使用8比特寬度二進(jìn)制比特序列202來指定范圍(例如11 - 54)的邊界(例如開始和結(jié)束)點(diǎn)的二進(jìn)制表示。每個(gè)二進(jìn)制比特序列202都被分成二進(jìn)制比特子序列204的3比特寬的塊(chunk)。3比特的塊大小可以是可配置的或者可以動(dòng)態(tài)地確定。這樣,范圍的邊界點(diǎn)表示為元素的序列205,稱為值序列,包括由3比特塊表示的對(duì)應(yīng)確定值。序列中的每個(gè)元素都對(duì)應(yīng)于塊。為了解釋和說明的目的,值序列作為十進(jìn)制值序列示出,例如,(013)和(066)。所示出的塊大小不是限制性的。
[0043]如覆蓋范圍11 - 54的三個(gè)子范圍210所不,該范圍然后被分成若干子范圍。生成子范圍(例如[0 13] - [O I 7]、[O 2 O] - [O 5 7]、[O 6 O] - [0 6 6]),使得當(dāng)子范圍表示為對(duì)應(yīng)于該子范圍的邊界點(diǎn)的一對(duì)值序列時(shí),任何子范圍的邊界都符合一組預(yù)定的性質(zhì)。該組預(yù)定性質(zhì)包括:除了至多一對(duì),在兩個(gè)十進(jìn)制序列之間的各對(duì)對(duì)應(yīng)元素中具有匹配值。一對(duì)對(duì)應(yīng)元素包括來自子范圍的各個(gè)邊界點(diǎn)的元素。例如,在圖2A中,子范圍(OI 3) (O I 7)在子范圍的起點(diǎn)和終點(diǎn)之間只有第三個(gè)元素不同。當(dāng)對(duì)應(yīng)塊的值的整個(gè)允許范圍對(duì)特殊的元素對(duì)有效時(shí),來自值序列的特殊元素對(duì)免除具有匹配值的性質(zhì)。例如,如圖2A所示,在子范圍(O 2 0)-(0 5 7)中,第二和第三個(gè)元素都不同,但是第三個(gè)元素容納(accommodate)3比特塊的值的整個(gè)范圍。具體地,在起點(diǎn)的第三個(gè)元素(例如O)和終點(diǎn)的第三個(gè)元素(例如7)之間容納可以使用3比特(例如整數(shù)值O - 7)表示的整個(gè)范圍。第三個(gè)子范圍(O 6 O) - (O 6 6)在兩個(gè)邊界點(diǎn)之間只有第三個(gè)元素不同。
[0044]然后,將指定為值序列的每個(gè)子范圍表示為在實(shí)施方式中存儲(chǔ)為TCAM條目212或其他存儲(chǔ)器中的條目的比特串。如圖2A中所示,使用來自子范圍210的子范圍的值序列來從條目212中的一個(gè)確定對(duì)應(yīng)于該子范圍的條目。每個(gè)比特串206都包括多個(gè)比特子串208。比特串206中的比特子串208的數(shù)量等于對(duì)應(yīng)的一個(gè)十進(jìn)制序列中的元素的數(shù)量。每個(gè)比特子串208表示位于值序列中的對(duì)應(yīng)元素對(duì)的值之間的整數(shù)值。在一個(gè)實(shí)施方式中,比特串“OOOOOOOOOlxxxxlll”存儲(chǔ)在存儲(chǔ)器或TCAM中用于子范圍(013) - (017)的條目。比特子串中的每個(gè)比特表示兩個(gè)邊界點(diǎn)中的對(duì)應(yīng)塊的值之間的不同整數(shù)。例如,從左邊開始,第一比特表示整數(shù)“1”,第二比特表示整數(shù)“2”等。在上述示例比特串中,第一比特子串是“000”,表示在兩個(gè)十進(jìn)制序列的各自的第一元素之間,除了 O之外,沒有整數(shù)。第二比特子串“0000001”表示“I”是兩個(gè)十進(jìn)制序列的各自的第二元素之間的唯一整數(shù)。第三比特子串“xxxxlll”表示在第三十進(jìn)制序列的各自的第一元素之間的出現(xiàn)的整數(shù)3 - 7。“X”是特別值(例如,通配符或“不關(guān)心的比特”),表示X出現(xiàn)的任何位置在比特串中可以是O或I。注意,為了表示比特子串中的整數(shù)3,將表示3的比特以及所有不太重要的比特設(shè)置為I。
[0045]換種描述,每個(gè)比特子串表示對(duì)應(yīng)塊的有效值的范圍。如下面的描述,入站包的頭字段值用于導(dǎo)出塊的序列,并且每個(gè)塊與一個(gè)或多個(gè)比特串的對(duì)應(yīng)比特子串相比較。例如,上述的(比特串“OOOOOOOOOlxxxxlll”的)第一、第二、和第三比特子串將分別匹配具有例如
0、1、和3 - 7 (含3和7)之間的任何值的塊序列中的第一、第二、和第三塊的任何包報(bào)頭值??梢哉J(rèn)為比特子串具有各自的塊(或比特子序列)的比特編碼的(還稱為“比特編碼的”或“逐位編碼的”)值。
[0046]圖2B示出了整數(shù)范圍677 - 947的存儲(chǔ)。待表示的字段值是12比特整數(shù),因此能夠分成四個(gè)3比特塊。因此,范圍(例如001010100101-001110001011)的成塊的二進(jìn)制表示產(chǎn)生了十進(jìn)制值序列(示出為260項(xiàng))中的邊界點(diǎn)(1245) - (1613)。然后,基于范圍的值序列260導(dǎo)出子序列(262項(xiàng))。如上文所述,在特定子范圍的起點(diǎn)和終點(diǎn)的值序列之間,除非元素對(duì)容納對(duì)應(yīng)塊的值的整個(gè)范圍(例如,3比特的塊的值O - 7),否則除了來自起點(diǎn)值序列的至多一個(gè)元素,各個(gè)元素將與來自終點(diǎn)值序列的對(duì)應(yīng)元素相同。例如,第一子范圍(1245) - (1247)僅在第四個(gè)元素不同。第二子范圍(1250) - (1277)在第三和第四個(gè)元素不同,但是第四個(gè)元素容納對(duì)應(yīng)的3比特塊的值O - 7的全部范圍。第三子范圍(1300)-(1577)在第二、第三、和第四元素不同,但是第三和第四元素每個(gè)都容納各自的塊的全部范圍。264項(xiàng)示出了對(duì)應(yīng)于子范圍262的TCAM中存儲(chǔ)的比特串。另一示出的子范圍(1600)-(1607)僅在第四個(gè)元素不同,第一個(gè)元素也容納塊的有效值的全部范圍。
[0047]圖3示出了根據(jù)本公開實(shí)施方式的用于在TCAM中存儲(chǔ)整數(shù)值范圍的示例性系統(tǒng)300。系統(tǒng)300可以包括包處理裝置、數(shù)據(jù)庫(kù)系統(tǒng)、或需要快速查找操作的其他裝置或系統(tǒng)。系統(tǒng)300包括處理器302、查找表304、存儲(chǔ)器306、存儲(chǔ)器存儲(chǔ)模塊310、字段比較模塊312、處理模塊314、以及通信基礎(chǔ)設(shè)施(也稱為“互連總線”)316。
[0048]處理器302可以包括任何中央處理單元(CPU)或?qū)S锰幚砥?,例如但不限于專用集成電?ASIC)或現(xiàn)場(chǎng)可編程門陣列(FPGA)。處理器302可以執(zhí)行邏輯指令,以控制系統(tǒng)300的一個(gè)或多個(gè)組件的操作。處理器302可以控制系統(tǒng)300中的處理,并且例如,可以執(zhí)行或控制一個(gè)或多個(gè)包處理管線(packet processing pipeline)的執(zhí)行。包處理管線每個(gè)都包括包從進(jìn)入系統(tǒng)300到退出系統(tǒng)300的處理路徑的邏輯視圖。
[0049]查找表304包括數(shù)據(jù)結(jié)構(gòu)320,其能夠用于將對(duì)應(yīng)包的一個(gè)輸入字段值或一組輸入字段值與一個(gè)或多個(gè)存儲(chǔ)值相比較。數(shù)據(jù)結(jié)構(gòu)320包括多個(gè)條目322。每個(gè)條目322可以包括將要與單個(gè)字段比較的值,或者將要與多個(gè)選擇的字段比較的值的組合。根據(jù)一個(gè)實(shí)施方式,數(shù)據(jù)結(jié)構(gòu)320是TCAM。將輸入比特串326與條目322比較,以確定匹配328,其被輸出到應(yīng)用或其他接收實(shí)體或進(jìn)程(未示出)。根據(jù)一個(gè)實(shí)施方式,例如,在TCAM中,輸入比特串326可以同時(shí)與數(shù)據(jù)結(jié)構(gòu)320中存儲(chǔ)的一個(gè)、全部、或多個(gè)條目相比較,并且可以輸出選擇的一個(gè)或多個(gè)匹配328。根據(jù)另一實(shí)施方式,數(shù)據(jù)結(jié)構(gòu)320被實(shí)施為諸如存儲(chǔ)器306的存儲(chǔ)器中的鏈表、哈希表、或其他表格數(shù)據(jù)結(jié)構(gòu)。
[0050]存儲(chǔ)器306可以包括諸如靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、FLASH存儲(chǔ)器等中的一個(gè)或多個(gè)。存儲(chǔ)器306可以包括在系統(tǒng)(例如包處理裝置)中執(zhí)行的指令以及在裝置中處理包期間的任何包和相關(guān)信息。在各實(shí)施方式中,存儲(chǔ)器306也可以包括諸如磁盤、光盤、閃存等的永久性數(shù)據(jù)存儲(chǔ)介質(zhì)。這種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)可以用于存儲(chǔ)實(shí)現(xiàn)系統(tǒng)300的一個(gè)或多個(gè)部件的功能的軟件程序和/或邏輯指令。此外,存儲(chǔ)器306可以包括輸入包324,根據(jù)一個(gè)實(shí)施方式,字段比較模塊312將輸入包324與查找表304相比較。例如,可以經(jīng)由將系統(tǒng)300連接至網(wǎng)絡(luò)(未示出)的輸入接口(未示出)來接收輸入包324。輸入包324可以包括諸如圖1B中示出的包格式。
[0051]存儲(chǔ)器存儲(chǔ)模塊310運(yùn)行以在查找表304 (諸如,例如在TCAM或其他存儲(chǔ)器中)中存儲(chǔ)范圍。根據(jù)一個(gè)實(shí)施方式,存儲(chǔ)器存儲(chǔ)模塊310可以包括以下結(jié)合圖4、6和7描述的處理邏輯。
[0052]字段比較模塊312運(yùn)行以將一個(gè)或多個(gè)字段與查找表中的條目相比較。根據(jù)一個(gè)實(shí)施方式,將來自入站數(shù)據(jù)包的一個(gè)或多個(gè)選擇的字段與TCAM的條目相比較。根據(jù)另一實(shí)施方式,將所選擇的字段與存儲(chǔ)器(諸如,RAM)中的查找表的條目相比較。在另外一些實(shí)施方式中,可以將字段與TCAM和存儲(chǔ)器結(jié)構(gòu)兩者相比較。執(zhí)行字段與TCAM或其他查找表的比較,以確定一個(gè)或多個(gè)匹配條目。匹配可以是完全匹配或部分匹配。如本公開中其他地方的描述,條目中通配符的使用使得能夠確定部分匹配。根據(jù)一個(gè)實(shí)施方式,字段比較模塊可以包括以下結(jié)合圖5描述的處理邏輯。
[0053]處理模塊314運(yùn)行,以根據(jù)字段比較模塊312和/或查找表304的匹配輸出來處理包。處理可以包括路由和/或轉(zhuǎn)發(fā)、頭處理、包分類、入侵防御、數(shù)據(jù)庫(kù)查找、或在確定包或其他消息所屬的類型時(shí)對(duì)數(shù)據(jù)包或其他消息執(zhí)行的任何類型的處理。
[0054]互連總線316可以包括通信耦接包處理裝置300的各模塊的一個(gè)或多個(gè)互連總線結(jié)構(gòu)。例如,互連總線316可以包括諸如先進(jìn)高性能總線(AHB)的總線或其他內(nèi)部部件互連機(jī)制,AHB使用ARM Ltd發(fā)布的AMBA規(guī)范版本2中定義的總線協(xié)議。
[0055]圖4示出了根據(jù)本公開實(shí)施方式的用于在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍的方法400(步驟402 - 410)的流程圖。并不是所有步驟402 - 410都是必需的,并且可以以不同于圖4中示出的順序來進(jìn)行步驟402 - 410。在一個(gè)實(shí)施方式中,可以使用方法400來在將用于包字段查找操作的TCAM中存儲(chǔ)整數(shù)的范圍。例如,可以通過結(jié)合圖3描述的查找表304和存儲(chǔ)器存儲(chǔ)模塊310來實(shí)施方法400。
[0056]在步驟402,接收將要存儲(chǔ)在查找表中的整數(shù)范圍。該范圍可以作為用戶手動(dòng)輸入或機(jī)器生成輸入被接收。例如,該范圍可以是在系統(tǒng)初始化期間配置的用戶提供參數(shù)。在另一實(shí)施方式中,該范圍可以由系統(tǒng)基于一個(gè)或多個(gè)其他參數(shù)自動(dòng)確定。例如,系統(tǒng)可以基于將要在入站包中識(shí)別的協(xié)議的用戶配置選擇來自動(dòng)確定整數(shù)范圍。確定范圍的邊界點(diǎn),即,起點(diǎn)和終點(diǎn)。
[0057]在步驟404,確定塊大小。術(shù)語(yǔ)“塊大小”是指來自范圍或子范圍的邊界點(diǎn)的二進(jìn)制表示的連續(xù)比特組的比特大小。邊界點(diǎn)的二進(jìn)制表示的連續(xù)比特組可以稱為比特的子序列(也稱為“比特子序列”)。圖2A中的204項(xiàng)是比特子序列,其還可以稱為塊。如圖2A所示,子序列(除了各個(gè)比特序列中具有最高有效位(most significant bit)的子序列)的長(zhǎng)度為3比特。
[0058]在實(shí)施方式中,塊大小可能影響查找的各方面。例如,塊大小影響TCAM條目的長(zhǎng)度。根據(jù)一個(gè)實(shí)施方式,隨著塊大小增大,TCAM條目的長(zhǎng)度也增大。此外,當(dāng)塊大小減小時(shí),TCAM條目的數(shù)量減小。實(shí)際上,塊大小決定TCAM條目中諸如比特子串208的比特子串中的比特?cái)?shù)量。因此,可以基于考慮每個(gè)TCAM條目的所需大小和/或TCAM條目的所需數(shù)量來決定塊大小。
[0059]在步驟406,在接收到的輸入范圍中確定多個(gè)子范圍。所確定的子范圍基于來自各自的子序列的邊界的二進(jìn)制表示的塊大小的比特子序列??梢愿鶕?jù)以下描述的方法600來確定子范圍。
[0060]在步驟408,對(duì)于步驟406中確定的每個(gè)子范圍,生成比特串。比特串是子范圍的比特表示。更具體地,比特串包括多個(gè)比特子串,并且每個(gè)比特子串都是可以在對(duì)應(yīng)塊的子范圍的邊界點(diǎn)之間有效存在的整數(shù)的比特表示。
[0061]在步驟410,在TCAM中存儲(chǔ)比特串形式的所確定的子范圍。根據(jù)另一實(shí)施方式,在另一存儲(chǔ)器中以例如但不限于鏈表或哈希表的數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)子范圍。然后可以使用所存儲(chǔ)的子范圍來確定輸入包是否與一個(gè)或多個(gè)存儲(chǔ)的條目相匹配??梢愿鶕?jù)以下描述的方法700來執(zhí)行比特串的編碼和/或到TCAM或其他存儲(chǔ)器的存儲(chǔ)。
[0062]雖然示出了存儲(chǔ)單個(gè)字段作為條目,但是應(yīng)當(dāng)注意,根據(jù)其他實(shí)施方式,TCAM或查找表中的條目還可以包括兩個(gè)或更多字段的組合。對(duì)于每個(gè)字段,可以如結(jié)合圖4所描述的那樣來生成所存儲(chǔ)的比特串。
[0063]圖5示出了根據(jù)本公開實(shí)施方式的用于將入站包與整數(shù)值的范圍相比較的方法500 (步驟502 - 510)的流程圖。并不是所有的步驟502 - 510都是必需的,并且步驟502-510可以以不同于圖5不出的順序來進(jìn)行。在一個(gè)實(shí)施方式中,方法500可以用于將輸入包的一個(gè)或多個(gè)字段與查找表相比較。例如,可以通過結(jié)合圖3描述的查找表304和字段比較模塊312來實(shí)施方法500。
[0064]在步驟502,確定來自輸入包的所選擇的字段的值。根據(jù)一個(gè)實(shí)施方式,輸入包可以是通過輸入接口進(jìn)入例如系統(tǒng)300的包處理裝置的包。輸入包可以具有頭部分和數(shù)據(jù)部分,并且頭部分可以包括一個(gè)或多個(gè)字段。根據(jù)一個(gè)實(shí)施方式,輸入包可以具有與圖1B類似的格式??梢允褂眠x擇的字段將包與TCAM或其他查找表相比較。確定值包括識(shí)別對(duì)應(yīng)于特定所選字段的比特。
[0065]在步驟504,用二進(jìn)制表示字段值并且確定塊。根據(jù)一個(gè)實(shí)施方式,將來自輸入包的字段值的二進(jìn)制串表示的長(zhǎng)度配置為等于查找表中配置的范圍和子范圍的二進(jìn)制串表示的長(zhǎng)度。塊大小可以是配置參數(shù)。如在范圍或子范圍的邊界點(diǎn)的情況下所進(jìn)行的,將輸入包的所選字段的二進(jìn)制表示分組成塊大小的子序列。
[0066]在步驟506,形成包括多個(gè)比特子串的比特串,以表示待查找的字段值。每個(gè)比特子串逐位(bit-wise)表示來自所選字段的二進(jìn)制表示的各自的塊的值。與為TCAM條目配置的比特子串(諸如圖2A中所示的208項(xiàng))類似,對(duì)于可以在塊中表示的每個(gè)不同有效整數(shù),在表示入站包的字段值時(shí)使用的比特子串具有保留比特。
[0067]在步驟508,將表示輸入包的字段的比特串(“輸入字段比特串”)與查找表相比較。根據(jù)一個(gè)實(shí)施方式,將輸入字段比特串與TCAM比較,以確定匹配。如上文所述,可以將輸入字段比特串同時(shí)與全部或多個(gè)TCAM條目相比較。根據(jù)另一實(shí)施方式,可以執(zhí)行與另一存儲(chǔ)器數(shù)據(jù)結(jié)構(gòu)的比較。該比較操作產(chǎn)生所確定的一個(gè)或多個(gè)匹配。一個(gè)或多個(gè)匹配指示輸入字段值是否在范圍以及匹配的子范圍內(nèi)。
[0068]在步驟510,基于在步驟508確定的一個(gè)或多個(gè)匹配來處理輸入包。根據(jù)一個(gè)實(shí)施方式,在步驟508執(zhí)行的查找確定用于包轉(zhuǎn)發(fā)的下一跳,并且根據(jù)一個(gè)或多個(gè)匹配的TCAM條目來轉(zhuǎn)發(fā)包。其他示例性實(shí)施方式包括但不限于,選擇用于被本地應(yīng)用處理的包,執(zhí)行諸如分片(fragmentation)和重組或字段值的更改的包處理功能、選擇待丟棄或優(yōu)先化的包
坐寸ο
[0069]以上結(jié)合使用TCAM或其他查找表來比較入站包的單個(gè)字段描述了方法500。然而,執(zhí)行類型處理,以基于字段值的任意組合來執(zhí)行查找。在為每個(gè)入站包匹配多個(gè)字段的情況下,TCAM或查找表中的每個(gè)條目將包括對(duì)應(yīng)于若干字段的值的連接,并且例如,對(duì)應(yīng)于每個(gè)字段的值將如圖4所述的那樣被生成。類似地,與查找表比較的輸入值將包括輸入包的若干字段值,并且每個(gè)字段值可以以與結(jié)合圖5描述的類似方式來制定。
[0070]圖6示出了根據(jù)一個(gè)實(shí)施方式的用于確定范圍中的子范圍的方法600 (步驟602-612)的流程圖。并不是所有的步驟602 - 612都是必需的,并且步驟602 - 612可以以不同于圖6示出的順序來進(jìn)行。在一個(gè)實(shí)施方式中,可以使用方法600來確定特定范圍內(nèi)的多個(gè)子范圍。例如,可以通過結(jié)合圖3描述的存儲(chǔ)器存儲(chǔ)模塊310來實(shí)施方法600。
[0071]在步驟602,初始化子范圍標(biāo)識(shí)符(“子范圍id”)。子范圍id是表示特定范圍中的子范圍的順序編號(hào)的計(jì)數(shù)器。在所描述的實(shí)施方式中,子范圍id初始化為O,并且從范圍的低端到高端來確定子范圍。
[0072]在步驟604,將第一子范圍初始化到范圍的低端。如圖所示,可以通過將第一子范圍的開始邊界設(shè)置為范圍的開始邊界點(diǎn)(例如,范圍_起點(diǎn))來執(zhí)行初始化。例如,如圖2A所示,對(duì)于范圍11 - 54,第一子范圍(子范圍idO)的開始邊界設(shè)置為范圍的開始邊界點(diǎn)11。
[0073]可以反復(fù)地執(zhí)行步驟602至612,直到整個(gè)范圍被子范圍覆蓋。在步驟606,對(duì)于當(dāng)前子范圍,確定結(jié)束邊界點(diǎn),使得除了子范圍的開始邊界點(diǎn)的比特序列的至多一個(gè)元素,其余元素都等于結(jié)束邊界點(diǎn)中的對(duì)應(yīng)元素。這里提到的元素可以是邊界點(diǎn)的二進(jìn)制表示中的比特子序列或者來自對(duì)應(yīng)于邊界點(diǎn)的十進(jìn)制序列的十進(jìn)制數(shù)。當(dāng)來自兩個(gè)邊界點(diǎn)的對(duì)應(yīng)元素對(duì)覆蓋對(duì)應(yīng)塊的有效值的全部范圍時(shí),提供了除了子范圍的開始邊界點(diǎn)的比特序列的至多一個(gè)元素、其余元素都等于結(jié)束邊界點(diǎn)中的對(duì)應(yīng)元素這一規(guī)則的例外。關(guān)于確定子范圍的進(jìn)一步信息,讀者可以參照結(jié)合圖2A和圖2B的描述。
[0074]根據(jù)一個(gè)實(shí)施方式,可以通過接收用戶輸入來執(zhí)行確定子范圍結(jié)束邊界點(diǎn)。根據(jù)另一實(shí)施方式,可以如下所述自動(dòng)執(zhí)行子范圍結(jié)束邊界點(diǎn)的確定。
[0075]將開始邊界點(diǎn)的二進(jìn)制表示分組成塊,并且確定每個(gè)塊的值。為了說明和討論的目的,假設(shè)將各自的塊的值確定為十進(jìn)制整數(shù)。然而,在實(shí)施方式中,可以以各種其他形式來確定塊的值,包括通過保持塊的二進(jìn)制形式。當(dāng)以十進(jìn)制來確定時(shí),開始邊界點(diǎn)可以表示為十進(jìn)制序列。以上描述了“十進(jìn)制序列”,并且實(shí)例在圖2A的205項(xiàng)中示出。在圖2A中,第一子范圍的開始邊界點(diǎn)表示為(013)。
[0076]可以使用與開始邊界點(diǎn)相同數(shù)量的塊來初始化子范圍結(jié)束邊界點(diǎn)。
[0077]以從最小值塊(例如,最右)到最聞值塊(例如,最左)的順序來考慮子范圍開始邊界點(diǎn)的每個(gè)塊。例如,對(duì)于圖2A中示出的第一子范圍的開始邊界點(diǎn)(013),按順序考慮塊值
3、1 和 O。
[0078]如果當(dāng)前開始邊界塊為O且在當(dāng)前結(jié)束邊界塊的右邊的塊(如果有的話)為最大塊值,則將當(dāng)前結(jié)束邊界塊設(shè)置為最大有效值。最大有效值是最大塊值或可分配給塊而不會(huì)超越范圍邊界的最大值。
[0079]如果當(dāng)前開始邊界塊為O并且當(dāng)前結(jié)束邊界塊是最大塊值,或者如果當(dāng)前開始和結(jié)束邊界塊有相同值(例如,圖2A中的子范圍(013) - (017)的第一塊),則繼續(xù)考慮當(dāng)前塊的左邊的塊并且對(duì)下一塊重復(fù)前一步驟(例如,將當(dāng)前塊指針移動(dòng)到其當(dāng)前位置的左側(cè))。如果當(dāng)前的左邊沒有其他塊,則已經(jīng)確定了子范圍。
[0080]否則,如果當(dāng)前開始邊界塊和當(dāng)前結(jié)束邊界塊具有不同值,則將結(jié)束邊界中當(dāng)前的左邊的塊設(shè)置成與開始邊界中的對(duì)應(yīng)元素的相同值。已經(jīng)確定了子范圍。
[0081]在步驟608,確定當(dāng)前子范圍結(jié)束點(diǎn)是否是范圍的結(jié)束點(diǎn)。如果是,則已經(jīng)確定了所有子范圍,并且已經(jīng)完成了方法600的處理。
[0082]如果不是,則在步驟610,將子范圍標(biāo)識(shí)符遞增,以開始確定下一子范圍。實(shí)際上,這意味著對(duì)下一步驟中提及當(dāng)前子范圍是指接下來要確定的子范圍,即,對(duì)應(yīng)于新的子范圍標(biāo)識(shí)符的子范圍。
[0083]然后,在步驟612,當(dāng)前子范圍起點(diǎn)確定為前一子范圍結(jié)束點(diǎn)之后的下一整數(shù)。根據(jù)一個(gè)實(shí)施方式,通過向前一子范圍終點(diǎn)加I來確定當(dāng)前子范圍起點(diǎn)。[0084]在步驟612之后,方法600的處理前進(jìn)到步驟606,以確定當(dāng)前子范圍終點(diǎn)。
[0085]圖7示出了根據(jù)實(shí)施方式的用于對(duì)子范圍編碼的方法700 (步驟702至714)的流程圖。并不是所有的步驟702 - 714都是必需的,并且步驟702 - 714可以以不同于圖7示出的順序來進(jìn)行。在一個(gè)實(shí)施方式中,可以使用方法700對(duì)TCAM條目編碼。例如,可以通過結(jié)合圖3描述的查找表304和存儲(chǔ)器存儲(chǔ)模塊310來實(shí)施方法700。
[0086]在步驟702,選擇待編碼的子范圍。例如,可能已經(jīng)根據(jù)圖6確定了子范圍。
[0087]在步驟704,選擇子范圍的塊。根據(jù)一個(gè)實(shí)施方式,與子范圍的邊界點(diǎn)對(duì)應(yīng)的十進(jìn)制序列的各自的元素可以作為塊被訪問。根據(jù)另一實(shí)施方式,與子范圍的邊界點(diǎn)對(duì)應(yīng)的比特序列的各自的比特子序列可以作為塊被訪問。重復(fù)步驟704 - 714,直到所選擇的子范圍的所有塊都存儲(chǔ)在TCAM或其他查找表數(shù)據(jù)結(jié)構(gòu)中。根據(jù)一個(gè)實(shí)施方式,從最右側(cè)的塊(例如,具有最低有效位(least significant bit)的塊)開始,順序選擇來自比特串的塊用于使用步驟704 - 714的處理。
[0088]在步驟706,確定當(dāng)前塊在子范圍開始序列和子范圍結(jié)束序列兩者中是否具有相同值。如果是(即,兩個(gè)序列中具有相同值),則在步驟708,在比特串中將塊值編碼。逐位執(zhí)行編碼,例如,對(duì)應(yīng)于當(dāng)前塊的(比特串的)比特子串具有用于塊的每個(gè)有效值的保留比特。根據(jù)一個(gè)實(shí)施方式,通過對(duì)應(yīng)于待編碼的值的保留比特和保留比特右邊的所有其他位(例如,具有更低值的比特)設(shè)置為“1”,來執(zhí)行比特子串的編碼。例如,如圖2A所示,將子范圍
(060)- (066)中的第二元素(塊)編碼產(chǎn)生比特子串“0111111”,將六個(gè)最高有效位設(shè)置為“I”并且其余比特設(shè)置為“O”。
[0089]如果在步驟706確定開始和結(jié)束邊界點(diǎn)中的當(dāng)前塊值不同,則方法700的處理進(jìn)行到步驟710。在步驟710,確定當(dāng)前塊的有效值是否包括該塊的全部范圍。根據(jù)一個(gè)實(shí)施方式,確定開始邊界點(diǎn)的O當(dāng)前塊值和結(jié)束邊界點(diǎn)的最大塊值(例如,塊中的所有比特為1),以指示當(dāng)前塊的有效值包括該塊的全部范圍。
[0090]如果是(例如,當(dāng)前塊的有效值包括塊的全部范圍),則在步驟714,將塊編碼為通配符。例如,在圖2A中,將子范圍(020) - (057)的第三元素編碼為“xxxxxxx”,表示7個(gè)比特的任一個(gè)可以是“I”或“O”。
[0091]如果不是(例如,當(dāng)前塊的有效值不包括塊的全部范圍),則當(dāng)前塊的有效值包括值的范圍。因此,將對(duì)應(yīng)的比特子串編碼,以容納開始子范圍和結(jié)束子范圍之間的當(dāng)前塊的有效值的整個(gè)范圍。例如,如圖2A所示,將子范圍(013) - (017)中的第三元素(塊)編碼產(chǎn)生了比特子串“xxxxlll”:通過將三個(gè)最低有效位設(shè)置為“ 1”,記錄了塊的最低有效值3,并且將比特4 - 7設(shè)置為通配符,以指示這些比特中的每個(gè)可以是“I”或“O”。
[0092]如上所述,重復(fù)步驟704 - 714,以對(duì)每個(gè)塊編碼。各自的塊的編碼導(dǎo)致TCAM或存儲(chǔ)器中的其他數(shù)據(jù)中存儲(chǔ)的條目。
[0093]本文描述的通信裝置的代表性功能可以在硬件、軟件、或他們的一些組合中來實(shí)現(xiàn)。例如,基于本文中給出的討論,本領(lǐng)域普通技術(shù)人員將理解,可以使用計(jì)算機(jī)處理器、計(jì)算機(jī)邏輯、ASIC、FPGA、DSP等來實(shí)施處理400、500、600和700。因此,執(zhí)行本文描述的處理功能和/或算法的任何處理器都在本公開的范圍和精神內(nèi)。
[0094]應(yīng)當(dāng)理解,將使用詳細(xì)說明書部分而非摘要部分來解釋權(quán)利要求。摘要部分可能闡述了發(fā)明人所設(shè)想的本公開的一個(gè)或多個(gè)而非全部的示例性實(shí)施方式,因此,不以任何方式限制本公開和所附的權(quán)利要求。
[0095]以上已經(jīng)借助于示出實(shí)現(xiàn)具體功能及其關(guān)系的功能構(gòu)造塊來描述了本公開。為了描述的方便,本文任意地限定了這些功能構(gòu)造塊的邊界。只要能適當(dāng)?shù)貓?zhí)行具體功能及其關(guān)系,也可以限定其他邊界。
[0096]【具體實(shí)施方式】的上述描述完全揭示了本公開的總體性質(zhì),并且通過應(yīng)用本領(lǐng)域的技術(shù)知識(shí),在不背離本公開的一般概念的情況下,無需過分實(shí)驗(yàn),其他人就能夠容易地對(duì)【具體實(shí)施方式】進(jìn)行修改和/或調(diào)整用于各種應(yīng)用。因此,基于本文給出的教導(dǎo)和引導(dǎo),這種適應(yīng)性修改和調(diào)整也在所公開的實(shí)施方式的等同方案的含義和范圍內(nèi)。應(yīng)當(dāng)理解,本文的措辭和術(shù)語(yǔ)用于描述性而非限制性的,本說明書的措辭和術(shù)語(yǔ)將由本領(lǐng)域普通技術(shù)人員根據(jù)本文的教導(dǎo)和指引來解釋。
[0097]本發(fā)明的外延和范圍不應(yīng)由任何上述示例性實(shí)施方式限制,而是應(yīng)當(dāng)僅根據(jù)權(quán)利要求及其等同方案來限定。
【權(quán)利要求】
1.一種用于在存儲(chǔ)器中存儲(chǔ)整數(shù)值的范圍的方法,包括: 確定所述范圍中的子范圍,使得在來自分別是所述子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,在第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值等于第二多個(gè)比特子序列中的相應(yīng)比特子序列的值或者值為O且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值; 基于所述第一和第二多個(gè)比特子序列的值形成第一比特串;以及 在所述存儲(chǔ)器中存儲(chǔ)所述第一比特串。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述存儲(chǔ)包括在三態(tài)內(nèi)容尋址存儲(chǔ)器(TCAM)中存儲(chǔ)所述第一比特串。
3.根據(jù)權(quán)利要求1所述的方法,其中,所述形成包括: 生成與來自所述第一多個(gè)比特子序列的比特子序列和來自所述第二多個(gè)比特子序列的相應(yīng)比特子序列的各個(gè)配對(duì)相應(yīng)的各自的比特子串;以及連接所生成的比特子串以產(chǎn)生所述比特串。
4.根據(jù)權(quán)利要求3所述的方法,其中,各個(gè)所述各自的比特子串的長(zhǎng)度至少等于來自所述第一多個(gè)比特子序列的比特子序列的最大值。
5.根據(jù)權(quán)利要求3所述的方法,其中,生成各自的比特子串包括: 確定與所述各個(gè)配對(duì)相應(yīng)的有效值的范圍;以及 基于所確定的有效值的范圍來設(shè)置所述比特子串中的比特值,其中,所述比特子串中的各自的比特位置與所確定的有效值的范圍中的值相關(guān)聯(lián)。
6.根據(jù)權(quán)利要求5所述的方法,其中,在所述比特子串中設(shè)置比特值包括: 將所述比特子串的前m個(gè)比特設(shè)置為1,其中,m是來自所述第一多個(gè)比特子序列的比特子序列的有效值;以及 將所述前m個(gè)比特后的η個(gè)比特設(shè)置為通配符,其中,η是來自所述第一多個(gè)比特子序列的比特子序列和來自所述第二多個(gè)比特子序列的比特子序列之間的差。
7.根據(jù)權(quán)利要求1所述的方法,還包括: 從數(shù)據(jù)包的字段值的二進(jìn)制表示確定第三多個(gè)比特子序列; 基于所述第三多個(gè)比特子序列的值形成第二比特串; 將所述第二比特串與所存儲(chǔ)的第一比特串相比較;以及 基于所述比較來處理所述數(shù)據(jù)包。
8.根據(jù)權(quán)利要求7所述的方法,其中,根據(jù)預(yù)定的比特子序列長(zhǎng)度來確定所述第一、第二和第三多個(gè)比特子序列。
9.根據(jù)權(quán)利要求7所述的方法,其中,所述第一、第二和第三多個(gè)比特子序列中的比特子序列數(shù)量相等。
10.一種系統(tǒng),包括: 處理器; 耦接至所述處理器的至少一個(gè)存儲(chǔ)器; 存儲(chǔ)器存儲(chǔ)模塊,被配置為: 確定范圍中的子范圍,使得在來自分別是所述子范圍的開始值和結(jié)束值的二進(jìn)制表示的第一和第二多個(gè)比特子序列中,在第一多個(gè)比特子序列中除了至多一個(gè)比特子序列外的所有比特子序列的值等于第二多個(gè)比特子序列中的相應(yīng)比特子序列的值或者值為O且第二多個(gè)比特子序列的相應(yīng)比特子序列具有最大值; 基于第一和第二比特子序列的值形成第一比特串;以及 在所述至少一個(gè)存儲(chǔ)器中存 儲(chǔ)所述第一比特串。
【文檔編號(hào)】H04L12/747GK103516614SQ201210589675
【公開日】2014年1月15日 申請(qǐng)日期:2012年12月28日 優(yōu)先權(quán)日:2012年6月28日
【發(fā)明者】孫巖 申請(qǐng)人:美國(guó)博通公司