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

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

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

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