專利名稱:靜態(tài)分組分類器的簡明表示的制作方法
靜態(tài)分組分類器的簡明表示 發(fā)明領(lǐng)域
本發(fā)明涉及通信網(wǎng)絡(luò)路由器和路由技術(shù),尤其涉及用于路由數(shù)據(jù)分組的分 組分類器的表示。
背景技術(shù):
因特網(wǎng)路由器使用分類器基于傳入分組的報頭字段將傳入分組分類,該分
類器通常被實現(xiàn)為規(guī)則表。每個分類器規(guī)則指定一對(F, A),其中F是過濾器 而A是動作。如果傳入分組與分類器中的過濾器相匹配,則相關(guān)聯(lián)的動作指定 對此分組作如何處理。典型動作包括分組轉(zhuǎn)發(fā)和丟棄。
d維過濾器F是d元組(F[l], F[2〗,...,F(xiàn)[d〗),其中F[i]是可指定目的地址、 源地址、端口號、協(xié)議類型、TCP標志和其它信息的范圍。如果分組的報頭字 段值落在范圍F[l], ...,F[d]內(nèi),分組被認為匹配濾波器F。由于分組與分類器中 一個以上的過濾器相匹配是可能的,因此平局決勝制(tiebreaker)通常被用來 確定唯一匹配過濾器。在一維分組分類(g卩,d=l)中,F(xiàn)[l]常常被指定為目 的地址前綴,并且査找涉及查找與分組的目的地址相匹配的最長前綴。盡管l 維前綴過濾器對于基于目的地的分組轉(zhuǎn)發(fā)而言是足夠的,但是例如防火墻、服 務(wù)質(zhì)量和虛擬專用網(wǎng)應(yīng)用一般需要高維過濾器。
一維分組分類
如已敘述的,l維分類器中的過濾器被假定為目的地址的前綴。針對l維 分類器的表示開發(fā)的許多數(shù)據(jù)結(jié)構(gòu)是基于二叉trie (單詞査找樹)結(jié)構(gòu)。二叉 trie是二叉樹結(jié)構(gòu),其中每個節(jié)點具有數(shù)據(jù)域和兩個子女域。分支是基于搜索 關(guān)鍵字中的位來進行的。如果搜索關(guān)鍵字的第/位(搜索關(guān)鍵字的最左位為位 0)為0,則在層z'(根為層0)后跟隨左子女分支,否則跟隨右子女分支。層/ 節(jié)點將其長度為/的前綴存儲在其數(shù)據(jù)字段中。將在其中存儲前綴的節(jié)點是通過使用該前綴作為關(guān)鍵字執(zhí)行搜索來確定的。N可對應(yīng)于二叉trie中的節(jié)點。 Q(N)可以是由從根到N的路徑定義的位串。Q(N)是對應(yīng)于N的前綴。在Q(N) 是要存儲在trie中的前綴之一的情形中,Q(N)被存儲在N.data (N.數(shù)據(jù))中。
圖l(a)示出了 5個前綴的集合。每個前綴的右端處所示的*既不被用于以 上描述的分支也不被用于長度計算。因此,P2的長度為l。圖l(b)示出了與前 綴的集合相對應(yīng)的二叉trie。陰影節(jié)點對應(yīng)于規(guī)則表中的前綴,且各自包含相 關(guān)聯(lián)前綴的下一跳。圖l(b)中的二叉trie與1位trie的不同之處在于,1位trie 在節(jié)點中存儲最多2個前綴,而二叉trie的每個節(jié)點存儲至多l(xiāng)個前綴。由于 前綴存儲策略中的這種不同,二叉trie在存儲IP.v4前綴時可具有最多達33層, 而1位trie中層數(shù)至多為32。 二叉trie在存儲IP.v4前綴時可具有最多達129 層,而l位trie中層數(shù)至多為128。
對于任何目的地址A最長匹配前綴可通過沿起始于trie根并由J支配的 路徑來尋找。在此路徑中最后遇到的前綴是與J匹配的最長前綴。雖然這種搜 索算法相對簡單,但是其導(dǎo)致與trie中的層數(shù)一樣多的高速緩存缺失。甚至對 于IP.v4,此數(shù)目——最多為33——也過大而無法以線速度分類/轉(zhuǎn)發(fā)分組。諸 如LCtrie、 Lulea、樹位圖、多位trie和形態(tài)轉(zhuǎn)移trie等若干策略皆已被提出以 改善二叉trie的査找性能。所有這些策略可將二叉trie的每個子樹的若干層折 疊(collapse)成稱為超節(jié)點的單個節(jié)點,其可用比折疊成超節(jié)點的層數(shù)少的存 儲器訪問(MA)的數(shù)目來搜索。例如,多位trie中的正確的子女指針(以及 其相關(guān)聯(lián)的前綴)可用單個存儲器訪問來訪問,而與多位節(jié)點的大小無關(guān)。由 超節(jié)點構(gòu)成的結(jié)果trie被稱為超節(jié)點trie。
已針對超節(jié)點的緊湊表示開發(fā)了數(shù)據(jù)結(jié)構(gòu)。 一種這樣的結(jié)構(gòu)是由Song等 人提出的形態(tài)轉(zhuǎn)移trie (SST)結(jié)構(gòu)(參見"Shape Shifting Tries for Faster IP Route Lookup (用于快速IP路由查找的形態(tài)轉(zhuǎn)移trie)",第13次IEEE國際會議關(guān) 于網(wǎng)絡(luò)協(xié)議的會議記錄,2005),其很大程度上又是從Eatherton等人的樹位 圖(TBM)方案(參見"bitmap:hardware/software IP lookups with incremental updates (位圖使用增量更新的硬件/軟件IP査找)",計算機通信評論, 34(2):97-122, 2004)以及由Jacobson開發(fā)的用于二叉樹的簡明表示的技術(shù)("簡 明靜態(tài)數(shù)據(jù)結(jié)構(gòu)",卡內(nèi)基梅隆大學(xué)博士論文,1998)得到的。在TBM中,二叉trie被劃分成各自具有至多S層的子trie。每個分塊隨后被表示成(TBM) 超節(jié)點。S是TBM超節(jié)點的跨步。雖然針對真實世界的IPv4分類器建議S = 8, 但是在此使用S = 2來例示TBM結(jié)構(gòu)。
圖2(a)示出了將圖l(b)的二叉trie劃分成各自具有2個層的4個子trie W-Z。 盡管具有S二2層的完全二叉trie具有3個節(jié)點,但是X僅具有兩個節(jié)點,而 Y和Z各自僅具有一個節(jié)點。每個分塊由具有以下分量的超節(jié)點(FIG. 2(b))
來表示
第一,(2S-1)位內(nèi)部位圖(IBM),其指示分塊中最多達2、 1個節(jié)點中 的每一個是否包含前綴。IBM是通過將分塊節(jié)點重疊在具有S層的完全二叉trie 上并按層次序遍歷此完全二叉trie的節(jié)點來構(gòu)造的。對于節(jié)點W, IBM是110, 指示根及其左子女節(jié)點具有前綴,而根的右子女節(jié)點或者不存在或者沒有前 綴。X的IBM為010,其指示X的根的左子女節(jié)點具有前綴,且根的右子女 節(jié)點或者不存在或者沒有前綴(注意,根本身總是存在,因此IBM的前導(dǎo)位 置中的0是指示根沒有前綴)。Y和Z的IBM都是100。
第二, 2"立EBM (外部位圖),其對應(yīng)于完全S層二叉trie的葉子所具 有的2S個子女指針。W的EBN為1011,其指示僅完全二叉trie的最左葉子的 右子女為空。X、 Y和Z的EBM為OOOO,指示X、 Y和Z的節(jié)點各自沒有未 包括在X、 Y和Z中的子女。從一個分塊中的一節(jié)點指向另一分塊中的節(jié)點的 每個子女指針變成從一超節(jié)點到另一超節(jié)點的指針。為了減小這些超節(jié)點間指 針所需的空間,超節(jié)點的子女超節(jié)點被從左到右地存儲,以使得使用超節(jié)點的 第一子女的位置和大小,可計算出任何子女超節(jié)點的位置。
第三,子女指針,其指向第一子女超節(jié)點被存儲的位置。
以及第四,指向分塊中前綴的下一跳數(shù)據(jù)的列表NH。 NH可具有最多達 2s - l個條目。此列表通過按層次序遍歷分塊節(jié)點來形成。W的NH列表為nh(Pl) 和nh(P2),其中nh(Pl)是前綴Pl的下一跳。X的NH列表為nh(P3)。盡管NH 指針是超節(jié)點的部分,但是NH列表并非如此。NH列表被方便地表示為數(shù)組。
超節(jié)點的NH列表(數(shù)組)被與超節(jié)點自身分開地存儲,并且僅在已確定 最長匹配前綴時且在期望確定與此前綴相關(guān)聯(lián)的下一跳時被訪問。如果指針需 要M立,則每個TBM超節(jié)點所需總共2S"+2b-l位(加NH列表的空間)。使
6用IBM,可確定超節(jié)點中的最長匹配前綴;EBM被用來確定其是否需要向下 移至當前超節(jié)點的第一、第二以及由此的第四子女。如果單個存儲器訪問足以 檢索整個超節(jié)點,則使用單個訪問從一個超節(jié)點移至其子女節(jié)點是可能的。用
于搜索超節(jié)點trie的存儲器訪問的總數(shù)變成超節(jié)點trie的層數(shù)加1 (用于訪問 最長匹配前綴的下一跳)。
SST超節(jié)點結(jié)構(gòu)是通過將二叉trie劃分成各自具有至多K個節(jié)點的子trie 來得到的。K是SST超節(jié)點的跨步。為了正確地搜索SST,每個SST超節(jié)點 還要求除IBM和EBM之外的形態(tài)位圖(SBM) 。 SBM是二叉樹的簡明表示。 其通過用外部節(jié)點替代由SBM編碼的二叉樹中的每個空鏈接,之后通過在每 個外部節(jié)點中放置0并在每個其它節(jié)點中放置1、以及最后通過按層次序遍歷 擴展二叉樹、在遍歷訪問節(jié)點時列出該節(jié)點中的位來獲得。
如果圖l(b)的示例二叉trie要被劃分成各自具有至多K=3個節(jié)點的二叉 trie,則圖3(a)示出可能劃分成3個分塊X-Z。 X包括圖l(b)的節(jié)點a、 b禾口 d。 Y包括節(jié)點c、 e禾Bf。而Z包括節(jié)點g。 SST表示具有3個(SST)超節(jié)點。 超節(jié)點X-Z的SBM分別為1101000、 IIIOOOO和IOO。注意具有K個內(nèi)部節(jié) 點的二叉樹具有確切K+ l個外部節(jié)點。因此,當將二叉trie劃分成具有至多 K個內(nèi)部節(jié)點的二叉trie時,SBM至多為2K+1位長。由于SBM中的第一位 為1而最后兩位為0,因此無需顯式地存儲這些位。因而,SBM僅要求2K-2 個存儲位。圖3(b)示出了圖3(a)的每個分塊的節(jié)點表示。示例性SBM排除第 一位和最后兩位。
SST超節(jié)點的IBM是通過按層次序遍歷分塊來得到的。當節(jié)點被訪問時, 如果節(jié)點具有前綴則將1輸出到IBM,否則輸出0。節(jié)點X-Z的IBM分別為 110、 Oll和l。注意,SST超節(jié)點的IBM的長度至多為K位。為了獲得超節(jié) 點的EBM,針對分塊從擴展二叉樹開始,在與原始二叉trie中的節(jié)點相對應(yīng)的 每個外部節(jié)點中放置1,而在每個其它外部節(jié)點中放置0。接著,按層次序訪 問外部節(jié)點,并且它們的位被輸出到EBM。 3個超節(jié)點的EBM分別為1010、 OOOO和OO。由于每個分塊的外部節(jié)點的數(shù)目至多為&+1,因此EBM的大小 至多為K+1位。
在TBM結(jié)構(gòu)的情形中,SST超節(jié)點的子女超節(jié)點被順續(xù)存儲并且指向第一子女超節(jié)點的指針被維護。超節(jié)點的NH列表被存儲在單獨存儲器(MEM)
中,并且指向此列表的指針被維護在該超節(jié)點中。盡管SBM、 IBM和EBM的 大小隨分塊大小而變化,但是SST超節(jié)點有固定大小,并且將2K個位分配給 SBM, K個位分配給IBM,以及1^+ 1個位分配給EBM。未使用位用0來填 充。因此,SST結(jié)構(gòu)的大小為4K + 2b-l位。
對于任何給定K,已開發(fā)了稱為后序剪枝的O(m)時間算法來從m節(jié)點二 叉trie構(gòu)造最小節(jié)點SST。對于任何給定K,也開發(fā)了寬度優(yōu)先剪枝算法來構(gòu) 造最小高度SST。此算法的復(fù)雜度為0(m2)。
對于密集二叉trie, TBM比SST更為空間有效。然而,對于稀疏二叉trie, SST更為空間有效。已提出了混合式SST (HSST),其中整體二叉trie的密集 子trie被劃分成TBM超節(jié)點,而稀疏子trie被劃分成SST超節(jié)點。圖4示出 了圖l(b)的二叉trie的HSST。對于此HSST, K = S = 2。 HSST還具有兩個SST 節(jié)點X和Z,以及一個TBM節(jié)點Y。
二維分組分類
將過濾器假定為具有形式(D,E),其中D是目的地址前綴,而E是源地址 前綴。2維分類器可被表示為2維二叉trie (2DBT),其為一維trie (稱為頂 層trie),其中每個節(jié)點的數(shù)據(jù)域是指向(可能為空的)二叉trie (低層trie) 的指針。因此,2DBT具有1個頂層trie,且潛在可能有許多低層trie。
圖5例示了示例性5規(guī)則二維分類器。對于每個規(guī)則,過濾器是通過目的 (Dest)和源(Source)前綴來定義的。因此,例如,F(xiàn)2 = (0*,l*)匹配其目的 地址以0為開始且其源地址以1為開始的所有分組。當分組被兩個或更多過濾 器匹配時,使用具有最低成本的匹配規(guī)則。圖5的分類器可被表示為2DBT, 其中頂層trie是使用目的前綴來構(gòu)造的。在目的-源過濾器的上下文中,此頂層 trie被稱為目的trie (或類似地,desttrie) 。 N是目的trie中的節(jié)點。如果沒有 dest前綴等于Q(N),則N.data指向空低層trie。如果有等于Q(N)的dest前綴D, 則N.data指向所有源前綴E的二叉trie,以使得(D, E)為過濾器。在目的-源過 濾器的上下文中,低層trie被稱為源樹。圖6給出了圖5的過濾器的2DBT。
以針對目的-源前綴過濾器提出了二維1位trie——2DBT的近親。所提出的二維trie結(jié)構(gòu)采用O(nW)存儲器,其中n是分類器中過濾器的數(shù)目,而W是 最長前綴的長度。使用這種結(jié)構(gòu),分組可通過0(W、次存儲器訪問被分類?;?本二維1位trie可基于通過使用預(yù)計算和切換指針來改進。改進版本將分組分 類僅進行O(W)次存儲器訪問。已提出向高維1位trie的擴展,其可與d維——d > 2——過濾器聯(lián)用。具有桶的二維1位trie也可被用于d維——d > 2——分類 器?;旧?,用過濾器的目的和源字段來構(gòu)造二維1位trie。具有相同的目的 字段和源字段的過濾器可被認為等效。等效過濾器被存儲在可被連續(xù)搜索的桶 中。這種方案預(yù)期在實踐中工作良好,因為桶大小往往較小。而且,切換指針 可能不結(jié)合桶化方案來使用。已開發(fā)了快速多項式時間算法來構(gòu)造空間最優(yōu)約 束2DMT (二維多位trie)。所構(gòu)造的2DMT可用至多k次存儲器訪問來搜索, 其中k是設(shè)計參數(shù)??臻g最優(yōu)約束2DMT可被用于使用桶化策略的d維過濾 器—d>2。對于d:2的情形,可采用切換指針來獲得多位trie,后者要求比
空間最優(yōu)約束2DMT所需的更少的存儲器且允許通過至多k次存儲器訪問進行 分組分類。也已開發(fā)了快速啟發(fā)式算法來構(gòu)造具有切換指針的良好多位trie。 實驗表明,給定相同存儲器預(yù)算,空間最優(yōu)約束2DMT結(jié)構(gòu)使用二維l位trie 所需的存儲器訪問的1/4到1/3來執(zhí)行分組分類。
發(fā)明概述
本發(fā)明提供了具有存儲器效率的分類器表示,該具有存儲器效率的分類器 表示可用減少的存儲器訪問次數(shù)來高效搜索,并且在所需的計算機存儲器總量 方面有所減小。本發(fā)明的一個方面是基于用于構(gòu)造最小高度SST的快速算法的 程序,該程序?qū)?gòu)造的復(fù)雜度從0(m、減至O(m),其中m是輸入二叉trie中的 節(jié)點數(shù)目。本發(fā)明的其它方面是用于構(gòu)造空間最優(yōu)HSST以及良好的2DHSST 和2DHSSTPC (具有前綴繼承的約束2DHSST)的動態(tài)編程程序。
附圖簡要說明
在附圖中示出了目前優(yōu)選的實施例。然而,特別注意本發(fā)明不限于所示 的精確布置和手段。
圖l(a)是示例性5個前綴的集合及相對應(yīng)二叉trie的示意性表示;
9圖l(b)是與圖l(a)中的前綴相對應(yīng)的二叉trie的示意性表示; 圖2是圖l(b)中使用TBM方案的二叉trie的劃分的示意性表示; 圖3是圖l(b)中使用SST方案的二叉trie的劃分的示意性表示; 圖4是圖l(b)中使用HSST方案的二叉trie的劃分的示意性表示; 圖5是示例性5個目的-源過濾器的示意性表示; 圖6是圖5的2DBT的示意性表示;
圖7是其中部署根據(jù)本發(fā)明的具體實施例的數(shù)據(jù)通信網(wǎng)絡(luò)的示意圖; 圖8示意性圖解了根據(jù)本發(fā)明的具體實施例的圖6的二維超節(jié)點trie (2DHSST)的構(gòu)造;
圖9示意性圖解了根據(jù)本發(fā)明的具體實施例的圖8的具有前綴繼承的 2DHSST (2DHSSTP)的構(gòu)造;
圖10示意性圖解了根據(jù)本發(fā)明的具體實施例的四種葉子超節(jié)點格式的構(gòu)
造;
圖11是使用本發(fā)明的算法程序的每一種在IP4v表中進行査找所需的存儲 器訪問的次數(shù)的圖形表示;
圖12是圖11中所示的存儲器訪問次數(shù)的柱狀圖的圖形表示;
圖13(a)和(b)分別為由EBO數(shù)據(jù)歸一化的IPv4數(shù)據(jù)的訪問和存儲器統(tǒng)計
的表;
圖14是IP4v表所需的總存儲器的圖形表示;
圖15(a)和(b)是根據(jù)本發(fā)明的具體實施例的圖14(a)和(b)中所示的所需總 存儲器的柱狀圖形式的圖形表示;
圖16是BART所需的存儲器的量的表。
圖17是通過根據(jù)本發(fā)明的具體實施例實現(xiàn)的六種算法過程中的每一種在 IP4v表中進行査找所需的存儲器訪問的次數(shù)的表;
圖18是圖17中所示的存儲器訪問次數(shù)的圖形表示;
圖19(a)和(b)分別為由EBP數(shù)據(jù)歸一化的Ipv6數(shù)據(jù)的訪問和存儲器統(tǒng)計
的表;
圖20是IP6v表所需的總存儲器的表;
圖21是如圖20中所示的所需總存儲器的圖形表示;圖22是根據(jù)本發(fā)明的具體實施例的在最優(yōu)化之后IP4v表所需的總存儲器 和訪問次數(shù)的表;
圖23是本發(fā)明的2DHSST和2DHSSTPC所需的總存儲器和存儲器訪問次 數(shù)的表;
圖24是本發(fā)明的2DHSST和2DHSSTPC所需的總存儲器的圖形表示; 圖25是根據(jù)本發(fā)明的具體實施例執(zhí)行的2D査找的存儲器訪問的次數(shù)的 圖形表示;
圖26是2DHSSTPC、 2DMTd和trie柵格(Grid-of-Trie)所需的總存儲器
的表;
圖27(a)和(b)是本發(fā)明的2DHSSTPC和擴展2DHSSTPC分別所需的總存 儲器(千字節(jié))和存儲器訪問的次數(shù)的表;
圖28是5維數(shù)據(jù)集合上的HyperCut(超切割)所需的總存儲器(千字節(jié))、 位/規(guī)則和存儲器訪問次數(shù)的表;以及
圖29(a)和(b)是根據(jù)本發(fā)明的具體實施例的HyperCut和擴展2DHSSTPC 所需的總存儲器(千字節(jié))和存儲器訪問的次數(shù)的圖形表示。
圖30是根據(jù)本發(fā)明的具體實施例的用于將通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送的數(shù)據(jù) 分組分類的方法的示例性步驟的流程圖。
詳細描述
圖7示意性圖解了數(shù)據(jù)通信網(wǎng)絡(luò)20,該網(wǎng)絡(luò)是其中可部署根據(jù)一個實施 例的系統(tǒng)100的示例性環(huán)境。數(shù)據(jù)通信網(wǎng)絡(luò)20示例性地包括多個主機——僅 示出了兩個為22a、 22b,主機所連接的多個節(jié)點24a-h、 26a-e,以及連接到多 個節(jié)點的兩個附加的示例性網(wǎng)絡(luò)28a、 28b。本領(lǐng)域技術(shù)人員將易于理解,數(shù)據(jù) 通信網(wǎng)絡(luò)可以是例如因特網(wǎng)、局域網(wǎng)(LAN),或者由兩個或多個主機形成的 其它網(wǎng)絡(luò),這些主機的應(yīng)用層程序借助通過各個節(jié)點路由的分組化數(shù)據(jù)的傳輸 來彼此通信。節(jié)點24a-h、 26a-e可以是路由器、集線器、橋接器、或能夠基于 所存儲的路由信息存儲和轉(zhuǎn)發(fā)數(shù)據(jù)分組的任何其它通用計算機或?qū)S锰幚碓O(shè) 備。多個節(jié)點24a-h、 26a-e基于傳入數(shù)據(jù)分組的報頭中所含的信息以及每個節(jié) 點存儲在其路由表中的信息來將該傳入數(shù)據(jù)分組分類到各個流。表中的每個條目是過濾器-動作對。
更具體而言,系統(tǒng)100是用于將通過數(shù)據(jù)通信網(wǎng)絡(luò)20傳送的數(shù)據(jù)分組分 類的系統(tǒng)。出于容易表述起見而通過示為相異元素,系統(tǒng)100可在數(shù)據(jù)通信網(wǎng)
絡(luò)20的一個或多個節(jié)點24a-h、 26a-e中實現(xiàn)。如圖所示,系統(tǒng)100被通信地 鏈接到數(shù)據(jù)通信網(wǎng)絡(luò)20的各個節(jié)點24a-h、 26a-e。
系統(tǒng)100包括用于將通過數(shù)據(jù)通信網(wǎng)絡(luò)20傳送的數(shù)據(jù)分組分類的硬件和 軟件模塊的組合。示例性地,系統(tǒng)包括存儲器102。在存儲器120中,由多個 過濾器定義的至少一個分組分類器規(guī)則被存儲為計算機可讀代碼。每個過濾器 唯一地對應(yīng)于在通過數(shù)據(jù)通信網(wǎng)絡(luò)20傳送數(shù)據(jù)分組時要采取的多個動作之一。
另外,系統(tǒng)100包括處理器104,后者包括響應(yīng)于計算機可讀指令或代碼 并處理其的邏輯電路(未明確示出)。具體而言,處理器104被配置成訪問存 儲器102中分組分類器規(guī)則以及基于分組分類器規(guī)則將數(shù)據(jù)分組分類。如以下 更具體描述的,數(shù)據(jù)分組通過處理器104生成服從用于減少對存儲器的訪問的 預(yù)定約束的至少一個超節(jié)點來分類。在以下描述的算法過程的上下文中明確定 義了超節(jié)點trie。
根據(jù)一個實施例,分類器規(guī)則包括l維節(jié)點、空間優(yōu)化超節(jié)點,并且其中 預(yù)定義約束使得在分類數(shù)據(jù)分組時由處理器執(zhí)行的存儲器訪問最小化。根據(jù)另 一實施例,分類器規(guī)則包括多維節(jié)點、空間優(yōu)化超節(jié)點,其中預(yù)定義約束使得 在分類數(shù)據(jù)分組時由處理器執(zhí)行的存儲器訪問最小化。因此,根據(jù)此實施例, 處理器104可被配置成生成與使得存儲器內(nèi)至少一個分類器規(guī)則的存儲最小化 的預(yù)定約束相對應(yīng)的超節(jié)點。
本發(fā)明的各個實施例包括基于算法的程序,該程序可以計算機可讀代碼實 現(xiàn),用于簡明地表示1維trie和2維trie。本文描述了各算法連同演繹每種算 法的邏輯基礎(chǔ)的嚴密證據(jù)。
最小高度SST
本發(fā)明包括用于簡明表示分組分類器的算法。更具體而言,本發(fā)明的實施 例包括用于1維trie和2維trie的簡明表示的算法。
對于任何給定K和二叉trieT,寬度優(yōu)先剪枝算構(gòu)造最小高度SST。這種算法的復(fù)雜度為0(m2),其中m是T中節(jié)點的數(shù)目。本發(fā)明針對此任務(wù)提供 O(m)算法。此算法——本文中稱為minHtSST——執(zhí)行對T的后序遍歷。當T 的節(jié)點x在此遍歷期間被訪問時,x的當前剩余子trie的一個或兩個,以及有 時甚至以x為根的整個剩余子trie被修剪掉以形成被構(gòu)造的SST的節(jié)點。
當minHtSST訪問T的節(jié)點x時,T中x的子孫的一部分(或全部)已被 早先的節(jié)點訪問修剪。x的經(jīng)修剪的子孫已被映射到形成一個或多個SST的超 節(jié)點。這些SST被稱為懸掛在x的SST。從x懸掛的這些SST中的一部分是 在訪問x的左子樹中的節(jié)點期間形成的。這些SST被稱為左懸掛SST;剩余 SST是x的右懸掛SST。使用以下符號x.leftChild (x.左子女)(x.rightChild (x.右子女)),為T中x的左(右)子女;x.st,為T中以x為根的子trie 中的節(jié)點的集合;x.rn (剩余節(jié)點),為x.st中在x被訪問時未被修剪掉的子 集;x.size (x.大小),為x.rn中節(jié)點的數(shù)目;x.SST,為在x被訪問時從x懸 掛的SST的集合;x.leftSST (x.左SST) (x.rightSST (x.右SST)),是x.SST 中為左(右)懸掛SST的子集。如果x.leftSST為空,則x.lht:-l (左高度)。 否則,x.lht是x.leftSST中SST的最大高度(SST的高度比樹中的層數(shù)小1)。 x.rht是x.rightSST的相應(yīng)量,且x.ht = max{x.lht, x.rht}。
函數(shù)prune(y)通過移除y.rn中的所有節(jié)點來修剪節(jié)點y處的T。 y.rn中的 節(jié)點被用于形成其子trie為y.SST的超節(jié)點。當y是NULL (空)時,prune(y) 是NULL操作。以下是后序遍歷算法minHtSST采用的訪問函數(shù)
情形1: [X.//zt=X.W(|
if (x.s/ze〉 K) (/ rwwe.(x./ey C72關(guān);/ rw"e.(x./-/g/^CMaf);}
else if (xie==K) jwwwe.(x);
return;
情形2: Ix.//^<X.r/<|
更新xie;
if (x."'ze==K) / rMwe.(x);
return;
13情形3: [X.//^>X.^d
與情形2相對稱。
x是被訪問的T的節(jié)點。此訪問函數(shù)具有3種互斥情形。在訪問期間僅執(zhí)
行這些中的一種。
如本文所示范的,如果使用該訪問函數(shù)以后序?qū)進行遍歷,則當x被訪 問時,x.leftChild.size (x.左子女.大小)< K且x.rightChild.size (x.右子女.大
小)<K。明確的不足之處在于這個事實當X被訪問時,X的左(右)子樹
中以及x.rn中的每個節(jié)點y具有y.ht = x.lht (x.rht)。
引理h當x被訪問時,x的左(右)子樹中以及x.m中的每個節(jié)點y具 有y.ht二x.lht(x.rht)。
證明u是x當中在x.m中且具有u.hex.lht的最靠近的左子孫(即,左 子trie中的子孫)。如果沒有這種u,則對于m中x的每個左子孫,y.ht = x.lht。 因此,假定有這種u。明確地,u.ht<x.lht,因此u不會是x的左子女,因為否 則x.leftSST= u.SST,則x.lht = u.ht。因此,u具有在x.rn中的父親(v也是x 的左子孫),且u.ht-v.ht-x.lht。在不喪失一般性的情況下,假定u是v的左 子女。因而,v.lht = u.ht<v.ht = v.rht。在對T的后序遍歷期間,節(jié)點v在節(jié)點 x之前被訪問。當v被訪問時,v的左子樹(包括節(jié)點u)應(yīng)當已被從T修剪 (訪問函數(shù)的情形2),并且因此u不會在x.rn中,這產(chǎn)生矛盾。
對于在x的右子樹以及在x.rn中的節(jié)點的證明類似。
定理l:對于每個二叉trieT且整數(shù)K〉0,后序遍歷算法minHtSST構(gòu)造 具有最小高度的SST。
證據(jù)定理可通過表明對于T若存在包括直至(但不包括)節(jié)點x被訪問 時構(gòu)造的所有超節(jié)點的最小高度SST則對于T存在包括直到訪問x且包括訪 問x時構(gòu)造的所有超節(jié)點的最小高度SST來建立。由于這種論點的前提在T 的第一節(jié)點被訪問時為真,因此此定理根據(jù)歸納得出。
考慮對T的任何節(jié)點x的訪問。U是包括直至此時由算法所構(gòu)造的所有超 節(jié)點的SST。在訪問x的期間,如果沒有新的超節(jié)點被構(gòu)造,則無法證明。因此,假定構(gòu)造一個或多個超節(jié)點。P指示包括X的U的(超)節(jié)點。
假設(shè)在訪問函數(shù)的情形l中構(gòu)造新的超節(jié)點。因此,x.lht = x.rht且x.size 2K。如果x.size〉K,則P不能包括x.rn的所有節(jié)點。因而,x.rn的節(jié)點中的 某些被包含在P的子孫中。根據(jù)以上的引理l,對于每個yEx.rn—一除y二x 之外——可得到y(tǒng).ht = x.lht = x.rht = x.ht。因而,U中以P為根的子SST的高 度為至少x,ht + 2?,F(xiàn)在,從U的超節(jié)點刪去x.m的節(jié)點(除x之外),從U 刪去變?yōu)榭盏娜魏纬?jié)點,并且向U添加由prune(x.leftChild)和 prune(x.rightChild)構(gòu)造的兩個超節(jié)點。獲得T的SSTU',其高度不大于U的高 度并且包含直至訪問x且包括訪問x所構(gòu)造的所有超節(jié)點。如果x.size = K, 則P可包括x.rn的所有節(jié)點。在這種情形中,U具有由算法直至訪問x且包括 訪問x所構(gòu)造的所有超節(jié)點。如果P不包括x.m的所有節(jié)點,則x.rn的某些節(jié) 點必須在P的子孫節(jié)點中,且因此,如之前那樣,以P為根的子SST的高度 為至少x,ht + 2。現(xiàn)在,從U的超節(jié)點刪去x.m的節(jié)點,從U刪去變?yōu)榭盏娜?何超節(jié)點,并且向U添加由prune(x)構(gòu)造的超節(jié)點。獲得T的SSTU',其高度 不大于U的高度并且包含直至訪問x且包括訪問x所構(gòu)造的所有超節(jié)點。
如果在情形2中構(gòu)造新的超節(jié)點,則T中以P為根的子SST的高度為至 少x,rht+l。從U的超節(jié)點刪去x中在x.m內(nèi)的左子孫,從U刪去變?yōu)榭盏娜?何超節(jié)點,并且向U添加由prune(x.leftChild)構(gòu)造的超節(jié)點。獲得T的SSTU', 其高度不大于U的高度?,F(xiàn)在,如果x.size-K,則進行以上情形1 (x.size = K) 中給出的變換,并且獲得一SST,其高度不大于U的高度并且包含直至訪問x 且包括訪問x所構(gòu)造的所有超節(jié)點。
對情形3的證明類似于對情形2的證明。
由于訪問函數(shù)可被實現(xiàn)為以O(shè)(l)時間運行,因此后序遍歷函數(shù)minHtSST 的復(fù)雜度為O(m),其中m是二叉trieT中的節(jié)點的數(shù)目。注意n個其長度至 多為W的前綴的二叉trie中的節(jié)點的數(shù)目為O(nW)。因此,根據(jù)n和W, minHtSST的復(fù)雜度為O(nW)。
空間最優(yōu)HSST
令minSpHSST (T, H)為二叉trie T在TBM節(jié)點的跨步為S且SST節(jié)點的跨步為K以及HSST的高度至多為H的約束下的最小空間HSST。假定S和K 使得TBM超節(jié)點的大小與SST超節(jié)點的大小相等。盡管選擇S和K使得TBM 超節(jié)點所需的位數(shù)確切等于SST超節(jié)點所需的位數(shù)實際上是不可能的,但是可 選擇節(jié)點大小來匹配存儲器的帶寬。這意味著根據(jù)需要在每個超節(jié)點中浪費較 少的位以確保超節(jié)點大小等于存儲器帶寬。因此,實際上,計入所浪費的存儲 器,TBM超節(jié)點的大小等于SST超節(jié)點的大小。因此,使HSST所需的空間 最小化等價于使HSST中的超節(jié)點的數(shù)目最小化。因此,HSST中超節(jié)點數(shù)目 被用作其空間需求的度量。
令ST(N)指示T中以節(jié)點N為根的子樹。因此,T = ST (root(T))。另opt(N, h)為minSpHSST(ST(N), h)中超節(jié)點的數(shù)目。opt(root(T), H)是minSpHSST (T, H) 中超節(jié)點的數(shù)目。本發(fā)明提供了對opt(N,h)的動態(tài)編程遞歸。這種遞歸可被求 解以確定opt(root(T), H)。對遞歸的簡單擴展可被用來實際計算minSpHSST (T, H)。
令opt(N, h, k)為ST(N)在以下約束下的空間最優(yōu)HSST中超節(jié)點的數(shù)目
(a) 對于二叉trieST (N)的精確k——0<k<K——個節(jié)點(k是SST節(jié)點的利 用率),HSST的根是SST超節(jié)點,以及(b) HSST的高度至多為h。令Dt(N) 為在ST(N)的層t處的N的子孫(在T中)。
對于minHSST (ST (N), h)——fe0——的根,有兩種可能性根為TBM超 節(jié)點或者根為SST超節(jié)點。在前一情形中,
O/ f(iV,/0 = l+J] C^(凡/2-l) (1)
并且在后一情形中,
豐(jV,/z) = min (2)
將兩種情形組合在一起,可獲得
op (iV,/z) = min{l+ S —i ,/ -l), min{o/^(jV,/ ,"}
為了簡化opt(N,h,k)的遞歸,使用函數(shù)f(N,h,k),其給出了由ST(N)和N 的父親(假定N不是T的根)構(gòu)成的二叉trie在以下約束下的空間最佳HSST 中的超節(jié)點的數(shù)目(a) HSST的根是其利用率為k + 1的SST超節(jié)點,以及
(b) HSST的高度為至多h。注意當k二0日寸,此HSST的根僅包含N的父親。 因此,f(N, h, 0) = 1 + opt(N, h -1)。當k > 0時,根表示包括N的父親加上ST (N)的k個節(jié)點的分塊。因此,f(N,h,k) = opt(N,h,k)。為了獲得opt(N, h, k)——h >0ik>0——的遞歸,考慮三種情形,S卩,考慮N具有0、 l和2個子女。 當N沒有子女時,
豐(iv,/a)-i (4)
當N僅具有一個子女a(chǎn)時,
op,(7V ) = /(a,/a-1) (5) 當N具有兩個子女a(chǎn)和b時,
o; "iV, /z, A:) = min{/(a, &力+ /z, A: — y. — 1) — 1} (6) 最后,對于1K0,
op"iV, /z," = op《iV, Zz) = oo (7) 以及,對于k〈0,
豐(jV,Zz,A:)-oo (8) 因為用其高度小于0的HSST或用其根是利用率< 0的SST節(jié)點的HSST 來表示ST(N)是不可能的。
使用式3,每個opt(*, *)值可在O(K)時間內(nèi)被計算出,因為IDs(N)l < " -2K。而且,每個opt(、 "值可使用式4-8在0(K)時間內(nèi)被計算出。要計算 O(mH) opt(*,"和O(mHK) opt(*, *, *)值。因此,時間復(fù)雜度是O(mHK + mHK2) = 0(mHK2) = 0(nWHK2),其中n是過濾器的數(shù)目,而W是最長前綴的 長度。
空間最優(yōu)2DHSST
令T為2DBT。假定T的源trie已被修改以使得每個搜索路徑上遭遇的最 后前綴是該搜索路徑的最小成本前綴。這種修改是通過檢査包含前綴的每個源 trie節(jié)點N以及用從根到N的路徑上的最小成本前綴替代所包含的前綴來實 現(xiàn)??赏ㄟ^將T的頂層二叉trie (即,目的trie)以及每個低層二叉trie劃分成 TBM和SST超節(jié)點的混合來從T構(gòu)造2DHSST。涵蓋頂層二叉trie的超節(jié)點 使用其NH (下一跳)列表來存儲代表T的低層trie的低層HSST的根超節(jié)點。
圖8示出了圖6的2DBT的可能的2DHSST。所用的超節(jié)點跨步為K = S = 2??蓪?DHSST搜索最小成本過濾器,該過濾器通過沿2DHSST的目的HSST中da的搜索路徑來匹配任何給定目的和源地址對(da, sa)。對在此路徑上遭 遇的所有源trie搜索sa。返回這些源trie搜索路徑上與sa相匹配的最小成本過 濾器。假設(shè)找到與(000,111)相匹配的最小成本過濾器,對000的搜索路徑首先 始于圖8的2DHSST的根(ab),并在隨后轉(zhuǎn)到左子女(dg)。在2DHSST根中, 搜索通過目的二叉trie的節(jié)點a和b并在超節(jié)點dg中通過T的節(jié)點d和g。三 個遭遇的節(jié)點(a, b,和g)具有懸掛源trie。對相對應(yīng)的源HSST搜索111,并且 返回F2作為最小成本匹配過濾器。
為了確定對2DHSST的搜索所需的存儲器訪問的次數(shù),假定足夠的存儲 器帶寬,即可用單個存儲器引用訪問整個超節(jié)點(此包括IBM、 EBM、子女 和NH指針)。為了訪問NH數(shù)組的分量,需要附加存儲器訪問。對于da的 搜索路徑上的每個超節(jié)點,進行一次存儲器訪問以獲得超節(jié)點的字段(例如, IBM、 EBM、子女和NH指針)。另外,對于此路徑上的每個超節(jié)點,需要檢 查某些懸掛源HSST。對于被檢査的每個源HSST,訪問目的trie超節(jié)點的NH 數(shù)組的分量以獲得懸掛源HSST的根。隨后,通過訪問此HSST的搜索路徑(如 由源地址所確定的)上的剩余節(jié)點來搜索此懸掛源HSST。最后,訪問與此路 徑上的與該最后節(jié)點相對應(yīng)的NH分量。因此,在以上示例的情形中,進行兩 次存儲器訪問以獲取目的HSST路徑上的兩個超節(jié)點。另外,搜索3個源HSST。 各自需要對其根超節(jié)點路徑加上每個源HSST中的NH分量的訪問。存儲器訪 問總數(shù)為2 + 2*3 = 8。
令MNMA(X)為搜索源HSSTX所需的最大存儲器訪問次數(shù)(MNMA)。
對于源HSST, MNMA包括對搜索路徑上最后節(jié)點的NH分量的訪問。因此,
MNMA(X)比X中的層數(shù)大1 。令U為T中具有跨步S和K的2DHSST。令P
為U的頂層HSST中任何根到葉子的路徑。令路徑P上低層HSST的MNMA
的總數(shù)為H(P)。令nodes(P)為路徑P上超節(jié)點的數(shù)目。定義2DHSST (h)為T
的可能2DHSST的子集,其中
m|ix{/f (尸)+ S A (9)
注意可在每次査找下用至多h次存儲器訪問搜索每個
U——UE2DHSST(h)。還注意具有H(P) + nodes(P) = h的路徑P的某些 2DHSST可在比h少的存儲器訪問下被搜索,因為可能沒有導(dǎo)致對通過H(P) +nodes(P) = h的路徑P上每個源HSSAT的最長路徑進行搜索的(da, sa)。
考慮使得VE2DHSST (H)的空間最優(yōu)2DHSST V的構(gòu)造,這樣的V被稱 為空間最優(yōu)2DHSST(h)。令N為T的低層trie中的節(jié)點,且令2DBT(N)為以 N為根的2維二叉trie。令optl(N, h)為2DBT (N)的空間最優(yōu)2DHSST (h)的大 小(即,超節(jié)點的數(shù)目)。optl(root(T),H)給出T的空間最優(yōu)2DHSST(H)的大 小。令g(N, q, h)為2DBT (N)在2DHSST的根為其跨步為q的TBM超節(jié)點這 個約束下的空間最優(yōu)2DHSST(h)的大小(不包括根)。因此,g(N,S,h)+l給 出為2DBT (N)在2DHSST的根為其跨步為S的TBM超節(jié)點這個約束下的的空 間最優(yōu)2DHSST(h)的大小??煽吹?,對于qX),
g(7V,min (g(丄C(A0,《—0 + g(^C(A0,《_l,A_0 + <A^,0} (10)
其中m(N)是從節(jié)點N懸掛的源trie (如果有)的MNMA的最小可能值(在沒
有從N懸掛的源trie的情況下,m(N) = 0) , g(N, 0, h) = optl (N, h - 1)、 g(空,t,
h) = 0、以及LC(N)和RC(N)分別為N的左和右子女(在T中)。s(N, i)是從N
懸掛的源trie在HSST具有至多i的MNMA的約束下HSST的空間最優(yōu)HSST
的大小。如果N沒有懸掛源trie,貝Us(N,i)為零。
令optl(N, h, k)為2DBT (N)在2DHSST的根為其利用率為k的SST超節(jié)點
這個約束下的空間最優(yōu)2DHSST (h)的大小。易于看到
oprl(iV,/0 = min{g(W,S,/z) +1, min{o/^l(iV,/2,A:)}} (11)
假設(shè)kX)且hX)。如果N沒有子女,則
oj^l(iV,/a) = l + <A^/7-1) (12) 當N僅具有一個子女a(chǎn)時,
oprt(iV,/z,"= min {/(a,/z —Z,A: —l) + s(iV,/)} (13)
其中f(N, h, k)是2DBT (N)力卩N的父親(在T中)(但是不包括從N懸掛 的低層trie (如果有的話))在2DHSST的根為其利用率為k+l的SST超節(jié)點 這個約束下的空間最優(yōu)2DHSST(h)的大小。例如,當k二()時,約束2DHSST 的根具有利用率1且僅包含N的父親;2DHSST的剩余超節(jié)點表示2DBT(N)。 因此,當k > 0時f(N, h, k) = optl(N, h, k),而當k = 0時,f(N, h, k) = 1 + optl(N, h- 1,0)。
當N具有兩個子女a(chǎn)和b時,<formula>formula see original document page 20</formula>
0/ 拳,/ ,*) = 00 (15) 當有n個過濾器且最長前綴的長度為W時,T的目的trie中節(jié)點的數(shù)目 為O(nW),而T中源trie的數(shù)目為O(n)。用于使用章節(jié)"空間最優(yōu)2DHSST"中 描述的用來計算opt的算法來計算所有s(N, h)值的時間為0(r^WHK、時間。使 用式10和先前計算出的g值,計算每個g(*, *, *)值需要O(H)時間。使用式11, 可在0(K)時間下計算每個optl(、"值。使用式12-15,可在O(KH)時間下計算 每個optl(*, *, *)值。由于要計算O(nWH) optl(*, *)、 O(nWHK) optl(*, * , *)、 以及O(nWSH) g(*, *, *)值,因此用于確定optl(root(T),H)的時間為0(n2WHK2 + nWHK + nWH2K2 + nWSH2) = 0(n2WHK2)(如在典型應(yīng)用中,n>H)。
具有前綴繼承的2DHSST (2DHSSTP)
令T為圖6的2DBT??紤]圖8的目的trie超節(jié)點ab。此超節(jié)點表示T中 由二叉節(jié)點a和b構(gòu)成的子trie。在此子trie中的搜索具有三個出口點b的左 子女、b的右子女以及a的右子女。對于前兩個出口點,搜索a和b懸掛的源 trie,而對于第三出口點,僅搜索a懸掛的源trie。換言之,前兩個出口點使用 a和b懸掛的源trie,而第三出口點僅使用a懸掛的源trie。如果用a懸掛的源 trie中的前綴擴增b懸掛的源trie,則當使用前兩個出口點時,僅所擴增的、b 懸掛源trie需要被搜索。
在前綴繼承中,用分塊中祖先懸掛的所有源trie中的前綴來擴增該分塊中 的每個非空源trie。當此擴增導(dǎo)致副本前綴時,保留每個副本集合中的最小成 本前綴。結(jié)果擴增源trie被稱為出口 (exit) trie。在具有前綴繼承的2DHSST (2DHSSTP)中,在每個超節(jié)點中進行前綴繼承。圖9給出了圖8的2DHSST 的2DHSSTP。
注意為了搜索2DHSSTP,對于遭遇的每個目的trie超節(jié)點,至多一個 出口 trie需要被搜索在對由該目的trie超節(jié)點表示的分塊的搜索中遭遇的最 后出口trie。因此,當搜索(da, sa) = (000, lll)時,對b和g懸掛的出口 trie搜 索lll。存儲器訪問的次數(shù)為2 (對于兩個超節(jié)點ab和dg) + 2 (用于訪問被搜索的兩個源trie的每一個中的超節(jié)點)+2 (用于訪問源trie超節(jié)點的NH數(shù) 組)=6。使用圖8的2DHSST的相同搜索將對應(yīng)于8次存儲器訪問的總成本 搜索三個源trie (a、 b和g懸掛的那些)。
如果在從N到分塊的出口點的每條路徑上有出口 trie,則目的trie中的節(jié) 點N是支配節(jié)點。注意如果N具有兩個子女——這兩個子女皆為支配節(jié)點, 則從不搜索N中的出口trie (如果有的話)。因此,無需存儲此出口trie。
即時應(yīng)用的發(fā)明人已開發(fā)了用于為任何2DBT T構(gòu)造空間最優(yōu)約束 2DHSSTP的良好算法。注意T的2DHSSTP是由T的目的trie的超節(jié)點加出 口 trie的超節(jié)點構(gòu)成。
令2DHSSTPC(h)為2DHSSTP,后者被約束成使得(a)其可用至多h次存儲 器訪問來搜索,以及(b)每個出口 trie的HSST是該出口 trie的最小高度HSST。 實驗性研究表明HSST所需的空間對于施加于HSST上的高度約束而言稍微不 敏感。因此,希望空間最優(yōu)2DHSSTPC(h)所需的空間接近于空間最優(yōu) 2DHSSTP(h)所需的空間。
令N為2DBT T的目的trie中的節(jié)點,并且令opt2(N, h)為T中以N為根
的子樹ST (N)的空間最優(yōu)2DHSSTPC(h)的大小。超節(jié)點跨步為K和S。注意
opt2(root(T), H)給出T的空間最優(yōu)2DHSSTPC(H)的大小。opt2的動態(tài)編程遞歸
的開發(fā)遵循用于早期動態(tài)編程遞歸的模式。假設(shè)空間最優(yōu)2DHSSTPC(N)的根
為TBM超節(jié)點。貝U,
o/^2(iV,/0 = l + M(A0+ Z o; ,2(/ ,/z-(16)
其中ss(N)是根TBM超節(jié)點的出口 trie的最小高度HSST的大小的總和,而h(R) 是在到R的路徑上的根的最后出口 trie (若有)的MNMA;如果在此路徑上沒 有出口trie,則h(R):0。
2DHSSTPC(h)的根的唯一其它可能性在于,其為占用率為范圍[1,K]中的 某個k的SST節(jié)點。 令2DHSSTPC(N, h, k, p)為ST (N)在以下約束下的 2DHSSTPC(h): (a)2DHSSTPC的根為其利用率為k的SST節(jié)點,(b)對于根, 前綴繼承不限于T中由2DHSSTPC的根表示的分塊;相反,前綴繼承擴展到T 中N的p個最靠近祖先。令opt2(N, h, k, p)為空間最優(yōu)2DHSSTPC(N, h, k, p) 的大小??煽吹?lt;formula>formula see original document page 22</formula>
為了助益opt2(N,h,k,p)的計算,三個新的函數(shù)s(N,p)、 h(N, p)和x(N, h, k,p)被引入。如果N具有非空源trie,貝U s(N, p)是N及其在T中的p個最靠近 祖先懸掛的源trie的聯(lián)合的空間最優(yōu)最小高度HSST的大小,而h(N, p)是此 HSST的MNMA。否則,s(N, p) = h(N, p) = 0。在這種使用章節(jié)"空間最優(yōu) 2DHSST"的算法的后序遍歷之前計算s(N, p)值。易于在計算s(N, p)值期間計算 h(N, p)值。
x(N, h, k, p)是在2DHSSTPC(N, b, k, p)的根為支配節(jié)點這個附加約束下的
空間最優(yōu)2DHSSTPC(N, h, k, p)的大小。opt2(N, h, k, p)和x(N, h, k, p)的遞歸可
通過針對N考慮三種情形來獲得。當N沒有子女(即,N是葉子)時,<formula>formula see original document page 22</formula><formula>formula see original document page 23</formula> (25)
當有n個過濾器且最長前綴的長度為W時,T的目的trie中節(jié)點的數(shù)目 以及由此的出口 trie的數(shù)目為O(nW)。使用章節(jié)"空間最優(yōu)HSST"的算法,所 有s(*, *)和h(*, *)值可在0(n2W2HK2)時間內(nèi)被計算出。在此計算之后,每個 ss(N)值可通過遍歷T中以N為根的子樹的前S個層來在0(2S) = O(K)時間內(nèi) 被計算出。因此所有ss("值可在O(nWK)附加時間內(nèi)被確定。如可從式25中 看到的,計算每個opt2(*, *)值需要O(K)時間(假設(shè)式右邊的ss和opt2項已知)。 花費0(K)時間來計算每個opt2(、 *, *, *)和(*, *, *, *)值。由于有O(nWH) opt2(*, *)值以及0(nW2HK) opt2(*, *, *, *)和x(*, *, *,"值,因此總時間復(fù)雜度為 0(n2W2HK2 + n籃+ nWHK + nW2HK2) = 0(n2W2HK2)。
實現(xiàn)考慮 HSST
如果可用單次存儲器訪問檢査每個超節(jié)點,則可通過進行至多H+2次存 儲器訪問對其高度為H (即,層數(shù)為H+1)的HSST搜索最長匹配前綴的下一 跳。為了獲得此性能,超節(jié)點參數(shù)K和S可被選擇成使得每一類超節(jié)點可用單 次訪問來檢索。TBM節(jié)點的大小為2S+1 + 2b -1位,并且SST節(jié)點的大小為4K 十2b-l位。需要附加位來區(qū)分兩種節(jié)點類型。因此,HSST的任何實現(xiàn)必須為 TBM節(jié)點分配2S" + 2b-l位,為SST節(jié)點分配4K + 2b位。這樣的一種實現(xiàn) 可被稱為HSST的基實現(xiàn)。令B為可用單次存儲器訪問檢索的位的數(shù)目,并假 定b = 20位被用于指針。當B = 72時,超節(jié)點參數(shù)編程& = 8和8 = 4。當8 = 64時,超節(jié)點參數(shù)編程& = 6和8 = 3。由于需要將超節(jié)點與字邊界對齊,因 此當B二64時,每個TBM節(jié)點浪費8位。
已針對超節(jié)點提出了稱為前綴位實現(xiàn)的的替換性實現(xiàn)。這種替換性實現(xiàn)采 用前綴位最優(yōu)化技術(shù)。將附加位(稱為prefDcBit (前綴位))添加到每個超節(jié) 點。如果通向N的、通過N的父親超節(jié)點(如果有的話)的搜索路徑通過包 含前綴的二叉trie,則對于超節(jié)點,此位為1。在將prefixBit添加到每個超節(jié) 點的情況下,可如下搜索HSST:
步驟l:沿HSST向下移動,并保持跟蹤最近看到的其prefixBit為1的超節(jié)點的父親Z,不檢査在此步驟中遭遇的任何節(jié)點的IBM。
步驟2:檢査搜索路徑上的最后超節(jié)點的IBM。如果在此超節(jié)點中沒有找
到匹配前綴,則檢査超節(jié)點Z的IBM。
當采用前綴位最優(yōu)化時,具有較大K和S是可能的,因為超節(jié)點的IBM (K或2、l位)和NH (b位)字段未被訪問(除步驟2中之外)。因此,保 留超節(jié)點字段所需的空間為至多B位是足夠的。IBM和NH字段可能溢出到下 一存儲器字。換言之,K和S被選擇成最大整數(shù),其中3*: + 6 + 1^8且25+6 + 2SB。 當B二72且b-20時,使用K-17和8 = 5;以及當B-64且b二20 時,使用&=14和8 = 5。當采用前綴位最優(yōu)化方案時,用于搜索的存儲器訪 問的次數(shù)為H + 4,因為需要兩次附加訪問(相對于基實現(xiàn))來獲取可能在步 驟2中所需的最多達兩個IBM和NH字段。
對Z的IBM的附加訪問可通過使用受控葉子進棧(pushing)來避免?;?顧HSST的每個超節(jié)點表示分類器的二叉trie的子樹。在受控葉子進棧中,檢 査由每個超節(jié)點表示的二叉子樹的根N。如果N不包含下一跳,則與Q(N)相 匹配的最長前綴的下一跳被調(diào)加到N。注意當使用受控葉子進棧時,不需要 prefixBit,并且在査找期間無需對父親節(jié)點Z保持跟蹤。具有受控葉子進棧的 HSST的這種實現(xiàn)被稱為增強前綴位實現(xiàn)。增強前綴位實現(xiàn)中的査找所需的存 儲器訪問的次數(shù)為H + 3。
基實現(xiàn)最優(yōu)化
當使用基實現(xiàn)且b:20時,如果NH指針可被消去(用于節(jié)省b位),則 K的值可增大5。 NH指針的消去還可導(dǎo)致S的增大。為了消去NH指針,超 節(jié)點N的下一跳數(shù)組NA緊接其子女數(shù)組CA被存儲。N的下一跳數(shù)組的起始 可從N的子女指針以及對N所具有的子女超節(jié)點的數(shù)目的認知來計算。后者 可根據(jù)N的EBM來確定。由于下一跳數(shù)組的大小可能不是B的倍數(shù),因此這 種策略可能導(dǎo)致每個下一跳數(shù)組浪費最多達B-1位,因為每個子女數(shù)組必須在 字邊界處對齊。如果(CA, NA)對中的某些成對且每一對中的第二(CA,NA) 元組被翻轉(zhuǎn),則這種增強基實現(xiàn)所用的存儲器字的總數(shù)可被減小。例如,假設(shè) B = 72,每個下一跳條目使用18位,NA1需要162位,而NA2需要180位。子女數(shù)組中的每個條目是使用B位的超節(jié)點。由于每個(CA,NA)必須在字邊界處 開始,因此將(CAl,NAl)和(CA2,NA2)放入存儲器使用nl+n2+6個B位字,其 中nl和n2分別為CA1和CA2中超節(jié)點的數(shù)目。如果翻轉(zhuǎn)(CA2, NA2)獲得(NA2 CA2),則下一跳數(shù)組NA2可使用B位字的54位中未被NA1使用的36位,并 將總字數(shù)減小1。B位字中NA1和NA2的這種共享在共享B位字留下18個未 使用位,且子女數(shù)組CA2保持與字邊界對齊。(NA2, CA2)的子女指針現(xiàn)在指 向數(shù)組NA2的起始,并且為了從此子女指針計算數(shù)組CA2的起始,NH2中下 一跳條目的數(shù)目必須已知。此數(shù)目是根據(jù)IBM確定的。為了采用此翻轉(zhuǎn)策略 以潛在地減小增強基實現(xiàn)所需的總存儲器,每個超節(jié)點必須擴增一位,該位標 識用于其子女和下一跳數(shù)組的定向(CA, NA)或(NA, CA)。
為了最小化增強基實現(xiàn)所用的存儲器,以下約束裝箱問題(RBIN)必須 被求解:將范圍[l,B]中的n個整數(shù)bi,…,b。填充到最小數(shù)目個大小為B的桶中, 以使得沒有桶被指派兩個以上的整數(shù)??赏ㄟ^使用經(jīng)修改的首次擬合遞減啟發(fā) 式算法來在O(n log n)時間內(nèi)求解RBIN問題以在每個箱中填充至多兩個項 目。這種策略的最優(yōu)性易于通過對n進行歸納來構(gòu)建。替換性策略是將bis排
列成降序,并在隨后反復(fù)使最小未成對bi與最大未成對bi (在成對bis的總數(shù)
不大于B的約束下)成對。當沒有新對可被創(chuàng)建時成對過程終止。剩余單元素 和對的數(shù)目是填充所需的箱的數(shù)目。
端節(jié)點最優(yōu)化HSST HSST所需的空間的進一步縮減可通過采用端節(jié)點最優(yōu)化來達成。允許四 種格式的葉子超節(jié)點。圖10示出了基實現(xiàn)的這四種格式。每個超節(jié)點(葉子 或非葉子)使用一位來在葉子與非葉子超節(jié)點之間進行區(qū)分。每個葉子超節(jié)點 使用兩個附加位來在四種葉子格式當中進行區(qū)分,而每個非葉子超節(jié)點使用一 附加位來在SST與TBM超節(jié)點之間進行區(qū)分。葉子超節(jié)點是通過標識符合四 種葉子超節(jié)點格式之一的二叉trie的最大子trie來獲得的。注意,葉子超節(jié)點 沒有子女指針。因此,在SST格式中,可使用比用于非葉子超節(jié)點大的K,并 且在TBM格式中,更大的S也是可能的。當子trie中的前綴被填充到單個超 節(jié)點中時,使用第三格式(SuffixA (后綴A))。對于這種填充,令N為被填充的子trie的根。隨后,Q(N)(由從T的根到N的路徑定義的前綴)對于以 N為根的子trie中的所有前綴而言相同。因此,葉子超節(jié)點需要僅存儲通過從 ST(N)中的每一前綴刪除Q(N)獲得的后綴。葉子超節(jié)點存儲這些后綴的編號, 緊接著存儲(后綴長度,后綴)形式的對。在圖10中,len(Sl)是第一后綴的 長度,而Sl是超節(jié)點中的第一后綴。第三格式的葉子超節(jié)點通過連續(xù)地檢査 存儲在節(jié)點中的后綴并將這些與目的地址(在其被從前綴Q(N)剝除之后;此 剝除可如從root(T)移至N那樣來進行)作比較來搜索。與第三格式相類似的 第四格式(SuffixB (后綴B))避免了第三格式用于提取下一跳所需的存儲器 訪問。當將受控葉子進棧應(yīng)用于SuffixB超節(jié)點時,在最壞情況下査找所需的 存儲器訪問的次數(shù)可減少。注意在沒有受控葉子進棧的情況下,如果在SuffixB 葉子超節(jié)點中沒有找到匹配前綴,則需要附加訪問來沿搜索路徑提取與最長匹 配前綴相關(guān)聯(lián)的下一跳。
對于可由前三種類型的葉子超節(jié)點表示的所有ST (N),針對h20設(shè)置 opt(N, h) = 1 ,而對于可由SuffixB超節(jié)點表示的所有ST (N),針對設(shè)置 opt(N, h)= 1。章節(jié)"空間最優(yōu)HSST"的動態(tài)編程遞歸在隨后被用于確定 opt(root(T ),H)。
盡管已針對基實現(xiàn)描述了端節(jié)點最優(yōu)化,但是這種技術(shù)也可被應(yīng)用于增強 前綴位實現(xiàn)以及用于降低總存儲器需求。
2DHSST和2DHSSTPC HSST的增強基實現(xiàn)被用于2DHSST和2DHSSTPC的目的和源trie兩者。 端節(jié)點最優(yōu)化是在2DHSST和2DHSSTPC的每個源trie上進行的。然而,對 于目的trie,進行如下
1. 在應(yīng)用章節(jié)"空間最優(yōu)2DHSST"和"具有前綴繼承的2DHSST (2DHSSTP)"中的式子之前切掉目的二叉trie的葉子以構(gòu)造空間最優(yōu)2DHSST
和2DHSSTPC。在構(gòu)造之后,標識被切掉的每個葉子的父親目的trie超節(jié)點。
2. 在2DHSSTPC的情形中,目的二叉trie的葉子懸掛的每個源trie繼承 沿父親目的trie超節(jié)點中去往此葉子的路徑存儲的前綴。
3. 每個切掉的葉子被HSST替換成其源trie (此源trie包括(2)中在
262DHSSTPC的情形中繼承的前綴)。此HSST的根被替換成父親目的trie超節(jié) 點的適當?shù)淖优?這要求使用附加位來在目的trie超節(jié)點與源HSST根之間 進行區(qū)分)。
通過如以上處理二叉目的trie的葉子,略去搜索在目的trie父親中去往葉 子子女的路徑上的源trie的這種需要。
最后,對于2DHSSTPC,構(gòu)造空間最優(yōu)結(jié)構(gòu)所需的時間和空間可通過使 用章節(jié)"具有前綴繼承的2DHSST (2DHSSTP)"中所用的p的替換性定義來減 小。在此新的定義中,前綴繼承向上延伸至T中N的具有非空源trie的p個最 接近的祖先。由于在典型數(shù)據(jù)集合中,盡管祖先的數(shù)目在IPv4中可達32以及 在IPv6中可達128,但是目的trie節(jié)點具有較少數(shù)目(比方3或4個)的祖先—— 這些祖先具有非空源trie,因此p的新定義允許使用小得多的p。這減小了 x(*, *,*,*)和叩12(*,*,*,*)的數(shù)組所需的存儲器,并且還減小了計算時間。注意 必須修改章節(jié)"具有前綴繼承的2DHSST (2DHSSTP)"中的式子以計及定義中 的這種改變。還注意雖然minx(、、 *, *)所需的空間也被減小,但是章節(jié)"具 有前綴繼承的2DHSST (2DHSSTP)"中的遞歸可在實際上不使用這種數(shù)組的 情況下被求解。
實驗結(jié)果
用于空間最優(yōu)1維和2維超節(jié)點trie的算法的0++是使用具有最優(yōu)化層 03的GCC3.3.5編譯器編譯的,并且在2.80 GHz Pentium (奔騰)4 PC上運行。 參照目前公布的算法對這些算法進行基準測試以構(gòu)造用于1維和2維分組分類 的空間有效數(shù)據(jù)結(jié)構(gòu)。經(jīng)基準測試的算法力圖構(gòu)造査找結(jié)構(gòu),該結(jié)構(gòu)(a)使在最 壞情況下查找所需的存儲器訪問的次數(shù)最小化,以及(b)使存儲所構(gòu)造的數(shù)據(jù)結(jié) 構(gòu)所需的總存儲器最小化。結(jié)果,這些實驗僅測量這兩個量。首先,運行所有 測試算法以便于生成使最壞情況下査找所需的存儲器訪問次數(shù)最小化的査找 結(jié)構(gòu);所構(gòu)造的査找結(jié)構(gòu)的大小(即,所需存儲器)被最小化以服從此前的約 束。出于基準測試的目的,假定分類器數(shù)據(jù)結(jié)構(gòu)將駐留在QDRII SRAM上, 該QDRII SRAM支持B二72位(雙突發(fā))和B= 144位(四突發(fā))兩者。對于 這些實驗,針對指針(無論子女指針還是指向下一跳數(shù)組的指針)使用b-22
27位而針對每下一跳使用12位。在二維表的情形中,與前綴相關(guān)聯(lián)的優(yōu)先級和 動作需要被存儲。出于這個目的,分配18位。
一維路由表
實現(xiàn)空間最優(yōu)HSST的四個變量增強前綴位(EP)、具有端節(jié)點最優(yōu)化的
增強前綴位(EPO)、增強基(EB)、以及具有端節(jié)點最優(yōu)化的增強基(EBO)。另外, 考慮Song等人的BFP算法以及Sun等人的變體3算法(其被稱為V3MT)以 構(gòu)造多路樹。Sun等人報告的廣泛實驗確立了 V3MT在空間和查找效率方面勝 于其它用于IP查找表的空間和時間有效表示的已知方案的優(yōu)越性。Song等人 確立了 BFP勝于Eatherton等人的TBM的優(yōu)越性。然而,Song等人沒有將BFP 與V3MT作對比。
IPv4路由器表
對于測試數(shù)據(jù),使用IPv4和IPv6路由器表兩者。首先,將報告IPv4實 驗,這是使用六個IPv4路由表Aads、 MaeWest、 RRCOl、 RRC04、 AS4637和 AS1221來進行的。這些路由器表中的前綴的數(shù)目分別為17486、29608、 103555、 109600、 173501和215487。
圖11示出了在由本發(fā)明中的每種算法(假定根被保存在寄存器中)構(gòu)造 的數(shù)據(jù)結(jié)構(gòu)中進行査找所需的存儲器訪問的次數(shù)。與Song等人以及Sun等人 所報告的訪問數(shù)不同,本發(fā)明報告的次數(shù)包括獲得最長匹配前綴的下一跳所需 的附加訪問(如果有的話)。圖12標繪了此數(shù)據(jù)。如可看到的,EBO導(dǎo)致所 有測試集合的最小訪問次數(shù);當B-72時,在所有六個測試集合上,EPO與 EBO不分勝負(其它具有9位下一跳和18位指針域的實驗指示當B=72時EBO 常常需要比EPO少1次存儲器訪問),而當B = 144時,在這些測試情形中的 兩種上EPO與EBO不分勝負。
圖13(a)按EBO的計數(shù)歸一化訪問計數(shù)數(shù)據(jù),并給出了 6個數(shù)據(jù)集合的經(jīng) 歸一化計數(shù)的最小、最大和標準偏差。在由BFP構(gòu)造的結(jié)構(gòu)中進行査找的存儲 器訪問次數(shù)是EBO結(jié)構(gòu)所需的次數(shù)的1.33倍至2.00倍;平均而言,BFP結(jié)構(gòu) 需要EBO結(jié)構(gòu)所需訪問次數(shù)的1.53倍的訪問次數(shù),并且標準偏差為0.25。當B從B = 72變成B = 144時,由6種算法的每一種所構(gòu)造的結(jié)構(gòu)所需 的存儲器訪問次數(shù)減少。關(guān)于EPO的減少在17%與33%之間(平均偏差和標 準偏差為23%和8%)。關(guān)于EBO的減少為從33%到40% (平均偏差和標準 偏差為36%和3%)注意,當B = 72時,在6個數(shù)據(jù)集合的5個中BFP優(yōu)于 V3MT —次存儲器訪問,而在第六個數(shù)據(jù)集合上彼此不分勝負。注意,當B = 144 時,在6個數(shù)據(jù)集合的3個中V3MT優(yōu)于BFP—次存儲器訪問,而其余三個 數(shù)據(jù)集合上彼此不分勝負。
圖14示出了由6中算法的每一種所構(gòu)造的査找結(jié)構(gòu)所需的總存儲器。圖 15標繪了此數(shù)據(jù)而圖13(b)給出了按EBO的數(shù)據(jù)歸一化的統(tǒng)計。如可看到的, EPO和EBO導(dǎo)致最小總存儲器要求。盡管EPO在12種測試情形中的9種上 的存儲器度量上略優(yōu)于EBO,但是對于所有12種情形,EBO所需的總存儲器 比EPO所需的少2%。由其余算法構(gòu)造的搜索結(jié)構(gòu)平均上需要比由EBP構(gòu)造 的結(jié)構(gòu)多23%到61%之間的存儲器。當8 = 72時,對于BFP,每個前綴所需 的平均存儲位數(shù)為48,對于V3MT為42而對于EBO為27。對于當B = 144 時的情形,相對應(yīng)的數(shù)目為41、 35和27。
當B從72增至144時,對于6個數(shù)據(jù)集合中的4種,EPO和EBO所需 的存儲器減少,而對于其余2種,所需的存儲器增加。按B-72存儲器歸一 化的B = 144存儲器在0.95與1.26之間,平均偏差和標準偏差分別為1.05和 0.15。對于EBO,相應(yīng)的歸一化數(shù)值為0.96、 1.13、 1.0禾卩0.07。
在IPv4數(shù)據(jù)集合上,EBO和EPO是完全勝利者。EBO在存儲器訪問度 量上略優(yōu)于EPO,并且兩者在所需存儲器度量上極具競爭力。由于前者更為重 要,因此相對于EPO推薦EBO。 EBO査找結(jié)構(gòu)要求比EFP結(jié)構(gòu)少25%到50% 的訪問;它們還將存儲器需求減少24%到44%。存儲器訪問次數(shù)和存儲器需求 上相對于V3MT的減少為25%到40%以及12%到38%。
與其它簡明表示的比較 一種提出的簡明路由器表結(jié)構(gòu)被稱為Lulea。其為3層多位trie。 Lulea中 的査找要求12次存儲器訪問。因此,只要隨著査找時間的流逝,Lulea對于以 上考慮的所有6種結(jié)構(gòu)而言都是較差的。由于無Lulea的代碼可用,因此僅進行大概的存儲器比較。Degermark等人報告6個數(shù)據(jù)庫的存儲器要求,其中最 大的具有38,141個前綴并且每個前綴使用34個存儲器位。由于每個前綴所需 的存儲器隨著數(shù)據(jù)庫大小的增大而減少,所以將其與具有29,608個前綴的 MaeWest相比(此比較偏向支持Lulea)。在B = 72的MaeWest上,EPO、 EBO、 BFP和VM3T分別要求每個前綴32、 31、 55和49位。關(guān)于B = 144的相應(yīng)數(shù) 值為30、 35、 46和40。注意,出于以下原因,這是非常大概的比較(l)數(shù)據(jù) 庫不同,以及(2)分配給指針和下一跳的位數(shù)在Lulea和其余結(jié)構(gòu)中是不同的。 例如,Lulea方案要求指針的大小與下一跳的相同,并因此向每一個各分配14 位。在以上實驗中,將22位用于指針以及將12位用于下一跳。在Lulea中將 下一跳大小減至12位不會減少所需的總存儲器,除非指針大小也減至12位。 假定這些不平等抵消,數(shù)據(jù)表明EPO和EBO在査找復(fù)雜度和存儲器復(fù)雜度兩 者上皆勝于Lulea!
Lunterenl已提出使用完全散列函數(shù)——平衡路由表搜索(BART)的多位 trie的簡明表示。圖6的第一行給出了 BART 12-4-4-4-8——其兩個最高存儲器 效率方案(另一方案是BART 8_4_4_4_4-8,其對于搜索而言要求略少的存儲器, 但是多兩次訪問)之一——的存儲器需求。在BART 12-4-4-4-8中,查找所需 的存儲器訪問的次數(shù)為9。相比之下,B = 72下的EBO的查找復(fù)雜度為5或6 次訪問/査找,并且所需的總存儲器落在BART 12-4-4-4-8的存儲器的38%與 43%之間。注意Lunterenl和本發(fā)明所用的實現(xiàn)假設(shè)略微不同。Lunteren I向 每個指針和下一跳分配18位,而在本發(fā)明中,向指針分配22位且向下一跳分 配12位。Lunterenl的方案要求指針和下一跳有相同大小。實際上,不同的下 一跳的數(shù)目較小,因此12位是足夠的。另一方面,對于較大數(shù)據(jù)庫,對于指 針而言,18位可能是不夠的。不管這些微小差異,實驗表明EBO在査找復(fù)雜 度和所需的總存儲器上勝于Lunteren I的方案。
Lunteren II描述了用于很寬的存儲器——B2288——相關(guān)完全散列函數(shù)策 略(BARTS)。圖16的第二行示出了其用于很寬的存儲器的存儲器最有效方 案一_BARTS 12-6-6-8——的存儲器要求。所報告的數(shù)據(jù)是對應(yīng)于B = 288這 種情形的。査找所需的存儲器訪問的次數(shù)為4。 B = 144下的EBO實現(xiàn)3或4 次訪問/査找的査找復(fù)雜度,同時要求BARTS 12-6-6-8所需的存儲器的44%到60%。
Ipv6路由器表
對于IPv6實驗,833-前綴AS1221-Telstra路由器表連同6個合成IPv6表 一起被使用。從AS1221-Telstra表移除比64長的前綴,因為當前IPv6地址分 配方案至多64位。對于合成表,Wang等人提出的策略("Non-random Generator for IP6v Tables (用于IP6v表的非隨機發(fā)生器)",關(guān)于高性能互聯(lián)的12周年 IEEE座談會,2004)被用于從IPv4表生成IPv6表。在這種策略中,16位串 被預(yù)加到每個IPv4前綴,后者由001之后跟隨13個隨機位構(gòu)成。如果這種預(yù) 加沒有至少使前綴長度翻倍,則預(yù)加足夠數(shù)目的隨機位以使得前綴的長度翻 倍。在這種預(yù)加和可能的追加之后,四分之一的前綴中的最后一位被丟棄,以 使得真實路由器表中觀測到的偶數(shù)長度前綴與奇數(shù)長度前綴之比保持3:1。對 每個合成表賦予與合成所源自的IPv4表相同的名稱。AS1221-Telstra IPv6被命 名為AS122"以將其與合成自IPv4AS1221表的IPv6表區(qū)分開。
圖17和20給出了 7個IPv6數(shù)據(jù)集合的搜索結(jié)構(gòu)所需的存儲器訪問的次 數(shù)和存儲器。圖18和21標繪了這些數(shù)據(jù),而圖19給出了按EBO的數(shù)據(jù)歸一 化的統(tǒng)計。EPO和EBO就存儲器訪問次數(shù)而言是最佳的。當B-72時,在7 個數(shù)據(jù)集合的2個上EPO優(yōu)于EBO —次存儲器訪問,而其余5個上彼此不分 勝負。然而,當B:144時,在7個數(shù)據(jù)集合的3個上EBO優(yōu)于EPO—次存 儲器訪問,而其余4個上彼此不分勝負。至于IPv4數(shù)據(jù),EBO結(jié)構(gòu)的存儲器 利用率基本上與EPO結(jié)構(gòu)一樣好(1%的平均差異)。所構(gòu)造的BFP中的最壞 情況下的查找需要EBO結(jié)構(gòu)中所需的存儲器訪問的1.14到2.00倍,而BFP 結(jié)構(gòu)需要EBO結(jié)構(gòu)所需的存儲器的1.82到3.17倍。
如同IPv4實驗的情形那樣,將B從72增至144,導(dǎo)致查找所需存儲器訪 問的次數(shù)的減少。對于EPO,存儲器訪問的最大、最小和平均減少為33%、 17% 和25%;標準偏差為8%。 EBO的相應(yīng)百分比為57%、 20%、 34%和13%。對 于7個數(shù)據(jù)集合中的5個,EPO所需的存儲器減少,而在其余2個上,所需存 儲器增大。當B = 144時所需的總存儲器按當B = 72時所需的歸一化成落在 0.86與1.1之間;平均偏差和標準偏差分別為1.01和0.1。對于EBO,在所有
317個數(shù)據(jù)集合上所需的存儲器減少。最大、最小和平均存儲器減少為16%、 4% 和12%;標準偏差為4%。
進一步最優(yōu)化
Song等人已提出了兩種技術(shù)子女晉升和最接近祖先折疊,其可被用于 減少一位二叉樹中的節(jié)點數(shù)目和前綴數(shù)目。這些技術(shù)減少了一位二叉trie的大 小及其緊湊表示的大小。在子女晉升中,如果二叉節(jié)點的兄弟還包含有效前綴,
則存儲在該二叉節(jié)點中的前綴被晉升至父親節(jié)點。在晉升之后,倘若節(jié)點為葉 子,則刪除該節(jié)點。在最接近祖先折疊技術(shù)中,如果節(jié)點的最接近祖先包含與 下一跳相同的前綴,則存儲在該節(jié)點中的前綴被忽略;如果葉子變成空,則刪 除它們。注意最接近祖先折疊非常類似于Sun等人提出的端口融合技術(shù)。端
口融合被用來通過融合具有相同下一跳的兩個連續(xù)目的地址區(qū)間來減少端點 的數(shù)目。
在此章節(jié)中,將學(xué)習(xí)到子女晉升和最接近祖先折疊對由EBO、 BFP和 V3MT生成的簡明表示的影響。對于V3MT,對從經(jīng)最優(yōu)化的二叉trie構(gòu)造的 區(qū)間進行端口融合。對于這種實驗研究,僅使用IPv4數(shù)據(jù)集合中的三 個——Aads、 Maewest、和AS1221,因為這些是僅有的有下一跳數(shù)據(jù)可用的數(shù) 據(jù)集合。
圖22給出了查找所需的總存儲器需求和存儲器訪問。在存儲器訪問次數(shù) 的度量以及總存儲器度量上EBO仍為最佳簡明表示方法。在18個測試中的兩 個(在B= 144的情況下AS1221上的BFP以及在B=72的情況下Aads上的 V3MT)上,査找所需的存儲器訪問的次數(shù)減少1次。對于其余16個測試,査 找所需的訪問次數(shù)不變。
子女晉升和最接近祖先折疊最優(yōu)化的應(yīng)用減少了二叉trie的簡明表示所需 的總存儲器。對于EBO,減少從24%變?yōu)?5%,且平均減少為29%;標準偏 差為5%。對于BFP,這些百分比為23%、 37%、 28%和6%。對于V3MT,這 些百分比為34%、 49%、 40%和7%。這些實驗指示存儲器需求中的大多數(shù)減 少歸因于最接近祖先折疊最優(yōu)化。子女降級貢獻約1%的存儲器減少。
按EBO結(jié)構(gòu)所需的存儲器歸一化的BFP結(jié)構(gòu)所需的存儲器落在1.41與1.82之間,并且平均偏差與標準偏差為1.62和0.17。 V3MT的相應(yīng)比為1.02、 1.40、 1.19禾口 0.16。
多維IPv4表
評估所提出的使用二維和5維數(shù)據(jù)集合的數(shù)據(jù)結(jié)構(gòu)的性能。使用由Taylor 等人的過濾器發(fā)生器所創(chuàng)建的十二個5維數(shù)據(jù)集合。這些數(shù)據(jù)集合中的每一個 實際上具有IO個不同的規(guī)則數(shù)據(jù)庫。因此,總共有120個5維規(guī)則數(shù)據(jù)庫。 命名為ACL1至UACL5 (訪問控制列表)、FW1到FW5 (防火墻)、IPC1和 IPC2 (IP鏈)的數(shù)據(jù)集合平均上在每個數(shù)據(jù)庫中分別具有20K、 19K、 19K、 19K、 12K、 19K、 19K, 18K、 17K、 17K、 19K和20K規(guī)則。從這些5維數(shù)據(jù) 集合導(dǎo)出的2維數(shù)據(jù)集合平均上在每個數(shù)據(jù)庫中分別具有20K、 19K、 IOK、 13K、 5K、 19K、 19K、 18K、 17K、 17K、 16K和20K規(guī)則。2維規(guī)則是通過 剝除源和地址端口字段以及協(xié)議字段來從5維規(guī)則獲得的;目的和源前綴字段 被保留。在此剝除過程之后,副本被刪除(即,如果兩個規(guī)則具有相同的目的 前綴和相同的源前綴,則其被認為是副本)。
二維IPv4表
首先,對空間最優(yōu)最小訪問2DHSST和2DHSSTPC結(jié)構(gòu)進行比較。圖23 和24示出了由實驗產(chǎn)生的結(jié)果。對于12個數(shù)據(jù)集合中的5個ACL2-5以 及ffC 1一2DHSSTPC以增加的存儲器要求為代價減少訪問的次數(shù)。對于其 余的數(shù)據(jù)集合,2DHSSTPC和2DHSST要求幾乎相同的訪問次數(shù)和相同的存
儲器量。
在所有這些數(shù)據(jù)集合中,2DHSSTPC要求比2DHSST所需的存儲器多0% 到29%之間的存儲器(所需存儲器中的平均增加為6%而標準偏差為9%)。如 之前所敘述的,盡管2DHSSTPC要求更多存儲器,但是它們要求更少的存儲 器訪問次數(shù)來進行査找。2DHSSTPC所實現(xiàn)的存儲器訪問次數(shù)的減少落在0% 與41%之間(平均減少為11%而標準偏差為13%)。
當B從72增至144時,對于2DHSST和2DHSSTPC兩者,所需的存儲 器訪問的次數(shù)得以減少,但是所需的總存儲器一般增加。對于2DHSST,當B=144時所需的總存儲器按當B = 72時所需的被歸一化成落在0.98與1.50之間 (平均偏差和標準偏差為1.21和0.19);存儲器訪問的次數(shù)減少達28%到41% 之間(平均減少為30%而標準偏差為9%)。對于2DHSSTPC,經(jīng)歸一化的存 儲器需求落在1.04與1.49之間(平均偏差和標準偏差為1.23和0.16);存儲 器訪問次數(shù)的減少在從18%到56%的范圍內(nèi)(平均減少為31%而標準偏差為 11%)。
由于主要目標是減少存儲器訪問的次數(shù),因此使用在B: 144的情況下用 于用2DMTSa和2DMTd進一步進行基準測試的2DHSSTPC。 2DMTSa和 2DMTd使用壓縮技術(shù)來緊縮數(shù)組和butler節(jié)點。這兩種技術(shù)非常相似;兩者 都是嘗試用單個節(jié)點來替換具有小量實際數(shù)據(jù)(前綴和指針)的子trie,其中 該單個節(jié)點具有這些數(shù)據(jù)。注意2DMTd和2DMTSa是所開發(fā)的最佳結(jié)構(gòu), 并且使用這兩種壓縮技術(shù),Lu等人已確立2DMTd和2DMTSa勝過諸如trie柵 格、EGT-PC和HyperCut等其它競爭分組分類結(jié)構(gòu)的優(yōu)勢。為了進一步的基準 測試,構(gòu)造針對最壞情況的搜索具有最小可能的存儲器訪問次數(shù)H的空間最優(yōu) 2DHSSTPC。最小值H作為輸入被提供給2DMTSa (2DMTd)算法,以構(gòu)造 在最壞情況下可用H次存儲器訪問搜索的2DMTSa (2DMTd)。由于這種策 略,對于2DHSSTPC和2DMTSa (2DMTd),最壞情況下的存儲器訪問次數(shù) 是相同的。
圖25標繪了 2DHSSTPC、 2DMTd和2DMTSa所需的存儲器??煽吹?, 在存儲器準則上,2DHSSTPC在12個數(shù)據(jù)集合中的4個上勝過2DMTSa —數(shù) 量級,且勝過2DMTSa—數(shù)量級。2DMTd所需的存儲器按2DHSSTPC所需的 被歸一化成落在1.14與624之間,平均偏差和標準偏差為56和179。 2DMTSa 的經(jīng)歸一化的數(shù)值為9、 49、 17、 11。還觀測到,當對2DMTd給予最多比具 有最小可能H的空間最優(yōu)DHSSTPC所需的多60%的存儲器時,對于數(shù)據(jù)集合 FW1 -5和IPC2可用少1或2次的訪問來搜索的2DMTd可被構(gòu)造。
五維IPv4表
對于5維表,使用Baboescu等人提出的桶方案("Packet classification for core routers: is there an alternative to CAMs (用于核心路由器的分組分類有作為CAM的替換方案? ) "INFOCOM, 2003)來擴展2DHSSTPC。始于目的和 源地址的2維trie。具有相同目的-源前綴對(dp, sp)的所有規(guī)則被放置在從 2維trie的適當源trie節(jié)點指向的桶中。由于dp和sp是由通向此桶的路徑所 定義的,因此目的和源前綴字段不被顯式地存儲在桶中。然而,針對桶中的每 一個規(guī)則存儲源端口范圍、目的端口范圍、協(xié)議類型、優(yōu)先級和動作。使用此 論文的2DHSSTPC算法來獲得2維trie的超節(jié)點表示,并且下一跳數(shù)據(jù)的NH 列表包括桶。SuffixB節(jié)點(Lu等人提出的端節(jié)點最優(yōu)化)被修改以使得它們 包含源前綴后綴、目的和源端口、協(xié)議、優(yōu)先級和動作而非僅僅是源前綴后綴、 優(yōu)先級和動作。在2DHSSTPC中的前綴繼承期間,源trie可從祖先trie繼承已 存在于該源trie中的前綴。當這種情況發(fā)生時,與這些繼承前綴相關(guān)聯(lián)的規(guī)則 也需要被存儲在此源trie中。為了避免這種冗余,指針被存儲在與源trie前綴 相關(guān)聯(lián)的桶中,該指針指向與最接近的祖先源trie中的相同前綴相關(guān)聯(lián)的桶。 具有桶的2DHSSTPC被稱為擴展2DHSSTPC。與2DHSST不同,擴展 2DHSSTPC的源trie不被修改以使得搜索路徑上看到的最后的源前綴具有最高 優(yōu)先級(或最小成本)。
Baboescu等人聲明,如上所述,當使用具有桶的2維trie時,對于5維表, 大多數(shù)桶具有不多于5個規(guī)則,且沒有桶具有20個以上的規(guī)則。雖然這種言 論對于Baboescu等人所用的數(shù)據(jù)集合成立,但是某些桶對于數(shù)據(jù)集合具有顯 著更多的規(guī)則。例如,在FW4中,約IOO個規(guī)則在目的和源前綴字段兩者中 皆包含通配符。這些規(guī)則可被從原始數(shù)據(jù)集合移除并被存儲在針對其余3個字 段最優(yōu)化的搜索結(jié)構(gòu)中。注意將具有通配符的較大的規(guī)則簇存儲在單獨結(jié)構(gòu) 的目的和源前綴字段中的這種策略較早地被用在HyperCut方案中。以下附圖 和表中報告的數(shù)據(jù)僅對應(yīng)于針對具有在目的和源前綴字段中的通配符的規(guī)則 被移除之后剩余的那些規(guī)則構(gòu)造的結(jié)構(gòu)。
圖26給出了擴展2DHSSTPC在十二個5維數(shù)據(jù)集合上所需的總存儲器和 存儲器訪問次數(shù)。圖27將2DHSSTPC (當然,這些僅存儲導(dǎo)出的2維規(guī)則) 與存儲5維規(guī)則的擴展2DHSSTPC作比較。擴展2DHSSTPC每個規(guī)則所需存 儲器(千字節(jié))的位數(shù)落在59與196之間;平均為128。令人驚訝的,添加三 個字段僅使位湖則的數(shù)目的增加落在0.5與42之間;平均僅增加13。實際上,
35對于12個數(shù)據(jù)集合中的8個(ACLl-2、 FW1-5和IPC2),擴展2DHSSTPC 和2DHSSTPC (皆使用B-144)要求幾乎相同數(shù)目的位/規(guī)則。位/規(guī)則中的很 小的增加歸因于(a)這些規(guī)則中的很大一部分中的端口范圍是各自僅需要一位 的通配符,以及(b)對于5維規(guī)則中的3個附加字段的大多數(shù)數(shù)據(jù)可被填充到在 2維規(guī)則的情況下被浪費的SuffixB節(jié)點的空間中。搜索擴展2DHSSTPC所需 的存儲器訪問的次數(shù)在從6到35的范圍內(nèi);平均為15。對于12個數(shù)據(jù)集合中 的6個(ACL1、 FWl-3、 FW4和IPC2),特定5維數(shù)據(jù)集合的擴展2DHSSTPC 中的査找所需的存儲器訪問次數(shù)相對于相對應(yīng)的2維數(shù)據(jù)集合的2DHSSTPC 中的査找沒有增加。
以上Singh等人所報告的HyperCut——其為先前已知的多維分組分類的 算法方案中的一種——使用決策樹并且規(guī)則被存儲在有界大小的桶中;每個桶 與樹節(jié)點相關(guān)聯(lián)。與其中目的和源前綴不被顯式存儲的擴展2DHSSTPC所用 的桶方案不同,HyperCut的桶方案要求存儲這些字段以及在擴展2DHSSTC桶 中存儲的那些。因此,HyperCut中個體規(guī)則的存儲要求比擴展2DHSSTPC所 需的多的空間。另外,在HyperCut中,規(guī)則可被存儲在若干桶中,而在擴展 2DHSSTPC,每個規(guī)則被確切地存儲在1個桶中。最有效的Hypercut方案是 HyperCut-4。這種方案被用來與擴展2DHSSTPC作比較。
圖28給出了 HyperCut在十二個5維數(shù)據(jù)集合上所需的總存儲器和存儲器 訪問次數(shù)。HyperCut結(jié)構(gòu)每個規(guī)則所需存儲器的位數(shù)落在242與163,519之間; 平均為56,801。重要的是注意Hypercut所需的位/規(guī)則有較寬的變化;擴展 2DHSSTPC所需的位湖則是可更加容易地預(yù)測的。具體而言,Singh等人報告 對于防火墻類的數(shù)據(jù)庫,HyperCut的特性并非良好的,因為這些往往在源和/ 或目的字段中具有高頻率的通配符。實際上,Singh等人在以上報告源或者目 的前綴字段中百分比為10%的通配符導(dǎo)致存儲器需求的激增。這種言論通過本 發(fā)明中的實驗來證實。HyperCut在ACL1和ACL5上展現(xiàn)了其最佳位/規(guī)則性能 (分別為242和400),其中源或目的字段中的通配符的頻率低于1%。其在5 個防火墻數(shù)據(jù)集合FW1-5上以及IPC2上展現(xiàn)了其最差性能(位/規(guī)則在從 25,757到163,519的范圍內(nèi))。在這些數(shù)據(jù)集合中,通配符頻率落在60%與90% 之間。其余數(shù)據(jù)集合(ACL2-4和IPC1)具有10%與15%之間的通配符頻率,而Hypercut結(jié)構(gòu)所需的位/規(guī)則從4,415變動到16,363。搜索數(shù)據(jù)集合的 Hypercut結(jié)構(gòu)所需的訪問次數(shù)在16到51的范圍內(nèi),且平均為30。
圖29將擴展2DHSSTPC與HyperCut作比較。由擴展2DHSSTPC構(gòu)造的 結(jié)構(gòu)要求的存儲器落在由HyperCut構(gòu)造的結(jié)構(gòu)所需的存儲器的0.1%到79%之 間;平均偏差和標準偏差分別為8%和23%。擴展2DHSSTPC中査找的訪問次 數(shù)落在HyperCut結(jié)構(gòu)所需的訪問次數(shù)的31%與81%之間;平均偏差和標準偏 差分別為46%和16%。對于兩種方案,所報告的存儲器和訪問僅對應(yīng)于在目的 和源前綴字段兩者中具有通配符的規(guī)則被移除之后剩余的那些規(guī)則。
由于在擴展2DHSSTPC中,沒有規(guī)則被存儲兩次,但是相同的規(guī)則可被 存儲在若干Hypercut桶中(取決于規(guī)則集合的復(fù)雜度),因此2DHSSTPC的 存儲器需求可被更好地預(yù)測,并且在平均情況以及最壞情況下數(shù)據(jù)要少得多。
現(xiàn)在參看圖30,由示例性步驟的流程圖來表示用于將數(shù)據(jù)通信網(wǎng)絡(luò)上傳 送的數(shù)據(jù)分組分類的方法300。示例性地,在初始步驟302之后,在步驟304, 提供由多個過濾器定義的存儲器可存儲分組分類器規(guī)則。每個過濾器唯一地對 應(yīng)于在通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送數(shù)據(jù)分組時要采取的多個動作之一。在步驟306, 數(shù)據(jù)分組通過生成服從用于減少對其中存儲分組分類器的存儲器的訪問的預(yù) 定約束的至少一個超節(jié)點trie來根據(jù)分組分類器規(guī)則來分類。在步驟308示例 性地終結(jié)該方法。
根據(jù)一個實施例,生成步驟306包括生成1維節(jié)點、空間最優(yōu)超節(jié)點,其 中預(yù)定義約束使存儲器訪問最小化。根據(jù)另一個實施例,生成步驟306包括生 成多維節(jié)點、空間最優(yōu)超節(jié)點,其中預(yù)定義約束使存儲器訪問最小化。此外, 超節(jié)點和預(yù)定義約束可被配置成使用于存儲至少一個分類器規(guī)則的存儲器的 量最小化。
如已敘述的,本發(fā)明可在硬件、軟件或硬件和軟件的組合中實現(xiàn)。本發(fā)明 可以集中式方式在一個計算機系統(tǒng)中實現(xiàn),或者以其中不同元素分散在若干個 互聯(lián)的計算機系統(tǒng)上的分布式方式來實現(xiàn)。任何類型的計算機系統(tǒng)或適于執(zhí)行
本文所描述的方法的其它裝置是合適的。硬件和軟件的典型組合可以是具有計 算機程序的通用計算機系統(tǒng),該計算機程序在被加載和執(zhí)行時控制該計算機系 統(tǒng)以使其執(zhí)行本文所描述的方法。
37本發(fā)明可被體現(xiàn)在計算機程序產(chǎn)品中,或計算機可讀存儲介質(zhì)中,后者包 括使得能夠?qū)崿F(xiàn)本發(fā)明所描述的方法的所有特征,并且其在被加載到計算機系 統(tǒng)中時能夠執(zhí)行這些方法。本上下文中的計算機程序意味著任何語言、代碼或 符號的任何表達的指令集意在使具有信息處理能力的系統(tǒng)直接執(zhí)行或者在以 下任一者或兩者之后執(zhí)行特定功能a)轉(zhuǎn)換成另一種語言、代碼或符號;b)以 不同物質(zhì)形式再現(xiàn)。
本發(fā)明可以其它形式來體現(xiàn)而不背離其精神或?qū)嵸|(zhì)屬性。相應(yīng)地,應(yīng)引用 所附權(quán)利要求而非先前的描述來作為本發(fā)明的范圍。
權(quán)利要求
1.一種將通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送的數(shù)據(jù)分組分類的計算機實現(xiàn)方法,所述方法包括提供由多個過濾器定義的存儲器可存儲的分組分類器,每個過濾器唯一地對應(yīng)于在通過所述數(shù)據(jù)通信網(wǎng)絡(luò)傳送所述數(shù)據(jù)分組時要采取的多個動作之一;以及通過生成服從用于減少對其中存儲所述分組分類器的存儲器的訪問的預(yù)定約束的至少一個超節(jié)點trie來根據(jù)所述分組分類器規(guī)則將數(shù)據(jù)分組分類。
2. 如權(quán)利要求1所述的方法,其特征在于,所述生成步驟包括生成1維 節(jié)點、空間最優(yōu)超節(jié)點,其中所述預(yù)定義約束使所述存儲器訪問最小化。
3. 如權(quán)利要求1所述的方法,其特征在于,所述生成步驟包括生成多維 節(jié)點、空間最優(yōu)超節(jié)點,其中所述預(yù)定義約束使所述存儲器訪問最小化。
4. 如權(quán)利要求1所述的方法,其特征在于,所述超節(jié)點和預(yù)定義約束可 被配置成使用于存儲所述至少一個分類器規(guī)則的存儲器的量最小化。
5. —種包括用于將通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送的數(shù)據(jù)分組分類的硬件和軟件模塊的組合的系統(tǒng),所述系統(tǒng)包括存儲器,用于存儲由多個過濾器定義的至少一個分組分類器規(guī)則,每個過 濾器唯一地對應(yīng)于在通過所述數(shù)據(jù)通信網(wǎng)絡(luò)傳送所述數(shù)據(jù)分組時要采取的多個動作之一;以及處理器,配置成訪問所述存儲器中的所述分組分類器規(guī)則以及基于所述分 組分類器規(guī)則將所述數(shù)據(jù)分組分類,所述數(shù)據(jù)分組是通過所述處理器生成服從 用于減少對所述存儲器的訪問的預(yù)定約束的至少一個超節(jié)點trie來分類的。
6. 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述分類器規(guī)則包括1維節(jié) 點、空間最優(yōu)超節(jié)點,并且其中所述預(yù)定義約束使得所述處理器在將所述數(shù)據(jù) 分組分類時所執(zhí)行的存儲器訪問最小化。
7. 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述分類器規(guī)則包括多維節(jié) 點、空間最優(yōu)超節(jié)點,并且其中所述預(yù)定義約束使得所述處理器在將所述數(shù)據(jù) 分組分類時所執(zhí)行的存儲器訪問最小化。
8. 如權(quán)利要求5所述的系統(tǒng),其特征在于,所述處理器被配置成生成使 所述存儲器內(nèi)的所述至少一個分類器規(guī)則的存儲最小化的預(yù)定義約束相對應(yīng) 的超節(jié)點。
9. 一種用于存儲計算機程序的計算機可讀存儲介質(zhì),所述計算機程序包括用于以下動作的計算機實現(xiàn)指令訪問由多個過濾器定義的存儲器可存儲的分組分類器規(guī)則,每個過濾器唯 一地對應(yīng)于在通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送所述數(shù)據(jù)分組時要釆取的多個動作之一; 以及通過生成服從用于減少對其中存儲所述分組分類器的存儲器的訪問的預(yù)定約束的至少一個超節(jié)點trie來根據(jù)所述分組分類器規(guī)則將數(shù)據(jù)分組分類。
10. 如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其特征在于,所述生成步 驟包括生成1維節(jié)點、空間最優(yōu)超節(jié)點,其中所述預(yù)定義約束使所述存儲器訪 問最小化。
11. 如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其特征在于,所述生成步 驟包括生成多維節(jié)點、空間最優(yōu)超節(jié)點,其中所述預(yù)定義約束使所述存儲器訪 問最小化。
12. 如權(quán)利要求9所述的計算機可讀存儲介質(zhì),其特征在于,所述超節(jié)點 和預(yù)定義約束被配置成使用于存儲所述至少一個分類器規(guī)則的存儲器的量最 小化。
全文摘要
一種將通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送的數(shù)據(jù)分組分類的計算機實現(xiàn)方法,包括提供由多個過濾器定義的存儲器可存儲的分組分類器規(guī)則,每個過濾器唯一地對應(yīng)于在通過數(shù)據(jù)通信網(wǎng)絡(luò)傳送數(shù)據(jù)分組時要采取的多個動作之一;以及通過生成服從用于減少對其中存儲分組分類器規(guī)則的存儲器的訪問的預(yù)定約束的至少一個超節(jié)點trie來根據(jù)分組分類器規(guī)則將數(shù)據(jù)分組分類。提供一種包括硬件和軟件模塊的系統(tǒng)來執(zhí)行該方法。還提供了一種計算機可讀存儲介質(zhì)來存儲用于執(zhí)行該方法的計算機程序。
文檔編號H04L12/56GK101554021SQ200780028490
公開日2009年10月7日 申請日期2007年8月2日 優(yōu)先權(quán)日2006年8月2日
發(fā)明者S·薩尼, 盧文成 申請人:佛羅里達大學(xué)研究基金會股份有限公司