內(nèi)部搜索引擎架構(gòu)的制作方法【專利說明】?jī)?nèi)部搜索引擎架構(gòu)[0001]相關(guān)串請(qǐng)的交叉引用[0002]本申請(qǐng)要求對(duì)通過引用而將其公開內(nèi)容完全結(jié)合于此、提交于2013年6月4日的第61/830,786號(hào)美國(guó)臨時(shí)專利申請(qǐng)和提交于2013年12月17日的第61/917,215號(hào)美國(guó)臨時(shí)專利申請(qǐng)二者的優(yōu)先權(quán)和權(quán)益。
技術(shù)領(lǐng)域:
[0003]本公開內(nèi)容涉及一種處理分組的網(wǎng)絡(luò)設(shè)備?!?br>背景技術(shù):
】[0004]這里提供的【
背景技術(shù):
】描述是為了一般地呈現(xiàn)公開內(nèi)容的上下文的目的。當(dāng)前具名的發(fā)明人的工作在這一【
背景技術(shù):
】章節(jié)中描述該工作的程度上以及該描述的可以在提交時(shí)未另外被限定為現(xiàn)有技術(shù)的方面既未被明示地也未被暗示地承認(rèn)為相對(duì)于本公開內(nèi)容的現(xiàn)有技術(shù)。[0005]網(wǎng)絡(luò)設(shè)備對(duì)分組數(shù)據(jù)執(zhí)行各種搜索操作(包括確切匹配(EM)搜索和最長(zhǎng)前綴匹配(LPM))作為它們的分組處理的部分。常規(guī)地,用于這些搜索和匹配操作的存儲(chǔ)器空間被比較差地利用。另外,對(duì)用于EM和LPM搜索的存儲(chǔ)器空間的高效管理可能有跳戰(zhàn)。用于分類的常規(guī)方法通常地需要復(fù)雜而昂貴的存儲(chǔ)器部件并且可能對(duì)于一些應(yīng)用而言過于消耗時(shí)間?!?br/>發(fā)明內(nèi)容】[0006]公開內(nèi)容的一個(gè)或者多個(gè)示例實(shí)施例總體上涉及存儲(chǔ)和取回網(wǎng)絡(luò)轉(zhuǎn)發(fā)信息,比如轉(zhuǎn)發(fā)0SI層2MAC地址和層3IP路由信息。存儲(chǔ)器組的流水線將網(wǎng)絡(luò)地址存儲(chǔ)為流水線化的數(shù)據(jù)結(jié)構(gòu)。流水線化的數(shù)據(jù)結(jié)構(gòu)被分布為數(shù)據(jù)結(jié)構(gòu)的在存儲(chǔ)器組中的每個(gè)存儲(chǔ)器組處分離地可搜索的值。[0007]流水線的第一存儲(chǔ)器組存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的值,并且在第一存儲(chǔ)器組處存儲(chǔ)的每個(gè)值指向包含數(shù)據(jù)結(jié)構(gòu)的下一值的下一存儲(chǔ)器組。【附圖說明】[0008]圖1示出了根據(jù)示例實(shí)施例的存儲(chǔ)器組的流水線。[0009]圖2示出了在根據(jù)示例實(shí)施例的流水線的存儲(chǔ)器組之中分布的數(shù)據(jù)值。[0010]圖3示出了根據(jù)示例實(shí)施例的包含EM表和桶(bucket)的存儲(chǔ)器組的流水線。[0011]圖4示出了根據(jù)示例實(shí)施例的示例方法的流程圖。[0012]圖5示出了根據(jù)示例實(shí)施例的利用EM引擎可訪問和LPM引擎可訪問表的組合的存儲(chǔ)器組的流水線。[0013]圖6是根據(jù)示例實(shí)施例的示例方法的流程圖?!揪唧w實(shí)施方式】[0014]在以下討論中,為了更清楚和簡(jiǎn)潔而省略了對(duì)公知功能和構(gòu)造的描述。[0015]圖1示出了網(wǎng)絡(luò)100、網(wǎng)絡(luò)設(shè)備110和流水線200。網(wǎng)絡(luò)設(shè)備110被配置為緩沖任何接收的分組并且向流水線200發(fā)送分組。流水線200包括處理器核201、存儲(chǔ)器組211、存儲(chǔ)器組221和存儲(chǔ)器組231。[0016]網(wǎng)絡(luò)設(shè)備110被配置為請(qǐng)求流水線200響應(yīng)于從網(wǎng)絡(luò)100接收分組(比如分組101)來執(zhí)行資源密集查找操作(比如對(duì)于一個(gè)或者多個(gè)分組轉(zhuǎn)發(fā)地址的值的多個(gè)搜索)。另外,網(wǎng)絡(luò)設(shè)備110被配置為接收串行分組流(未示出),其中該流的一個(gè)或者多個(gè)分組的至少一部分當(dāng)在網(wǎng)絡(luò)設(shè)備110處的處理操作之后由網(wǎng)絡(luò)設(shè)備110用來對(duì)接收的串行分組流執(zhí)行查找操作。[0017]在一個(gè)實(shí)施例中,流水線200包括存儲(chǔ)器組211、存儲(chǔ)器組221、231這多個(gè)存儲(chǔ)器組,存儲(chǔ)器組中的每個(gè)存儲(chǔ)器組被配置為每時(shí)鐘周期執(zhí)行至少一個(gè)查找操作。因而,在一個(gè)實(shí)施例中,在單個(gè)時(shí)鐘周期期間的查找操作的總數(shù)與存儲(chǔ)器組的總數(shù)直接地成比例。[0018]另外,流水線200的每個(gè)存儲(chǔ)器組被配置為對(duì)于串行分組流的相應(yīng)分組執(zhí)行相應(yīng)查找操作并且向下一存儲(chǔ)器組傳遞結(jié)果的指示而且也接收串行分組流的下一分組。因而,在一個(gè)實(shí)施例中,流水線200被配置為在不同時(shí)鐘周期搜尋的分組或者分組的部分的總數(shù)與存儲(chǔ)器組的總數(shù)直接地成比例。[0019]根據(jù)一個(gè)示例實(shí)施例,處理器核201被配置為處理從網(wǎng)絡(luò)接收的數(shù)據(jù)分組、有選擇地向流水線200的控制器210發(fā)送數(shù)據(jù)和從控制器230接收數(shù)據(jù)。來自控制器230的接收的數(shù)據(jù)指示多個(gè)查找操作的結(jié)果,查找操作中的每個(gè)查找操作在存儲(chǔ)器組中的相應(yīng)存儲(chǔ)器組處被執(zhí)行。[0020]網(wǎng)絡(luò)設(shè)備110包括被配置為向流水線200發(fā)送用于查詢的數(shù)據(jù)單元的分組處理器(未示出),該查詢關(guān)于網(wǎng)絡(luò)分組轉(zhuǎn)發(fā)操作(比如發(fā)現(xiàn)用于轉(zhuǎn)發(fā)和/或路由的下一位置)。流水線200是在網(wǎng)絡(luò)設(shè)備110的分組處理引擎外部的資源并且被配置為執(zhí)行資源密集處理操作(比如地址查找)作為分組處理的部分。[0021]根據(jù)示例實(shí)施例,處理核201包括可編程處理器的流水線、被布置為ASIC流水線的多個(gè)處理引擎或者大量非流水線化的運(yùn)行到完成處理器。[0022]流水線200通常地是網(wǎng)絡(luò)設(shè)備的部分并且作為由分組處理器用于各種地址查找操作的資源。根據(jù)一個(gè)實(shí)施例,雖然是網(wǎng)絡(luò)設(shè)備的部分,但是流水線200在分組處理器外部。[0023]流水線200允許存儲(chǔ)和取回作為在流水線的存儲(chǔ)器組之中分布的數(shù)據(jù)結(jié)構(gòu)而被存儲(chǔ)的網(wǎng)絡(luò)轉(zhuǎn)發(fā)和/或路由地址的多個(gè)值。如這里所用,可互換地使用術(shù)語轉(zhuǎn)發(fā)地址和路由地址。在一個(gè)實(shí)施例中,流水線處理器被配置為存儲(chǔ)、搜尋和重新組合通過搜索數(shù)據(jù)結(jié)構(gòu)的每個(gè)分量而發(fā)現(xiàn)的分布的值。[0024]根據(jù)一個(gè)示例實(shí)施例,流水線200形成與轉(zhuǎn)發(fā)地址中的相應(yīng)轉(zhuǎn)發(fā)地址對(duì)應(yīng)的數(shù)據(jù)結(jié)構(gòu),并且每個(gè)存儲(chǔ)器組存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的一部分。這樣,數(shù)據(jù)結(jié)構(gòu)的第一部分被存儲(chǔ)在第一存儲(chǔ)器組處,并且后續(xù)存儲(chǔ)器組各自分別存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的后續(xù)部分。取回?cái)?shù)據(jù)結(jié)構(gòu)需要遍歷包含這些部分的存儲(chǔ)器組中的存儲(chǔ)器組。[0025]通過將跨距表(stridetable)和前綴列表平衡為它們最有效而在存儲(chǔ)器組之中分布數(shù)據(jù)結(jié)構(gòu)的部分來實(shí)現(xiàn)存儲(chǔ)器緊湊和高效取回二者??缇啾碓诖鎯?chǔ)的數(shù)據(jù)具有高熵時(shí)更佳并且前綴列表在存儲(chǔ)的數(shù)據(jù)具有低熵時(shí)更佳。[0026]減少的搜索復(fù)雜性與將轉(zhuǎn)發(fā)地址拆分成分布式數(shù)據(jù)結(jié)構(gòu)直接地有關(guān)。數(shù)據(jù)結(jié)構(gòu)的每個(gè)部分需要比非拆分的轉(zhuǎn)發(fā)地址或者非流水線化的數(shù)據(jù)結(jié)構(gòu)將需要的取回空間和計(jì)算復(fù)雜性更少的取回空間和計(jì)算復(fù)雜性,因?yàn)閿?shù)據(jù)結(jié)構(gòu)的每個(gè)部分被存儲(chǔ)在存儲(chǔ)器組的相應(yīng)分區(qū)的區(qū)域處。[0027]根據(jù)一個(gè)示例實(shí)施例,存儲(chǔ)器組的每個(gè)分區(qū)的區(qū)域是具有分離的輸入/輸出總線的物理上分離的存儲(chǔ)器組。根據(jù)一個(gè)示例實(shí)施例,相應(yīng)分區(qū)的區(qū)域是相同物理存儲(chǔ)器組的邏輯分區(qū)。[0028]分區(qū)的區(qū)域可尋址并且減少將在非分區(qū)的存儲(chǔ)器組的所有可用存儲(chǔ)器位置可用于存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)的該部分時(shí)預(yù)計(jì)的計(jì)算復(fù)雜性。另外,取回?cái)?shù)據(jù)結(jié)構(gòu)的每個(gè)部分的操作被簡(jiǎn)化,因?yàn)槊總€(gè)存儲(chǔ)器組僅包含數(shù)據(jù)結(jié)構(gòu)的一部分,從而允許關(guān)于第一轉(zhuǎn)發(fā)地址的第一操作在存儲(chǔ)器組211中搜尋數(shù)據(jù)結(jié)構(gòu)的部分分量,并且然后移到下一存儲(chǔ)器組221,而關(guān)于某個(gè)其它搜索的第二操作被允許訪問第一存儲(chǔ)器組211。因而,流水線200允許并行執(zhí)行各自用于不同轉(zhuǎn)發(fā)地址的多個(gè)部分搜索。[0029]圖1示出了查找流水線200包括通信地耦合到處理器核201并且也分別通信地耦合到存儲(chǔ)器組211、存儲(chǔ)器組221和存儲(chǔ)器組231中的每個(gè)存儲(chǔ)器組的控制器210、控制器220和控制器230。另外,根據(jù)示例實(shí)施例,在存儲(chǔ)器組221與存儲(chǔ)器組231之間存在多個(gè)存儲(chǔ)器組和相應(yīng)控制器(未示出)。[0030]存儲(chǔ)器組211包括至少一個(gè)分區(qū)的區(qū)域,比如跨距表215??缇啾戆▽⑴c數(shù)據(jù)單元的一部分組合的至少一個(gè)函數(shù)。在組合函數(shù)和數(shù)據(jù)單元時(shí),消耗數(shù)據(jù)單元的部分。對(duì)數(shù)據(jù)單元的消耗后續(xù)地用來確定由跨距表存儲(chǔ)的值。換而言之,跨距表215被配置為在它的本地函數(shù)(即,密鑰函數(shù))與數(shù)據(jù)單元組合時(shí)揭示數(shù)據(jù)結(jié)構(gòu)的值,由此完成密鑰。[0031]根據(jù)一個(gè)示例實(shí)施例,跨距表包括16個(gè)跨距值條目??缇啾戆◤漠?dāng)前跨距表指向前綴列表的塊地址。在從當(dāng)前跨距表指向前綴列表的所有跨距值條目之中共享指向前綴列表的塊地址的最高有效位。[0032]跨距表也包括從當(dāng)前跨距表指向另一跨距表的塊地址。在指向跨距表的所有跨距值條目之中共享指向另一跨距表的塊地址的最高有效位。[0033]跨距表還包括屬于先前跨距值條目的20位下一跳指針。根據(jù)一個(gè)示例實(shí)施例,在下一跳指針是OxFFFF時(shí),那么下一跳指針無效并且使用來自先前跨距的下一跳指針。[0034]根據(jù)一個(gè)示例實(shí)施例,跨距表的本地函數(shù)包括不完整值的多個(gè)位。數(shù)據(jù)單元的部分(另一數(shù)目的位)與本地函數(shù)組合以指示跨距表內(nèi)的位置,該位置包含數(shù)據(jù)結(jié)構(gòu)的值。另夕卜,在數(shù)據(jù)單元的另一部分或者另一數(shù)據(jù)單元的一部分組合某個(gè)數(shù)目的它的位與跨距表的本地函數(shù)的位時(shí),指示跨距表內(nèi)的不同位置。[0035]存儲(chǔ)器組221包括分別包括跨距表225和前綴表226的至少兩個(gè)邏輯分區(qū)。[0036]跨距表225包括將與數(shù)據(jù)單元組合以揭示數(shù)據(jù)結(jié)構(gòu)的第二值的第二本地函數(shù)。這一數(shù)據(jù)單元是數(shù)據(jù)單元的由跨距表215使用的未消耗的部分。數(shù)據(jù)結(jié)構(gòu)的這一第二值是指轉(zhuǎn)發(fā)地址的在轉(zhuǎn)發(fā)地址的第一部分后續(xù)的第二部分。在一個(gè)實(shí)施例中,轉(zhuǎn)發(fā)地址是層3地址,然而,在其它實(shí)施例中,轉(zhuǎn)發(fā)地址是層2地址。[0037]前綴表226包含多個(gè)鏈表的多個(gè)節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)包含與作為數(shù)據(jù)結(jié)構(gòu)的一部分的一個(gè)或者多個(gè)相應(yīng)轉(zhuǎn)發(fā)地址對(duì)應(yīng)的當(dāng)前第1頁(yè)1 2 3 4