0731-84728105
15116127200
XS-TCAM-104x320:基于(yú)FPGA的(de)TCAM開源實現(二)
發布時(shí)間: 2018-03-15
     在(zài)之(zhī)前的(de)公衆号文章中我們爲(wéi / wèi)大(dà)家介紹了(le/liǎo)衡阳小九設計的(de)新IP核:XS-TCAM-104x320的(de)硬件設計及其具體實現,本篇文章則針對XS-TCAM-104x320 IP核的(de)軟件部分API的(de)使用進行說(shuō)明,如圖1所示,軟件的(de)實現是(shì)通過在(zài)FAST 軟件庫中添加Libbv庫來(lái)實現流表數據的(de)各類操作(圖内标紅部分)。本期文章将着重爲(wéi / wèi)大(dà)家介紹Libbv庫的(de)相關接口以(yǐ)及使用方法。

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

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

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