XS-TCAM-104x320:基于FPGA的TCAM開源實現(二)
發布時間: 2018-03-15
在之前的公眾號文章中我們為大家介紹了湖南新實設計的新IP核:XS-TCAM-104x320的硬件設計及其具體實現,本篇文章則針對XS-TCAM-104x320 IP核的軟件部分API的使用進行說明,如圖1所示,軟件的實現是通過在FAST 軟件庫中添加Libbv庫來實現流表數據的各類操作(圖內標紅部分)。本期文章將著重為大家介紹Libbv庫的相關接口以及使用方法。

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

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

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