XS-TCAM-104x320:基于FPGA的TCAM開(kāi)源實現(一(yī))
發布時間:2018-03-06
當前FAST開(kāi)源項目中(zhōng)通用匹配引擎(GME)規則匹配能力有限,隻支持64條規則長度爲512比特的帶掩碼匹配功能,對需要大(dà)量規則匹配的環境,隻能采用片外(wài)的TCAM器件。
爲此,湖南(nán)新實網絡科技有限公司基于FPGA内部的查找表邏輯和RAM資(zī)源,設計實現了具有TCAM功能的IP核——XS-TCAM-104x320。目前XS-TCAM-104x320 IP的源代碼已經開(kāi)源,對提升FAST流水線查表引擎的能力具有重要意義。
一(yī)、XS-TCAM-104x320的基本指标
目前實現的指标:
1.編譯速率:125Mhz
2.規則條數:320條
3.LUT資(zī)源:16799
4.RAM(M10K)資(zī)源:368
5.查詢周期:首次單條規則查詢12周期出結果,後續連續查詢則1個時鍾周期出結果。
二、XS-TCAM-104x320的實現原理
針對FAST前期版本支持流表項條目少的不足,目前對查找算法進行了改進,實現了XS-TCAM-104x320 IP,其優點如下(xià):
1.支持按優先級查找匹配;
2.支持硬件進行規則更新;
3.支持規則條目的按需擴展;
4.支持匹配域關鍵字的按需擴展;
5.支持規則查找/更新按掩碼匹配;
6.采用流水化并行的處理方式可實現高速查找匹配。
1、設計思想:
XS-TCAM-104x320 IP使用二維數組的存儲方式,并行的進行規則更新及查找匹配,并采用流水化的方式實現多條規則匹配查找,從而實現高效快速的分(fēn)類查找的目的。另外(wài),此算法支持靈活的匹配域及流表表項的擴展能力,可滿足将來匹配域擴展及流表表項擴展的需求。
XS-TCAM-104x320 IP是基于FPGA每個内嵌RAM塊可配置成512*20的雙端口RAM進行的實現,圖1爲XS-TCAM-104x320 IP基本處理結構圖,由于RAM塊爲512*20因此切分(fēn)的匹配域關鍵字(Key)爲9位,查找邏輯以9位Key爲查找地址對表項進行訪問,得到20位的規則索引标識位,優先級選擇器則根據優先級輸出最高優先級的規則索引。此算法将索引0位的規則定義爲最高優先級的索引位。
圖1 XS-TCAM-104x320 IP基本處理結構圖
參照圖2,圖2爲流表匹配域的存儲結構圖,其爲512*20的RAM存儲塊,在此可視爲512*20的二維數組,其中(zhōng)行地址512個,爲匹配域關鍵字(Key)字段;列地址爲20個,爲規則索引字段(Index)。圖2将9位的Key作爲地址查找RAM(Key=00111_1111),查找出的結果爲此關鍵字段命中(zhōng)的20條規則的索引标識位(Index_Bitmap)爲0_0005,其中(zhōng)第0,2,位爲1,表示該key匹配了上述2條規則。由于0爲高優先級位,因此0号索引被輸出。
圖2 流表匹配域存儲結構圖
2、規則長度擴展
對于104位的五元組信息,需12個9*20TCAM_CORE即可實現,輸出的bitmap進行比特與即可得到匹配的bitmap,如圖3所示;
圖3 規則長度擴展到五元組處理流程圖
最後,通過優先級選擇器選擇優先級比較高的索引輸出。
3、規則數目擴展
通過TCAM_Block模塊可以實現規則數目的擴展,如圖4所示,通過将不同的規則對應到不同TCAM_Block模塊的Bitmap中(zhōng),則可以并行的擴展規則的數目。通過此方式在資(zī)源允許的情況下(xià)可以無限制的擴展。
圖4 規則擴展結構圖
目前基于Altera A5 FPGA 的FAST架構隻實現的320條規則,若用戶需要更多表項即可按需擴展。
三、XS-TCAM-104x320的代碼說明
以下(xià)爲XS-TCAM-104x320的頂層代碼其主要分(fēn)爲四部分(fēn):時鍾複位接口、規則配置接口、匹配關鍵字Key輸入接口以及規則輸出索引号Index_ID具體(tǐ)如下(xià)圖5所示,其Quartus II 中(zhōng)代碼結構如圖6所示,代碼文件如表1所示。
圖5 XS-TCAM-104x320 IP頂層接口圖
圖6 XS-TCAM-104x320的代碼結構
XS-TCAM-104x320的代碼文件說明如表1所示:
目前XS-TCAM-104x320已經完成調測試,在FAST未來發展規劃中(zhōng),XS-TCAM-104x320将作爲重要的改進特性加入到FAST流水線的GME中(zhōng)。我(wǒ)(wǒ)們後續将對XS-TCAM-104x320的使用方法進行進一(yī)步介紹。
目前XS-TCAM-104x320 IP代碼可訪問www.fastswitch.org,選擇“代碼”選項卡,點擊FAST UM,點擊如下(xià)按鈕開(kāi)始下(xià)載: