一、簡介
TCAM (ternary content addressable memory)是一種三態內容定址 存儲器,主要用於快速查找ACL、路由等表項。它是從CAM的基礎上發展而來的。一般的CAM存儲器中每個bit位的狀態只有兩個,“0”或“1”,而TCAM中每個bit位有三種狀態,除掉“0”和“1”外,還有一個“don’t care”狀態,所以稱為“三態”,它是通過 掩碼來實現的,正是TCAM的這個第三種狀態特徵使其既能進行精確匹配查找,又能進行模糊匹配查找,而CAM沒有第三種狀態,所以只能進行精確匹配查找。
TCAM具有查找速度快、操作簡單的優點,但同時它也具有3個明顯的缺點:成本高、功耗大和路由更新複雜。 路由器為了實現 負載平衡以及 策略路由,在 路由表中保存著相當數量的具有多個 下一跳的路由表項。基於TCAM技術,提出一種支持多下一跳的高速路由查找方案。方案通過兩級索引表實現了多下一跳路由的存儲和快速訪問。為了提高TCAM的更新效率,方案還提出了一個N子空間TCAM更新算法。該算法對目前實際網路中的路由表,可達到近似O(1)的更新複雜度。為了減少TCAM的成本和功耗,方案中還使用了有效的路由 壓縮技術。壓縮技術基於 Trie樹結構,實現簡單。套用壓縮技術,對於實際網路中的路由表,可減少20%的路由。該查找方案可以很容易地套用到未來的IPv6網路中。
二、特點
1、TCAM 表內所有條目都可以並行訪問,比如,如果你有100條ACL,TCAM能一次就能對比這100條ACL進行對比操作,過去如果有100條ACL的話,需要第一條ACL對比完後再對比第二條,然後第三條,直至N條,效率很明顯沒有TCAM高。2、TCAM得結構已經經過了最佳化,支持更抽象的操作,通常是基於二進制關鍵字匹配,查詢相當快
如FIB TCAM中每個表項都有對應的下一條,而每個下一條有維護了下一條鄰居的MAC。
2、正因為有上邊的這些特性,所以無論表內有多少條數目,性能都不會減弱。
3、TCAM 包含多組的Mask 與Value 對應關係,對應比例為1:8,一個Mask可對應8個Value。最長掩碼位於TCAM頂部,如255.255.255.255位於最頂部,用於最長匹配,提升查找速率。
4、Mask 用於表示Value 的匹配方法,1 為必須比較並匹配,0 為不用比較。
5、TCAM的可用掩碼、值模式、LOU表項有限,如果 訪問列表很大或需要很多第四層運算,TCAM表和暫存器很可能溢出。
6、TCAM成本比較高, 存儲空間的單位價格高於普通的sram,而且耗能也遠遠高於sram
7、由於TCAM的並行查找特性和三態,存儲必須以前綴形式來存儲,比如一個range需要拆分成幾個更小的可以表示成前綴形式的range才可以存儲在TCAM中
三、查找操作
1、從包的內容中讀取相關欄位(如,前綴、掩碼等)2、創建查找關鍵字(lookup key)
3、用lookup key和TCAM中的Value段對比,如果匹配了某Value,則將該Value和對應的Mask關聯
4、返回最長匹配結果(值(Value)+掩碼(Mask))=結果)
四、TCAM操作相關組件
1、FM(特性管理器)
在創建或配置訪問列表後,FM軟體將匹配語句編譯(合併)為TCAM表項,這樣就可以以幀轉發速度查詢TCAM2、SDM(交換資料庫管理器)
在某些Catelyst交換機中,可以將TCAM劃分為不同的功能區域,SDM軟體將配置或調整TCAM分區,Catelyst4500 和6500交換機,TCAM是固定的,不能分區。五、TCAM生產商
主要有:1.XEL(雄立科技)
2..Netlogic
這兩家分別將TCAM器件稱作IntelligentSearchEngine(ISE)和Knowledge-based Processor(KBP)。
六、TCAM在通信領域的用途
主要有:1).ATM Switching設備中的VCI/VPI轉發和ATM-to-MPLS or ATM-to-TCP-Flow 地址映射表項的存儲和查找;
2).Ethernet Switching設備中的二層MAC地址、ARP/RARP解析和三層IP路由表項的存儲和查找;
3).Emerging Protocols and functions方面的MPLS label表項的存儲和查找;
4).Packet Classification業務中的Enforce security、Enforce departmental policies和QOS檢測表項的存儲和查找;
5).安全防護設備中的FIB/LBT、MFIB及ACL表項存儲和查找。
七、TCAM技術產生的背景及其原理與套用
傳統的表項查找方法有很多,主要有:線型查找法、 二叉樹查找法、 哈希表查找等,這些查找方法都是基於SRAM的軟體查找方法,共同特點是查找速度慢。線型查找法需要遍歷表中的所有表項;二叉樹查找法需要遍歷樹中大多數節點,而且查找速度受樹的深度影響較大;哈希表查找法是軟體查找中計較快的一種方法,它是根據設定的哈希函式H(key)和處理衝突方法將一組 關鍵字映象到一個有限的地址區間上,並以關鍵字在地址區間中的象作為記錄在表中的存儲位置,這種表稱為哈希表或散列,所得存儲位置稱為哈希地址或散列地址。雖然哈希表查找法相對來說比較快,但還是滿足不了高速實時通信系統(如40G/100G POS)的極速查找需求。 基於硬體的TCAM查找法正是在這種背景下提出的,用此方法進行查找時,整個表項空間的所有數據在同一時刻被查詢,查找速度不受表項 空間數據大小影響,每個 時鐘周期完成一次查找,平均查找速度是基於SRAM算法查找的6倍,最好情況下,能達到128倍。1.TCAM的硬體設計方式
TCAM器件的硬體設計方式一般有三種,如下圖所示:......................................................................................................................................................................................
網路處理器NP從報文頭中把需要查找的信息提取出來,這個待查找的信息要整理成跟TCAM所存表項的格式一致,稱之為KEY。KEY作為TCAM的輸入數據,經過與表項對照,如果有匹配的表項,就把該表項所在的地址作為輸出,稱之為Index。然後將Index作為RAM的地址輸入,從RAM里得到所需查找的信息,稱之為Data。最後將Data返回給發起查找操作的NP,至此完成一次查找操作。
.........................................................................................................................
2.TCAM在高端路由器中的套用及查找過程
..........................................................................................................................................................3.CAM和TCAM的基本存儲單元
.......................................................................................................................................................................cam存儲單元圖