0731-84728105
15116127200
XS-TCAM-104x320:基于FPGA的(de)TCAM開源實現(二)
發布時間: 2018-03-15
     在之前的(de)公衆号文章(zhāng)中我們為(wèi)大家介紹了湖南新實設計的(de)新IP核:XS-TCAM-104x320的(de)硬件設計及其具體實現,本篇文章(zhāng)則針對XS-TCAM-104x320 IP核的(de)軟件部分API的(de)使用進行(xíng)說明,如(rú)圖1所示,軟件的(de)實現是通過在FAST 軟件庫中添加Libbv庫來實現流表數據的(de)各類操作(圖內(nèi)标紅(hóng)部分)。本期文章(zhāng)将着重為(wèi)大家介紹Libbv庫的(de)相關接口以及使用方法。

圖1 FAST實現結構圖
一(yī)、軟件代碼說明
      當前的(de)XS-TCAM-104x320 IP 核共支持320條表項,每條表項基于五元組(源、目的(de)IP地(dì)址,協議号,源、目的(de)端口号)進行(xíng)匹配,因此其軟件部分聲明的(de)數據結構定義如(rú)下:
     用戶在調用數據結構時,需遵守FAST-0.2.0規範,即key值與mask值需一(yī)一(yī)對應,以下是填充上述數據結構的(de)示例代碼:
     在示例代碼中,proto字段為(wèi)0,代表匹配ARP類型的(de)報文,所以上述示例代碼的(de)執行(xíng)結果是:添加了兩條流表,一(yī)條支持ICMP報文轉發到2号端口,一(yī)條支持ARP報文轉發到2号端口。
     在填充完流表之後,用戶可(kě)通過調用為(wèi)XS-TCAM-104x320定制的(de)API接口将流表下發到硬件中,API接口如(rú)下所示:
     用戶可(kě)在任何UA應用中調用上述接口,實現對XS-TCAM-104x320流表的(de)操作。
二、示例代碼運行(xíng)結果
      在該示例代碼中,用戶可(kě)以通過參數控制4條流表的(de)寫入位置用來測試當前流表項位于不同的(de)地(dì)址時,硬件查表邏輯是否能正常執行(xíng)。用戶可(kě)在r1()和(hé)r2()兩個函數中自(zì)行(xíng)定義4條規則的(de)內(nèi)容,然後在運行(xíng)示例代碼時使用參數控制流表寫入的(de)位置,運行(xíng)示例代碼的(de)命令如(rú)下所示:
     其中參數“1”是指第一(yī)條流表将寫入idx為(wèi)1的(de)地(dì)址,參數“3”是指将第二條流表寫入idx為(wèi)3的(de)地(dì)址。請注意,兩條規則的(de)地(dì)址相差必須大于2,否則會前後相互覆蓋,造成未知的(de)錯誤。最後一(yī)個參數“64”是指在idx0-idx63之間(除了用戶指定的(de)流表位置)寫滿随機(jī)內(nèi)容的(de)流表,用于測試整個流表空間的(de)查表能力。
     在流表寫入之後,用戶根據流表将IP地(dì)址為(wèi)1.2.3.4和(hé)1.2.3.5的(de)主機(jī)分别接入1、2号端口,即可(kě)相互正常通信,如(rú)圖2所示:

圖2 客戶端ping命令執行(xíng)截圖
三、源碼的(de)下載
      支持XS-TCAM-104x320的(de)新版本FAST軟件開發環境現已上傳至FAST社區官方網站,用戶可(kě)切換至“代碼”選項卡,點擊“FAST UA”選項,然後點擊圖3按鈕即可(kě)下載新版本的(de)軟件開發環境:

圖3 軟件下載網頁
     用戶下載後可(kě)在linux中輸入命令解壓文件:
      解壓完成之後,輸入如(rú)下命令進行(xíng)配置和(hé)編譯:
     上述命令執行(xíng)完成後,用戶可(kě)在fast-0.2.0/tools/bv目錄下找到上述的(de)示例源碼。
     如(rú)對XS-TCAM-104x320 IP在軟硬件代碼下載或測試過程中有(yǒu)遇到任何問題,可(kě)以通過微信直接與我們聯系,我們會盡快給與回複。