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

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

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

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

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

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

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