專利名稱:基于tcam的分布式并行ip路由查找方法
技術領域:
IP路由查找是計算機網(wǎng)絡應用(如路由器,交換機和防火墻等核心設備中)的關鍵技術之一。對于IPv4數(shù)據(jù)包,路由查找的任務是利用IP包頭的目的IP地址,查找得到下一跳的路由信息(下一跳出口和下一跳路由器的IP地址等),它屬于計算機網(wǎng)絡技術領域。
背景技術:
高速IP路由查找技術主要應用于高速信息骨干網(wǎng)絡中的G比特或T比特核心路由器。隨著光接口技術的飛速發(fā)展,單個光接口的處理速度已達到40Gbps(109比特每秒),而且很快將達到160Gbps。這意味著查找引擎需要滿足400Mpps(106包每秒)的查找吞吐量。這使得路由查找成為了路由器對IP包處理的主要性能瓶頸之一。
傳統(tǒng)的路由查找采用集中式存儲串行查找的方式,即路由表被集中存儲在一個邏輯存儲器中,查找操作之間是串行的一個接一個的順序執(zhí)行。這使得路由查找的吞吐量最受限于存儲器的訪問速率。由于受到當前大規(guī)模集成電路工藝水平的限制,就算采用目前最快的存儲器芯片,傳統(tǒng)的方式也很難滿足160Gbps接口(即400Mpps)的處理能力要求。一些現(xiàn)有的文獻,如[Reducing TCAM power consumption and increasing throughput]中提到運用完全冗余存儲的方式來實現(xiàn)并行查找把一個路由轉發(fā)表簡單重復的存儲在多個存儲器中,從而實現(xiàn)簡單的并行查找。這樣做雖然吞吐量有所提高,但同時存儲代價要成倍的增長。
TCAM(Ternary Content Accessible Memory),即三元內(nèi)容尋址內(nèi)存,是一種新穎的存儲器,他允許進行儲存內(nèi)容為通配符的內(nèi)容查找;對要求滿足最長前綴匹配的IP路由查找來說,TCAM能在一次存儲器訪問周期返回一個查找結果(其他同類技術一般需要多次存儲器訪問才可返回一個查找結果);正因為這樣,基于TCAM的查找技術在吞吐量上是較其他同類技術領先的,單片TCAM可以實現(xiàn)高達266Mpps的查找吞吐量[CYRESS芯片公司http//www.cypress.com/]。但是另一方面,由于TCAM本身的結構原理和受限于當前的工藝水平,TCAM的查找速度很難再大幅度提高,仍然達不到160Gbps的線卡處理速度要求;另外TCAM的容量不能做得很高,單片的TCAM目前只能做到1Mbytes左右的容量,而且價格十分昂貴,功耗很大。如果采用簡單的重復存儲,尤其是對于大型的路由表來說,功耗和價格都會及其的高,甚至無法具體實現(xiàn)。
注目前國外對基于TCAM的路由查找技術的研究也還處于上升階段,研究的方向都是針對解決TCAM存在問題的某一個方面進行的,例如
1)單純降低功耗;[CoolCAMsPower-Efficient TCAMs for Forwarding Engines]2)降低成本,節(jié)省資源[Reducing Routing Table Size Using Ternary-CAM]他們都并沒有結合多個方面來考慮和最終解決問題。
與傳統(tǒng)的集中存儲串行查找以及靠簡單提高成本增加存儲代價來提高吞吐量的方式不同,本專利申請的技術方法的先進性和新穎性體現(xiàn)在利用分布式存儲的思想,在不顯著增加系統(tǒng)成本的前提下,利用多個TCAM芯片的并行操作實現(xiàn)非常高的查找吞吐量(滿足160Gbps的要求),同時還有效的控制功耗。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種可實現(xiàn)上述功能的基于TCAM的分布式并行IP路由查找方法。
路由查找引擎的主要功能分為2個部分,對路由轉發(fā)表的維護和對IP包的查找,前者負責管理和組織路由前綴;后者負責把待查找的IP包(的目的IP地址域)送到存儲器內(nèi)進行查找,并把結果返回。
相應的,本發(fā)明發(fā)明內(nèi)容主要分為2個組成部分一個是分布式路由轉發(fā)表的生成;另一個是自適應均衡的并行查找引擎的實現(xiàn)。他們的總體構成一個基于TCAM的路由查找引擎的硬件設計方案。
在此之前我們先要說明一下分布式存儲,并行查找的主要思路對于基于TCAM的查找技術來說,傳統(tǒng)的集中式查找方法是將所有的路由前綴都存放在一個TCAM里面,那么每個處理周期,我們只能訪問一次TCAM存儲器,只能對一個IP包進行查找;而如果我們把路由前綴分散的存儲在多個TCAM芯片里面,那么每個周期我們不但可以同時對多個TCAM進行訪問,對多個IP包進行查找,而且并不帶來顯著得額外開銷。但前提是先解決以下的問題1)我們采取什么樣的分布存儲策略,使得路由前綴能夠平均的存儲在這些TCAM芯片里面,保證存儲的利用率;而且要便于實現(xiàn)和便于管理,不需要很大的管理維護開銷。
2)如何使得查找任務能夠均勻的分給這些TCAM,保證不出現(xiàn)擁塞,保證查找吞吐量。對于問題1),我們的分布式路由轉發(fā)表生成算法就給出了很好的解決方法;對于問題2)我們不但在表生成算法里考慮到了,而且我們運用少量冗余存儲以及一些自適應均衡的機制使得問題也很好的解決了。下面我們詳細介紹設計方案。
本發(fā)明的特征在于,它依次含有以下由一個FPGA和多個TCAM來實現(xiàn)的步驟(1),設定三元內(nèi)容尋址內(nèi)存TCAM的片數(shù)K,以及每個TCAM的分區(qū)數(shù)P;
定義一個IP地址或一個路由前綴的第l0到13比特為這個IP地址或路由前綴的ID,據(jù)此把路由前綴分成16份,每一份都是具有相同的ID的路由前綴的集合即前綴組,在對每個TCAM芯片分區(qū)時,使每個分區(qū)能存的前綴數(shù)目和一個前綴組包含的前綴數(shù)目相當,相應的測定每個前綴組的被訪問流量密度D_id[j],j為這個前綴組的ID,D_id[j]在數(shù)值上等于該前綴組包含的的所有前綴被訪問的頻率的和占所有路由前綴總的訪問頻率的百分比當一個前綴組對應的訪問頻率較高時要根據(jù)冗余度KP/16,在多個不同的TCAM芯片中存儲所述的前綴組;(2),形成分布式存儲的路由轉發(fā)表它包含以下步驟(2.1),預計算G[j],j=0,1,2,...,15和W[j],j=0,1,...,15;G[j]為ID等于j的這個前綴組被儲存的份數(shù),其中每一個G[j]根據(jù)下式計算G[j]=[K×P×D_id[j],j=0,1,2,...15;[]表示取整,要求結果大于0小于K;W[j]為ID的與j的前綴組在一個TCAM芯片內(nèi)的等效被訪問頻率,W[j]在數(shù)值上等于前綴組i的被訪問流量密度除以這個前綴組被存儲的總份數(shù)每一個W[j]用下式表示W(wǎng)[j]=D_id[j]/G[j];j=0,1,...,15;(2.2),初始化,其中包括決策變量Qk,k=l,2,...K,Qk為第K個TCAM芯片存儲的前綴組的集合,|Qk|表示第K個TCAM芯片存儲的前綴組的個數(shù);目標值D[k],k=1,2,...K,D[k]為第K個TCAM芯片所負擔的查找流量密度,它在數(shù)值上等于所有存儲在該TCAM上的前綴組的等效訪問頻率W[j]=D_id[j]/G[j]的和,即D[k]=∑j∈QkD_id[j]/G[j];(2.3),計算Qk和D[k],它依次包含以下步驟(2.3.1),給對應的ID組{j|j=0,1,2,...15}重新按w[j]的值從小到大的順序編號,其結果用{Sid
,Sid[1],...,Sid[15]}表示,Sid表示各ID組i的流量從小到大的排序關系;(2.3.2),依據(jù)上一步得到的Sid[i]指示的順序,把各個ID組i按以下步驟分配給TCAM存儲得到Qk,k=1,2,...,K,D[k],k=1,2,...K;對于要分配的ID組Sid[i],從i=0開始,按照它所需要的分配次數(shù)G[Sid[i]]在K個TCAM里面挑選已分得流量最小的G[Sid[i]]個逐次分配,分配時要使等效訪問頻率W[j]高的ID組先被分配,低的后分配,每分配一次,要按D[k]從大到小的順序給TCAM編號,用中間變量{Sc
,Sc[1],...,Sc[K]]表示,當滿足條件Sid[i]∉QSc[k]]]>
而且|QSc[k]|<Mini=1...K|Qi|+1]]>時,那么就把ID組Sid[i]分配給第Sc[k]號TCAM芯片,直到這個ID組被分配了G[Sid[i]]次;再使i=i+1,重新以上的過程,分配器他的ID組,直到i>15時分配全部結束,得到所需要的Qk和D[k],k=1,2,...,K;上述步驟(1),(2),由現(xiàn)場可編程門陣列FPGA來實現(xiàn);(3),實現(xiàn)自適應均衡的并行查找,它依次包含以下步驟(3.1),在上述FPGA控制下,提取待查找的IP地址的第10-13這4個比特,把他們送到上述FPGA內(nèi)一個含有K×P個匹配器的匹配器堆構成的索引路邏輯Index Logic不見,其中每個TCAM對應P個匹配器,每個匹配器又對應這個TCAM中的一個分區(qū),他們記錄著這個TCAM的P個分區(qū)內(nèi)存儲著的前綴組信息,這P個匹配器又對應著一個輸出,它通過比較IP地址的ID和前綴組的ID來指示這個TCAM內(nèi)是否含有與當前IP匹配的前綴;當輸入的IP的ID字段和組內(nèi)某個匹配器的index域匹配時,對應的值partition就被輸出,即這個組的返回值,表示這個TCAM的這個分區(qū)存有和當前待查IP匹配的前綴;否則返回一個不命中信號;(3.2)上述FPGA中,由比較器構成的自適應均衡優(yōu)先級選擇邏輯部件在收到上述Partition值后,就從各自串聯(lián)著一個TCAM的FIFO存儲器構成的FIFO隊列計數(shù)器中選擇一個FIFO存儲器,他對應于多個存儲有和當前IP地址相匹配的前綴的TCAM中負載最輕的一個,把當前的待查找IP通過這個FIFO存儲器分配給這個負荷最輕的TCAM實現(xiàn)查找;然后合并器以比TCAM查找速度快K倍的速度,把K個TCAM查找得到的結果依次返回。
我們運用4片1.15MByte的工作在133MHz的TCAM,實現(xiàn)了高達500Mpps的路由查找吞吐量,最大支持800K的路由前綴,功耗僅有6.4瓦。這是采用國內(nèi)外當前其他任何技術都無法實現(xiàn)的。
圖1.路由前綴按照第10-13比特的分布圖。
子圖APacBell路由器的路由前綴第10-13bit的分布圖;子圖BAADS路由器的路由前綴第10-13bit的分布圖;子圖CPaix路由器的路由前綴第10-13bit的分布圖;子圖DMae-West路由器的路由前綴第10-13bit的分布圖;圖2.TCAM存儲器的組織示意圖。
圖3.分布式路由表生成的程序流程框圖。
圖4.分布式并行查找引擎的電路原理圖。
圖5.自適應優(yōu)先級選擇器的程序流程框圖。
圖6.索引邏輯原理示意圖。
圖7.查找吞吐量隨輸入負荷的變化曲線。
具體實施例方式路由轉發(fā)表的生成主要是根據(jù)原始的路由前綴和前綴被查找的頻率,在給定TCAM芯片個數(shù)和每個芯片分區(qū)數(shù)的條件下,得到哪些表項應放在哪個TCAM芯片中,哪條表項應該被多次存放(冗余)。他要做優(yōu)化的是盡可能使得前綴表項在多個TCAM內(nèi)均勻分配,同時前綴表項對應的訪問頻率(流量強度)也要在這些TCAM內(nèi)均勻分配。我們已經(jīng)證明,這個優(yōu)化問題其實是一個NP難的問題。后面我們就給出一個效果較好的近似算法。
如果要以一條前綴為單位來進行分配,那么需要的運算量就太大了,典型的路由表包含1到100萬條前綴;同時我們還需要記錄分配的結果,這樣在查找的時候,我們才知道哪個TCAM內(nèi)放有可以和當前要查的IP匹配的前綴,如果以每一條前綴為單位來統(tǒng)計,那么需要的控制部件的存儲開銷太大。
于是我們尋求一種粗粒度的,對路由表進行劃分的辦法,將路由表分成若干組,我們以每一組為一個單位來進行分配和統(tǒng)計。這樣的分配方式需要滿足容易實現(xiàn)和容易區(qū)分的要求。即給出一個前綴,能很快的得出他屬于哪一組,實現(xiàn)對它的分類存放;同時給出一個待查的IP地址,也能很快得出哪一個前綴組存有和他匹配的前綴。
通過對大量路由表數(shù)據(jù)的調(diào)查,我們發(fā)現(xiàn),如果根據(jù)前綴的第10-13這4個比特將他們分成24=16份;可以看出分得結果相對比較平均,每份的數(shù)目相當,可以利用來對路由表進行均勻切割,參見圖一。每一組包含的前綴數(shù)目相當,于是,宏觀上,我們只要保證分配到各個TCAM內(nèi)的前綴的組數(shù)一樣,那么就可以使得宏觀上分配到他們的前綴的數(shù)目基本一樣。另外,通過簡單的提取比較操作,就可以知道這些前綴屬于哪一個組,或者哪一個IP對應哪一個組,應該將這個IP送到存有這個組的那個TCAM那進行查找。
實現(xiàn)了均衡的分布式存儲,接下來需要考慮的是如何使得查找任務的流量在多個TCAM芯片間均衡,只有這樣,我們才能真正發(fā)揮并行查找的優(yōu)勢(這時吞吐量才能達到最大)。為了實現(xiàn)這個目標,我們需要知道前綴被訪問的頻率;前面說過了,如果統(tǒng)計每條前綴被訪問的頻率,那么粒度太小,非常耗費資源,我們同樣是以前綴組為單位來統(tǒng)計訪問頻率就可以了。下面我們先給出一些符號定義,然后我們將給出一個前綴組分配(或表生成)的算法。符號說明1)定義一個IP地址或一個路由前綴的第10到13比特(4比特)為這個IP地址或路由前綴的ID;具有相同ID的路由前綴的集合叫做一個前綴組,并定義D_id[j]為ID等于j的這個前綴組的被訪問流量密度;他數(shù)值上等于,該前綴組包含的所有前綴被訪問的頻率占總訪問頻率的百分比的和;這個頻率是可以事先測得的,也輸入條件之一;2)設有K個TCAM芯片;每個TCAM被分為P個分區(qū);我們規(guī)定每個分區(qū)能存儲的前綴數(shù)目應該和一個前綴組包含的器前綴數(shù)目相當(因為TCAM邏輯分區(qū)的大小是可以指定的);K和P的乘積代表了所給出的存儲能力,K×P應該大于16,才能保證所有的前綴組都放入了TCAM內(nèi);K×P/16表示總存儲能力與原始需求的比,我們定義為分布式存儲的冗余度,它可以被利用來進行優(yōu)化性能。(邏輯分區(qū)功能是TCAM的很新的可選功能,他使得匹配搜索可以限定在一個TCAM分區(qū)內(nèi)進行,使得功耗能比較大程度的減少,參見CYPRESS公司TCAM芯片的MiniKey功能)3)我們用G[j]來表示ID等于j的這個前綴組被存儲的份數(shù),他是一個算法的決策值當一個前綴組對應的訪問頻率較高時,我們就會考慮對他進行冗余存儲,在多個不同的TCAM芯片中存放;4)定義W[j]為ID等于j的前綴組在一個TCAM內(nèi)的等效訪問頻率,他在數(shù)值上等于前綴組j的被訪問流量密度除以這個前綴組被存放的總份數(shù),即W[j]=D_id[j]/G[j];5)定義S={1,2,...,16}為所有前綴組的集合,即用前綴組的ID來代表這個前綴組;定義Qk,(k=1,...,K)為第k個TCAM儲存的前綴組的集合,|Qk|表示Qk中元素的個數(shù);我們約定用j∈Qk表示ID等于j的前綴組在第k個TCAM內(nèi)有存儲;進一步,我們定義D[k]為第k個TCAM所負擔的查找流量密度,它在數(shù)值上等于所有存儲在該TCAM上的前綴組的等效訪問頻率W[j]=D_id[j]/G[j]的和,即D[k]=∑j∈QkD_id[j]/G[j];其中Qj就是我們要求的分配方案;分布式存儲路由轉發(fā)表生成算法的描述(流程參見圖3)第一步先是預計算,按照訪問頻率較高的得到較多的存儲空間的原則,得到G[j](j=0,1,...,15),并根據(jù)定義得到W[j](j=0,1,...,15),具體的算式G[j]=[K×P×D_id[j]](j=0,1,...,15);([]代表取整,并要求結果大于0,小于K)W[j]=D_id[j]/G[j](j=0,1,...,15);第二步是初始化,把我們要決策的變量復位,包括決策變量Qk(k=1,2,...,K),目標(相關)值D[k](k=1,2,...,K)和一些中間變量(后面用到會定義);第三步開始計算首先,我們按照W[j]從大到小的順序,給他們對應的ID組{j|j=0,1,...,15}排列,結果用{Sid
,Sid[1],...,Sid[15]}來表示;Sid[i]代表了各個ID組的流量大小排序關系。
接下來,依據(jù)上一步得到的Sid[i]指示的順序,把各個ID組分配給TCAM存儲。這個排序為的是在后面讓等效訪問頻率高的ID組先被分配,低的后分配,這樣便于把訪問頻率低的ID組“插縫”,從而平攤流量。
對于當前要分配的ID組Sid[i],它需要分配的次數(shù)是G[Sid[i]],接下來我們要做的是在K個TCAM里面挑選出其中G[Sid[i]]個,把當前的ID組Sid[i]分配給他們,原則是選擇K個中已分得流量最小的G[Sid[i]]個。我們的做法是,把K個TCAM按照當前已分得的流量D[k](k=1,2,...,K)排序,選擇其中最小的G[Sid[i]]個。
接下來我們只要根據(jù)Qk,(k=1,...,K)來對前綴組進行分配分存儲就可以了。圖2是一個分布式的TCAM存儲器的組織示意圖(具體的數(shù)值和具體的流量分布有關系,這里只是一個示范)圖中表示運用K塊TCAM,每個TCAM分為P個分區(qū),每個分區(qū)存儲一個前綴組。如果路由表前綴總數(shù)是N,那么每個分區(qū)大約有N/16的空間。(注意同一個TCAM內(nèi)部沒有冗余(都不相同)表項;而不同的TCAM間允許少量冗余即重復的表項。)有了分布式存儲的路由表,我們就可以利用分布式存儲的特點進行并行查找,大幅度的提高吞吐量。由于我們的表生成算法考慮到流量均衡的問題,而且可能存在一些冗余度(當K×P>16的時候),所以在結合后面要提到的自適應均衡結構后,我們的并行查找吞吐量得到了很好的保證。下面介紹具體的實現(xiàn)和給出詳細的查找流程說明。
總體設計總體的設計參見圖4,主要的功能部件除了并行組織的K個TCAM(和他配套的SRAM)外,還包括一個索引邏輯,一個自適應均衡的優(yōu)先級選擇邏輯,一個合并器和一系列相應的FIFO緩沖隊列。粗略的說,對于一個待查找的IP地址,首先他的10-13比特被提取出來,到索引模塊(Index Logic)進行索引,得到存有與這個IP地址匹配的TCAM存儲器的編號,這個編號可能不唯一;接著自適應優(yōu)先級選擇模塊(Priority Selector)根據(jù)目前各個TCAM的閑忙情況選擇最空閑的一個TCAM,把IP分配給他;每個處理周期,K個TCAM模塊并行的進行處理,從他們各自對應的FIFO緩沖那提取要查找的IP進行查找并返回結果。
每個模塊的功能和實現(xiàn)首先,索引邏輯的原理如圖六所示,它主要負責告訴后面的部件,當前要查的這個IP地址在哪幾個TCAM內(nèi)有和他相應的前綴;它通過比較IP地址的ID和前綴組的ID來實現(xiàn)索引;具體實現(xiàn)上,他是一個含有K×P個匹配器的匹配器堆,其中每個TCAM對應P個匹配器(一組),每個匹配器記錄著這個TCAM的P個分區(qū)內(nèi)儲存的前綴組的信息;這一組匹配器對應一個輸出,指示這個TCAM內(nèi)是否含有與當前IP匹配的前綴。
一個組內(nèi)的所有匹配器是并行工作的,每個匹配器對應這個TCAM中的一個分區(qū),當輸入的(IP的)ID字段和組內(nèi)某個匹配器的index域匹配時,對應的Partition值就是這組的返回值,意味著這個TCAM的這個分區(qū)內(nèi)存有和當前待查IP匹配的前綴;如果對應的TCAM中不含有與當前待查IP匹配的前綴,那么返回一個不命中信號。
自適應均衡優(yōu)先級選擇邏輯主要負責的是根據(jù)每個TCAM對應的FIFO隊列的空滿狀態(tài)計數(shù)器,判斷這些TCAM查找的負荷量;再根據(jù)索引邏輯給出的結果,按照負荷量少的優(yōu)先原則,在多個儲存有和當前IP地址匹配前綴的TCAM內(nèi)選擇負荷最輕的一個,把當前的查找任務分配給它。具體的實現(xiàn)上,他其實就是一個比較器,比較存有與當前待查IP匹配的前綴的TCAM對應的FIFO隊列的計數(shù)器,選擇其中最小的一個,把當前的待查IP地址分配給這個TCAM去執(zhí)行查找。下面給出自適應均衡優(yōu)先級選擇邏輯的處理流程。
自適應均衡優(yōu)先級選擇邏輯的處理流程(參見圖5)第一步初始化所有決策值和中間變量;第二步根據(jù)索引邏輯給出的是否有匹配的結果,先得出一個可行解;第三步在有一個可行解的基礎上,根據(jù)各個TCAM對應的FIFO隊列的緩沖計數(shù)器值得到最優(yōu)值,也就是隊列計數(shù)值最小,隊列最空的一的TCAM。
----------------------------------------------------------------------另外由于這里引入了流量調(diào)度,所以需要排隊緩沖隊列,也就是前面提到的FIFO緩沖隊列,即First In First Out Buffer(先進先出緩沖隊列),他是一個按照寫入順序讀出的存儲器,用來對分配要查找的IP進行緩沖,對于一般情況,他的容量典型值是能存儲10個左右的待查找IP地址。
合并器的作用是把K個TCAM查找的結果依次安排返回;它的工作頻率應該是TCAM存儲器的K倍,但由于它的功能很簡單,只需輪流的把K個查找結果返回,所以完全可以高速實現(xiàn)。
詳細流程(參考圖3)對于一個待查找的32位IPv4地址,首先,他的第10-13這4個比特被提取出來,送到Index Logic進行匹配;K個組返回K個匹配結果,命中的返回的是對應的TCAM中的分區(qū)號Partition Number,不命中的返回一個不命中標志;然后自適應優(yōu)先級選擇邏輯根據(jù)IndexLogic的返回結果和TCAM對應的FIFO隊列的計數(shù)器值,在命中的TCAM里面,選擇最空閑的一個作為最終返回值,把IP分配給他執(zhí)行查找(送入對應的FIFO隊列)。K個TCAM模塊每個周期并行的從各自對應的隊列中取出一個IP執(zhí)行查找,并將結果輸出。結果返回模塊把這些結果匯總返回。
我們可以看到由于K個TCAM是并行工作,所以吞吐量大大提高??刂七壿嬁梢杂肍PGA等可編程器件實現(xiàn),也可以用專用的ASIC芯片實現(xiàn)。
我們采用CYPRESS公司型號為CYNSE70256的TCAM芯片來進行具體的實施示范。控制部分模塊采用A1tera公司的FPGA(EP2A70)。CYPRESS的這款TCAM工作在133MHz,單片的容量是256K*36bit約為1.15MByte,支持256K條前綴的存儲,當所有表項同時進行匹配時最大功耗是8瓦。
對于一個有800K條前綴的路由表1)首先我們采用K=4片TCAM,并且給每個TCAM芯片分P=5個區(qū),每個區(qū)可以存放256K/5=51.2K前綴,滿足800K/16≈51.2K的要求,一個分區(qū)可以放得下一個前綴組。K×P=20,20/16=1.25,也就是冗余度為1.25>1,我們可以利用來優(yōu)化性能。具體的前綴分配和實際的訪問流量密度有關,這里我們假定16個前綴組的被訪問流量密度如下表表一16個前綴組的被訪問流量密度(百分比)
2)接下來,我們根據(jù)表生成算法,我們得到Q1={2,4,10,12,13};Q2={0,3,4,5,12};Q3={1,7,11,12,15);Q4={4,6,8,9,14};3)我們根據(jù)2)得到的結果,將0-15這16個前綴組分配存儲到4個TCAM芯片。從這個結果看出,第4和第12這2個前綴組由于對應的訪問密度大,所以在多個TCAM內(nèi)存有。另外,我們得到,在這種分配下,4個TCAM負擔的查找流量密度分別為(百分比)24.67%,25.67%,24.33%和25.33%,相當平均。
4)前3步完成了路由表前綴的分布式存儲,接下來,我們還要運用這個結果,同步更新方案中索引邏輯的4組索引表,見下表對應1#TCAM的索引表
對應2#TCAM的索引表
對應3#TCAM的索引表
對應4#TCAM的索引表
5)以上4步就緒后,就可以進行并行查找了,具體流程參考上一章的流程說明。
我們對這種情況進行了實踐仿真,得到吞吐量關于流量強度的曲線圖,如圖七所示,(注意到實際采用的冗余度為20/16=1.25)吞吐量基本上能滿足隨輸入負載線性增長,最大吞吐量在500Mpps以上。
另外,每個TCAM分為5個分區(qū),每次查找只在一個分區(qū)內(nèi)進行,所以功耗只有8瓦/5=1.6瓦,4個芯片并行工作,總共1.6瓦*4=6.4瓦。
結論,我們運用4片1.15MByte的工作在133MHz的TCAM,實現(xiàn)了高達500Mpps的路由查找吞吐量,最大支持800K的路由前綴,功耗僅有6.4瓦。這是采用國內(nèi)外當前其他任何技術都無法實現(xiàn)的。
權利要求
1.基于TCAM的分布式并行IP路由查找方法,其特征在于,它依次含有以下由一個FPGA和多個TCAM來實現(xiàn)的步驟(1),設定三元內(nèi)容尋址內(nèi)存TCAM的片數(shù)K,以及每個TCAM的分區(qū)數(shù)P;定義一個IP地址或一個路由前綴的第10到13比特為這個IP地址或路由前綴的ID,據(jù)此把路由前綴分成16份,每一份都是具有相同的ID的路由前綴的集合即前綴組,在對每個TCAM芯片分區(qū)時,使每個分區(qū)能存的前綴數(shù)目和一個前綴組包含的前綴數(shù)目相當,相應的測定每個前綴組的被訪問流量密度D_id[j],j為這個前綴組的ID,D_id[j]在數(shù)值上等于該前綴組包含的的所有前綴被訪問的頻率的和占所有路由前綴總的訪問頻率的百分比;當一個前綴組對應的訪問頻率較高時要根據(jù)冗余度KP/16,在多個不同的TCAM芯片中存儲所述的前綴組;(2),形成分布式存儲的路由轉發(fā)表它包含以下步驟(2.1),預計算G[j],j=0,1,2,...,15和W[j],j=0,1,...,15;G[j]為ID等于j的這個前綴組被儲存的份數(shù),其中每一個G[j]根據(jù)下式計算G[j]=[K×P×D_id[j],j=0,1,2,...15;[]表示取整,要求結果大于0小于K;W[j]為ID的與j的前綴組在一個TCAM芯片內(nèi)的等效被訪問頻率,W[j]在數(shù)值上等于前綴組j的被訪問流量密度除以這個前綴組被存儲的總份數(shù);每一個W[j]用下式表示W(wǎng)[j]=D_id[j]/G[j];j=0,1,...,15;(2.2),初始化,其中包括決策變量Qk,k=1,2,...K,Qk為第K個TCAM芯片存儲的前綴組的集合,|Qk|表示第K個TCAM芯片存儲的前綴組的個數(shù);目標值D[k],k=1,2,...K,D[k]為第K個TCAM芯片所負擔的查找流量密度,它在數(shù)值上等于所有存儲在該TCAM上的前綴組的等效訪問頻率W[j]=D_id[j]/G[j]的和,即D[k]=∑j∈QkD_id[j]/G[j];(2.3),計算Qk和D[k],它依次包含以下步驟(2.3.1),給對應的ID組{j|j=0,1,2,...,15}重新按w[j]的值從小到大的順序編號,其結果用{Sid
,Sid[1],...,Sid[15]}表示,Sid表示各ID組i的流量從小到大的排序關系;(2.3.2),依據(jù)上一步得到的Sid[i]指示的順序,把各個ID組i按以下步驟分配給TCAM存儲得到Qk,k=1,2,...,K,D[k],k=1,2,...K;對于要分配的ID組Sid[i],從i=0開始,按照它所需要的分配次數(shù)G[Sid[i]]在K個TCAM里面挑選已分得流量最小的G[Sid[i]]個逐次分配,分配時要使等效訪問頻率W[j]高的ID組先被分配,低的后分配,每分配一次,要按D[k]從大到小的順序給TCAM編號,用中間變量{Sc
,Sc[1],...,Sc[K]]表示,當滿足條件Sid[i]∉QSc[k]]]>而且|QSc[k]|<Mini=1...K|Qi|+1]]>時,那么就把ID組Sid[i]分配給第Sc[k]號TCAM芯片,直到這個ID組被分配了G[Sid[i]]次;再使i=i+1,重新以上的過程,分配器他的ID組,直到i>15時分配全部結束,得到所需要的Qk和D[k],k=1,2,...,K;上述步驟(1),(2),由現(xiàn)場可編程門陣列FPGA來實現(xiàn);(3),實現(xiàn)自適應均衡的并行查找,它依次包含以下步驟(3.1),在上述FPGA控制下,提取待查找的IP地址的第10-13這4個比特,把他們送到上述FPGA內(nèi)一個含有K×P個匹配器的匹配器堆構成的索引路邏輯Index Logic不見,其中每個TCAM對應P個匹配器,每個匹配器又對應這個TCAM中的一個分區(qū),他們記錄著這個TCAM的P個分區(qū)內(nèi)存儲著的前綴組信息,這P個匹配器又對應著一個輸出,它通過比較IP地址的ID和前綴組的ID來指示這個TCAM內(nèi)是否含有與當前IP匹配的前綴;當輸入的IP的ID字段和組內(nèi)某個匹配器的index域匹配時,對應的值partition就被輸出,即這個組的返回值,表示這個TCAM的這個分區(qū)存有和當前待查IP匹配的前綴;否則返回一個不命中信號;(3.2)上述FPGA中,由比較器構成的自適應均衡優(yōu)先級選擇邏輯部件在收到上述Partition值后,就從各自串聯(lián)著一個TCAM的FIFO存儲器構成的FIFO隊列計數(shù)器中選擇一個FIFO存儲器,他對應于多個存儲有和當前IP地址相匹配的前綴的TCAM中負載最輕的一個,把當前的待查找IP通過這個FIFO存儲器分配給這個負荷最輕的TCAM實現(xiàn)查找;然后合并器以比TCAM查找速度快K倍的速度,把K個TCAM查找得到的結果依次返回。
全文摘要
基于TCAM的分布式并行IP路由查找方法,屬于計算機網(wǎng)絡技術領域,其特征在于它把一個IP地址或路由前綴的第10到13比特作為其ID,據(jù)此把路由前綴分成16個具有相同ID的前綴組,結合索引邏輯的設計,使多個TCAM芯片分別分區(qū)存儲了這些前綴,從而使得查找任務在多個TCAM芯片間并行執(zhí)行成為可能;它允許對被訪問頻率較高的前綴組實行TCAM片間冗余存儲,使得查找流量能在多個TCAM間進一步均攤;此外,自適應優(yōu)先選擇器又使得查找流量在微觀上得到調(diào)節(jié),進一步保證了查找吞吐量。他的特點是吞吐量很高,但功耗卻低。
文檔編號H04L12/24GK1561047SQ20041000452
公開日2005年1月5日 申請日期2004年2月20日 優(yōu)先權日2004年2月20日
發(fā)明者鄭凱, 劉斌, 鄭 凱 申請人:清華大學