0731-84728105
15116127200
XS-TCAM-104x320:基于FPGA的(de)TCAM開源實現(一(yī))
發布時間:2018-03-06
     當前FAST開源項目中通用匹配引擎(GME)規則匹配能力有(yǒu)限,隻支持64條規則長(cháng)度為(wèi)512比特的(de)帶掩碼匹配功能,對需要大量規則匹配的(de)環境,隻能采用片外的(de)TCAM器件。
     為(wèi)此,湖南新實網絡科(kē)技有(yǒu)限公司基于FPGA內(nèi)部的(de)查找表邏輯和(hé)RAM資源,設計實現了具有(yǒu)TCAM功能的(de)IP核——XS-TCAM-104x320。目前XS-TCAM-104x320 IP的(de)源代碼已經開源,對提升FAST流水線查表引擎的(de)能力具有(yǒu)重要意義。
一(yī)、XS-TCAM-104x320的(de)基本指标
       目前實現的(de)指标:
       1.編譯速率:125Mhz
       2.規則條數:320條
       3.LUT資源:16799
       4.RAM(M10K)資源:368
       5.查詢周期:首次單條規則查詢12周期出結果,後續連續查詢則1個時鍾周期出結果。
二、XS-TCAM-104x320的(de)實現原理(lǐ)
     針對FAST前期版本支持流表項條目少的(de)不足,目前對查找算法進行(xíng)了改進,實現了XS-TCAM-104x320 IP,其優點如(rú)下:
      1.支持按優先級查找匹配;
      2.支持硬件進行(xíng)規則更新;
      3.支持規則條目的(de)按需擴展;
      4.支持匹配域關鍵字的(de)按需擴展;
      5.支持規則查找/更新按掩碼匹配;
      6.采用流水化并行(xíng)的(de)處理(lǐ)方式可(kě)實現高(gāo)速查找匹配。
1、設計思想:
     XS-TCAM-104x320 IP使用二維數組的(de)存儲方式,并行(xíng)的(de)進行(xíng)規則更新及查找匹配,并采用流水化的(de)方式實現多條規則匹配查找,從而實現高(gāo)效快速的(de)分類查找的(de)目的(de)。另外,此算法支持靈活的(de)匹配域及流表表項的(de)擴展能力,可(kě)滿足将來匹配域擴展及流表表項擴展的(de)需求。
     XS-TCAM-104x320 IP是基于FPGA每個內(nèi)嵌RAM塊可(kě)配置成512*20的(de)雙端口RAM進行(xíng)的(de)實現,圖1為(wèi)XS-TCAM-104x320 IP基本處理(lǐ)結構圖,由于RAM塊為(wèi)512*20因此切分的(de)匹配域關鍵字(Key)為(wèi)9位,查找邏輯以9位Key為(wèi)查找地(dì)址對表項進行(xíng)訪問,得到20位的(de)規則索引标識位,優先級選擇器則根據優先級輸出最高(gāo)優先級的(de)規則索引。此算法将索引0位的(de)規則定義為(wèi)最高(gāo)優先級的(de)索引位。

圖1 XS-TCAM-104x320 IP基本處理(lǐ)結構圖
     參照圖2,圖2為(wèi)流表匹配域的(de)存儲結構圖,其為(wèi)512*20的(de)RAM存儲塊,在此可(kě)視(shì)為(wèi)512*20的(de)二維數組,其中行(xíng)地(dì)址512個,為(wèi)匹配域關鍵字(Key)字段;列地(dì)址為(wèi)20個,為(wèi)規則索引字段(Index)。圖2将9位的(de)Key作為(wèi)地(dì)址查找RAM(Key=00111_1111),查找出的(de)結果為(wèi)此關鍵字段命中的(de)20條規則的(de)索引标識位(Index_Bitmap)為(wèi)0_0005,其中第0,2,位為(wèi)1,表示該key匹配了上述2條規則。由于0為(wèi)高(gāo)優先級位,因此0号索引被輸出。

圖2 流表匹配域存儲結構圖
2、規則長(cháng)度擴展
     對于104位的(de)五元組信息,需12個9*20TCAM_CORE即可(kě)實現,輸出的(de)bitmap進行(xíng)比特與即可(kě)得到匹配的(de)bitmap,如(rú)圖3所示;

圖3 規則長(cháng)度擴展到五元組處理(lǐ)流程圖
     最後,通過優先級選擇器選擇優先級比較高(gāo)的(de)索引輸出。
3、規則數目擴展
     通過TCAM_Block模塊可(kě)以實現規則數目的(de)擴展,如(rú)圖4所示,通過将不同的(de)規則對應到不同TCAM_Block模塊的(de)Bitmap中,則可(kě)以并行(xíng)的(de)擴展規則的(de)數目。通過此方式在資源允許的(de)情況下可(kě)以無限制的(de)擴展。

圖4 規則擴展結構圖
     目前基于Altera A5 FPGA 的(de)FAST架構隻實現的(de)320條規則,若用戶需要更多表項即可(kě)按需擴展。
三、XS-TCAM-104x320的(de)代碼說明
     以下為(wèi)XS-TCAM-104x320的(de)頂層代碼其主要分為(wèi)四部分:時鍾複位接口、規則配置接口、匹配關鍵字Key輸入接口以及規則輸出索引号Index_ID具體如(rú)下圖5所示,其Quartus II 中代碼結構如(rú)圖6所示,代碼文件如(rú)表1所示。

圖5 XS-TCAM-104x320 IP頂層接口圖

圖6 XS-TCAM-104x320的(de)代碼結構
     XS-TCAM-104x320的(de)代碼文件說明如(rú)表1所示:
     目前XS-TCAM-104x320已經完成調測試,在FAST未來發展規劃中,XS-TCAM-104x320将作為(wèi)重要的(de)改進特性加入到FAST流水線的(de)GME中。我們後續将對XS-TCAM-104x320的(de)使用方法進行(xíng)進一(yī)步介紹。
     目前XS-TCAM-104x320 IP代碼可(kě)訪問www.fastswitch.org,選擇“代碼”選項卡,點擊FAST UM,點擊如(rú)下按鈕開始下載: